<!-- Author: Daud Sweetland - Broadhey Ltd -->
<!-- Dated: 25/04/2005 -->
<!-- Copyright: Car & Driving -->
<!-- Last Updated: 31/05/2005 by Daud Sweetland - Broadhey Ltd -->

// Example: obj = findObj("image1");
function findObj(theObj, theDoc)
{
  var p, i, foundObj;
  
  if(!theDoc) theDoc = document;
  if( (p = theObj.indexOf("?")) > 0 && parent.frames.length)
  {
    theDoc = parent.frames[theObj.substring(p+1)].document;
    theObj = theObj.substring(0,p);
  }
  if(!(foundObj = theDoc[theObj]) && theDoc.all) foundObj = theDoc.all[theObj];
  for (i=0; !foundObj && i < theDoc.forms.length; i++) 
    foundObj = theDoc.forms[i][theObj];
  for(i=0; !foundObj && theDoc.layers && i < theDoc.layers.length; i++) 
    foundObj = findObj(theObj,theDoc.layers[i].document);
  if(!foundObj && document.getElementById) foundObj = document.getElementById(theObj);
  
  return foundObj;
}

// * Dependencies * 
// this function requires the following snippets:
// JavaScript/readable_MM_functions/findObj
//
// Accepts a variable number of arguments, in triplets as follows:
// arg 1: simple name of a layer object, such as "Layer1"
// arg 2: ignored (for backward compatibility)
// arg 3: 'hide' or 'show'
// repeat...
//
// Example: showHideLayers(Layer1,'','show',Layer2,'','hide');
function showHideLayers()
{ 
  var i, visStr, obj, args = showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3)
  {
    if ((obj = findObj(args[i])) != null)
    {
      visStr = args[i+2];
      if (obj.style)
      {
        obj = obj.style;
        if(visStr == 'show') visStr = 'visible';
        else if(visStr == 'hide') visStr = 'hidden';
      }
      obj.visibility = visStr;
    }
  }
}


// _w : which ID (1) or (2)
// _h : (h)ide or (s)how
function toggleT(_w, _h) {
	if (document.all) { // is IE
		if (_h == 's') {
			eval("document.all."+_w+".style.visibility='visible';");
			eval("document.all."+_w+".style.zIndex='20';");
		}
		if (_h == 'h') {
			eval("document.all."+_w+".style.visibility='hidden';"); 
			eval("document.all."+_w+".style.zIndex='0';");
		}
	} else { // is NS? 
		if (_h == 's') {
			eval("document.layers['"+_w+"'].visibility='show';");
		}
		if (_h == 'h') {
			eval("document.layers['"+_w+"'].visibility='hide';");
		}
	}

}

// reloads the window if Nav4 resized
function MM_reloadPage(init) { 
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

// script for loading iframes
function loadIframe(iframeName, url) {
  if ( window.frames[iframeName] ) {
    window.frames[iframeName].location = url;   
    return false;
  }
  else return true;
}

// script for rollover images
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];
		}
	}
}

MoveableObject.prototype.delay = 50;
MoveableObject.prototype.stepX = 
MoveableObject.prototype.stepY = 10;
function CanvasDimensions () {
  if (window.innerWidth) {
    this.width = window.innerWidth;
    this.height = window.innerHeight;
  }
  else if (document.all) {
    this.width = document.body.clientWidth;
    this.height = document.body.clientHeight;
  }
}
function MoveableObject (htmlId) {
  this.htmlId = htmlId;
  this.id = MoveableObject.elements.length;
  MoveableObject.elements[this.id] = this;
  if (document.layers) {
    this.layer = document[this.htmlId];
    this.width = this.layer.document.width;
    this.height = this.layer.document.height;
  }
  else if (window.opera) {
    this.layer = document.getElementById(this.htmlId);
    this.width = this.layer.style.pixelWidth;
    this.height = this.layer.style.pixelHeight;
  }
  else if (document.all) {
    this.layer = document.all[this.htmlId];
    this.width = this.layer.clientWidth;
    this.height = this.layer.clientHeight;
  }
  else if (document.getElementById) {
    this.layer = document.getElementById(this.htmlId);
    this.width = this.layer.offsetWidth;
    this.height = this.layer.offsetHeight;
  }
}
function MoveableObject_setVisibility (visibility) {
  if (document.layers)
    this.layer.visibility =
      visibility == 'visible' ? 'show' :
      visibility == 'hidden' ? 'hide' : 'inherit';
  else 
    this.layer.style.visibility = visibility;
}
MoveableObject.prototype.setVisibility = MoveableObject_setVisibility;
function MoveableObject_moveTo (x, y) {
  if (document.layers) {
    this.layer.left = x;
    this.layer.top = y;
  }
  else if (document.all) {
    this.layer.style.pixelLeft = x;
    this.layer.style.pixelTop = y;
  }
  else if (document.getElementById) {
	try {
		this.layer.style.left = x + 'px'; 
		this.layer.style.top = y + 'px';
	} catch (e) {
		alert("Exception Caught !" + e);
	}
  }
}
MoveableObject.prototype.moveTo = MoveableObject_moveTo;
function MoveableObject_getPositionX() {
  if (document.layers) {
    return this.layer.left;
  }
  else if (document.all) {
    return this.layer.style.pixelLeft;
  }
  else if (document.getElementById) {
	var x = this.layer.style.left; 
	x = x.substring(0, x.indexOf('px'));
    return x;
  }
}
MoveableObject.prototype.getPositionX = MoveableObject_getPositionX;
function MoveableObject_getPositionY() {
  if (document.layers) {
    return this.layer.top;
  }
  else if (document.all) {
    return this.layer.style.pixelTop;
  }
  else if (document.getElementById) {
	var y = this.layer.style.top;
	y = y.substring(0, y.indexOf('px'));
    return y;
  }
}
MoveableObject.prototype.getPositionY = MoveableObject_getPositionY;
function MoveableObject_slide (startX, startY, endX, endY) {
  this.startX = this.x = startX;
  this.startY = this.y = startY;
  this.endX = endX;
  this.endY = endY;
  if (this.startX > this.endY)
    this.stepX = -this.stepX;
  if (this.startY > this.endY)
    this.stepY = -this.stepY;
  this.moveTo(this.x, this.y);
  this.setVisibility ('visible');
  this.tid = setInterval('MoveableObject.elements[' + this.id + '].slideStep()', this.delay);
}
MoveableObject.prototype.slide = MoveableObject_slide;
function MoveableObject_slideStep () {
  this.x += this.stepX;
  if ((this.stepX > 0 && this.x > this.endX) ||
      (this.stepX < 0 && this.x < this.endX))
    this.x = this.endX;
  this.y += this.stepY;
  if ((this.stepY > 0 && this.y > this.endY) ||
      (this.stepY < 0 && this.y < this.endY))
    this.y = this.endY;
  this.moveTo(this.x, this.y);
  if (this.x == this.endX && this.y == this.endY)
    clearInterval(this.tid);
}
MoveableObject.prototype.slideStep = MoveableObject_slideStep;
MoveableObject.elements = new Array();
