// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag("defaults")

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

function makearray(n){
      this.length = n;
      for(var i = 1; i <= n; i++)
      this[i] = 0;
      return this;
}
hexa = new makearray(16);
for(var i = 0; i < 10; i++) hexa[i] = i;
hexa[10]="a"; hexa[11]="b"; hexa[12]="c";
hexa[13]="d"; hexa[14]="e"; hexa[15]="f";
function hex(i){
      if (i < 0) return "00";
      else if (i >255) return "ff";
      else return "" + hexa[Math.floor(i/16)] + hexa[i%16];
}

in_container = new Array(10);
out_container = new Array(10);
function initColor(id, inr, ing, inb, outr, outg, outb) {
      in_container[id] = new Array(3);
      in_container[id][0] = inr;
      in_container[id][1] = ing;
      in_container[id][2] = inb;
      out_container[id] = new Array(3);
      out_container[id][0] = outr;
      out_container[id][1] = outg;
      out_container[id][2] = outb;
}

function getColor(r, g, b){
      var hr = hex(r); var hg = hex(g); var hb = hex(b);
      return "#"+hr+hg+hb;
}
function testActive(elem) {
      var currentClass = elem.className
      var activeClass = "lnliston";
      return (currentClass == activeClass) ? true : false;
}
function fade(id, current_counter, atend){
      var counter = 10;
      var in_state = in_container[id]
      var out_state = out_container[id];
      var elem = document.getElementById(id);
      if (current_counter > counter) {
            if (atend) {
                 elem.style.backgroundColor = atend;
            }
            return;
      }
      elem.style.backgroundColor = 
           getColor(Math.floor(in_state[0] * ((counter-current_counter)/counter) + out_state[0] * (current_counter/counter)),
                    Math.floor(in_state[1] * ((counter-current_counter)/counter) + out_state[1] * (current_counter/counter)),
                    Math.floor(in_state[2] * ((counter-current_counter)/counter) + out_state[2] * (current_counter/counter)));
      current_counter++;
      var func = "fade('" + id + "', " + current_counter + ", '" + atend + "')";
      window.setTimeout(func, 20);
}
    /* Usage:
     *   fade(inr,ing,inb, outr,outg,outb, step);
     * example.
     *   fade(0,0,0, 255,255,255, 255);
     * fade from black to white with very slow speed.
     *   fade(255,0,0, 0,0,255, 50);
     *   fade(0xff,0x00,0x00, 0x00,0x00,0xff, 50); // same as above
     * step 2 is very fast and step 255 is very slow.
    */
function fadein(id){
      if (testActive(document.getElementById(id))) {
           return;
      }
      if (BrowserDetect.browser == 'Safari') {
           return;
      }
      initColor(id, 165,165,160, 113,113,108);
      fade(id, 0, '');
}
function fadeout(id){
      if (testActive(document.getElementById(id))) {
           return;
      }
      if (BrowserDetect.browser == 'Safari') {
           return;
      }
      initColor(id, 113,113,108, 165,165,160);
      fade(id, 0, 'transparent');
}
function showhide(elem,direction) {
      if (elem.className == 'arrowon') {
           elem.className = 'arrow';
           document.getElementById(direction).style.display = 'none';
      } else {
           elem.className = 'arrowon';
           document.getElementById(direction).style.display = 'block';
      }
}

function historyscene(yrinfo,yr,show) {
  var scenevar = 'scene_' + yr;
  eval(scenevar + " = show;");
  var textdiv = document.getElementById('rdcaption' + yr);
  var mainimg = document.getElementById('main' + yr);
  var legendspan = document.getElementById('legend' + yr);
  var prevspan = document.getElementById('next' + yr);
  var nextspan = document.getElementById('prev' + yr);

  for (i=0;i<yrinfo.length;i++) {
    document.getElementById('thumba'+yr+'_'+i).className = 'thumbimage';
  }
  document.getElementById('thumba'+yr+'_'+show).className = 'currentthumb';

  // Open up the main year section.
  var selectanchor = document.getElementById('select' + yr);
  if (selectanchor.className == 'arrow') {
    showselect(selectanchor,yr);
  }

  if (textdiv.innerText) {
    // MSIE
    textdiv.innerText = yrinfo[show].text;
    legendspan.innerText = show + 1;
  } else {
    // Firefox
    textdiv.textContent = yrinfo[show].text;
    legendspan.textContent = show + 1;
  }
  mainimg.src = yrinfo[show].main;
  scenepage(yr,0);
}
function showselect(elem,yr) {
      if (elem.className == 'arrowon') {
           elem.className = 'arrow';
           document.getElementById('rdcaption'+yr).style.display = 'none';
           document.getElementById('midframeright'+yr).style.display = 'none';
           document.getElementById('thumbnumber'+yr).style.visibility = 'hidden';
           document.getElementById('topframe'+yr).style.display = 'none';
           document.getElementById('midframe'+yr).className = 'midframewhite';
           document.getElementById('bottframe'+yr).style.display = 'none';
           document.getElementById('prev'+yr).style.visibility = 'hidden';
           document.getElementById('next'+yr).style.visibility = 'hidden';
      } else {
           elem.className = 'arrowon';
           document.getElementById('topframe'+yr).style.display = 'block';
           document.getElementById('midframe'+yr).className = 'midframe';
           document.getElementById('bottframe'+yr).style.display = 'block';
           document.getElementById('rdcaption'+yr).style.display = 'block';
           document.getElementById('midframeright'+yr).style.display = 'block';
           document.getElementById('thumbnumber'+yr).style.visibility = 'inherit';
           scenepage(yr,0);
      }
}
function scenepage(yr,way) {
  var scenevar = 'scene_' + yr;
  var workscene = eval(scenevar);
  workscene += way;
  var yrinfo = eval('year_'+yr);
  if (workscene >= yrinfo.length) {
    return;
  }

  if (way != 0) {
    // Show it
    historyscene( eval('year_'+yr), yr, workscene);
    // Record it
    eval(scenevar + " = workscene;");
  }

  // Adjust the arrows
  var prevspan = document.getElementById('prev' + yr);
  var nextspan = document.getElementById('next' + yr);

  if (workscene == 0) {
    prevspan.style.visibility = 'hidden';
  } else {
    prevspan.style.visibility = 'inherit';
  }
  if (workscene == yrinfo.length - 1) {
    nextspan.style.visibility = 'hidden';
  } else {
    nextspan.style.visibility = 'inherit';
  }
}

var activeview = 'top';

function switchviews(elemid,view) {
  var elem = document.getElementById(elemid);
  elem.className = 'topsectionbkgd' + view
  resetview(view,false);
  activeview = view;
  return false;
}

function resetview(view,hover) {
  var topelem = document.getElementById('topview');
  var frontelem = document.getElementById('frontview');
  var sideelem = document.getElementById('sideview');
  var viewelem = document.getElementById(view+'view');
  if (!hover) {
    topelem.src = '/images/products/top.gif';
    frontelem.src = '/images/products/front.gif';
    sideelem.src = '/images/products/side.gif';
  }
  viewelem.src = '/images/products/'+view+'_on.gif';
}

function resethover(view) {
  if (view == activeview) {
    return;
  }
  var viewelem = document.getElementById(view+'view');
  viewelem.src = '/images/products/'+view+'.gif';
}

