// ## global.js
//  Contains code that fixes the resize bug in Netscape, control core functionality for all dynamic layer elements, and sets the appropriate .css file depending on the user's browser. This file is used on all templates.

// FUNCTION LIST:
//  resizeFix();
//  popWindow();
//  popGlossary();
//  BrowserCheck();
//  DynLayer();
//  DynLayerMoveTo();
//  DynLayerMoveBy();
//  DynLayerInit();
//  DynLayerClipInit();
//  DynLayerClipTo();
//  DynLayerClipBy();
//  DynLayerClipValues();
//  DynLayerWrite();


// TEMPLATE(S) USED:
//  brochure_request.html
//  coming_veh.html
//  contact.html
//  corporate.html
//  dealer_results.html
//  gallery.html
//  galleryPopup.html
//  line_up.html
//  main.html
//  performance.html
//  specs.html
//  vehicles_home.html

// GLOBAL VARIABLES AND CONSTANTS
//  quot

//This script checks to see if visitor is using Netscape or MSIE browser.
//If Netscape or MSIE, make sure it is version 4.x or higher
//If not 4.x or above, send to error page.

var quot = '"';
var browserVer=parseInt(navigator.appVersion);

if(navigator.appName == "Netscape")
  {
  if (browserVer < 4)
    {
      document.location="errorpage.html"
    }
  }

if(navigator.appName == "Microsoft Internet Explorer")
  {
  if (browserVer < 4)
    {
      document.location="errorpage.html"
    }
  }

// BEGIN RESIZE CODE
// Copyright (C) 1999 Dan Steinman
// Distributed under the terms of the GNU Library General Public License
// Available at http://www.dansteinman.com/dynapi/

if (navigator.appName=="Netscape" && parseInt(navigator.appVersion)==4) {
  widthCheck = window.innerWidth
  heightCheck = window.innerHeight
  window.onResize = resizeFix
}
function resizeFix() {
  if (widthCheck != window.innerWidth || heightCheck != window.innerHeight)
  document.location.href = document.location.href
}


// Function that pops up a window of a specific size on all target browsers
//    Pass the window URL, the width and the height
function popWindow(urlVal,windowName,widthVal,heightVal,scrollBars,menuBar,reSizeable) {
  var paraString
  var wt
  var ht

  if ((is.ie) && (is.mac)) {
      wt = widthVal - 16;
      ht = heightVal - 16;
    } else if (is.ns){
      wt = widthVal;
      ht = heightVal + 2;
    } else {
      wt = widthVal;
      ht = heightVal;
    }
  paraString = "width=" + wt + ",height=" + ht;
  if (scrollBars == 1) {
    paraString = paraString + ",scrollbars=yes";
    } else {
    paraString = paraString + ",scrollbars=no";
    }
  if (menuBar == 1) {
    paraString = paraString + ",menubar=yes";
    } else {
    paraString = paraString + ",menubar=no";
    }

  paraString = paraString + ",resizable=yes";
  paraString = paraString + ",screenX=0,top=0";
  poppedWindow = window.open(urlVal,windowName,paraString);
  poppedWindow.focus();
  }


// Function that passes the appropriate glossary URL, name and size to the popWindow function
function popGlossary(urlVal) {
  popWindow(urlVal,"glossaryWindow",240,310);
}

// END RESIZE CODE

// BEGIN DYNAMIC LAYERING CODE
// Dynamic Layer Object
// sophisticated layer/element targeting and animation object which provides the core functionality needed in most DHTML applications
// 19990604

// Copyright (C) 1999 Dan Steinman
// Distributed under the terms of the GNU Library General Public License
// Available at http://www.dansteinman.com/dynapi/

// Added by D.Owen during warranty -- sets a variable to track when init is complete
var doneLoading = false;

// BrowserCheck Object
function BrowserCheck() {
  // note: this basic function was altered by d.owen to overcome ns4 bug on config page;
  // notes below were added along with changes on 52201.

  var b = navigator.appName
  if (b=="Netscape") this.b = "ns"
  else if (b=="Microsoft Internet Explorer") this.b = "ie"
  else this.b = b
  this.version = navigator.appVersion
  this.v = parseInt(this.version)
  this.ns = (this.b=="ns" && this.v>=4)
  this.ns4 = (this.b=="ns" && this.v==4)
  this.ns5 = (this.b=="ns" && this.v==5)
  this.ie = (this.b=="ie" && this.v>=4)
  this.ie4 = (this.version.indexOf('MSIE 4')>0)
  this.ie5 = (this.version.indexOf('MSIE 5')>0)
  this.min = (this.ns||this.ie)
  this.pc = (this.version.indexOf('Win')>0)
  this.mac = (this.version.indexOf('PPC')>0)

  // next line added by d.owen on 52201
  this.ns408=(parseFloat(this.version)==4.08);
}
var is = new BrowserCheck()

// Remove page re-dirction
// if (!is.min) location.href = '/global/error/browsercheck.html';

function DynLayer(id,nestref,frame) {
  if (!is.ns5 && !DynLayer.set && !frame) DynLayerInit()
  this.frame = frame || self
  if (is.ns) {
    if (is.ns4) {
      if (!frame) {
        if (!nestref) var nestref = DynLayer.nestRefArray[id]
        if (!DynLayerTest(id,nestref)) return
        this.css = (nestref)? eval("document."+nestref+".document."+id) : document.layers[id]
      }
      else this.css = (nestref)? eval("frame.document."+nestref+".document."+id) : frame.document.layers[id]
      this.elm = this.event = this.css
      this.doc = this.css.document
      this.w = this.css.clip.width
      this.h = this.css.clip.height
      this.x = this.css.left
      this.y = this.css.top
    }
    else if (is.ns5) {
      this.elm = document.getElementById(id)
      this.css = this.elm.style
      this.doc = document
      this.x = this.elm.offsetLeft
      this.y = this.elm.offsetTop
      this.w = this.elm.offsetWidth
      this.h = this.elm.offsetHeight
    }
  }
  else if (is.ie) {

    this.elm = this.event = this.frame.document.all[id]

    this.css = this.frame.document.all[id].style

    this.doc = document

    this.x = this.elm.offsetLeft
    this.y = this.elm.offsetTop
    this.w = this.elm.offsetWidth
    this.h = this.elm.offsetHeight

  }
  this.id = id
  this.nestref = nestref

  this.obj = id + "DynLayer"

  eval(this.obj + "=this")
  //alert('....in DynLayer function.....');
}
function DynLayerMoveTo(x,y) {
	// Added +'px' when it was discovered that sometimes Mozilla doesn't like pure numbers
  if (x!=null) {
    this.x = x
    this.css.left = x+'px';
  }
  if (y!=null) {
    this.y = y
    this.css.top = y+'px';
  }
}
function DynLayerMoveBy(x,y) {
  this.moveTo(this.x+x,this.y+y)
}
function DynLayerShow() {

  this.css.visibility = (is.ns4)? "show" : "visible"
}
function DynLayerHide() {
//alert('..in the hide method..1.');
//alert('this.id=' + this.id);
  this.css.visibility = (is.ns4)? "hide" : "hidden"
  //alert('..in the hide method..2.');
}
DynLayer.prototype.moveTo = DynLayerMoveTo
DynLayer.prototype.moveBy = DynLayerMoveBy
DynLayer.prototype.show = DynLayerShow
DynLayer.prototype.hide = DynLayerHide
DynLayerTest = new Function('return true')

// DynLayerInit Function
function DynLayerInit(nestref) {
  if (!DynLayer.set) DynLayer.set = true
  if (is.ns) {
    if (is.ns4) {
      if (nestref) ref = eval('document.'+nestref+'.document')
      else {nestref = ''; ref = document;}
      for (var i=0; i<ref.layers.length; i++) {
        var divname = ref.layers[i].name

        DynLayer.nestRefArray[divname] = nestref
        var index = divname.indexOf("Div")
        if (index > 0) {
          eval(divname.substr(0,index)+' = new DynLayer("'+divname+'","'+nestref+'")')
        }
        if (ref.layers[i].document.layers.length > 0) {
          DynLayer.refArray[DynLayer.refArray.length] = (nestref=='')? ref.layers[i].name : nestref+'.document.'+ref.layers[i].name
        }
      }
      if (DynLayer.refArray.i < DynLayer.refArray.length) {
        DynLayerInit(DynLayer.refArray[DynLayer.refArray.i++])
      }
    }
    else if (is.ns5) {
      for (var i=0; i<document.getElementsByTagName("DIV").length; i++) {
        var divname = document.getElementsByTagName("DIV")[i].id
        var index = divname.indexOf("Div")
        if (index > 0) {
          eval(divname.substr(0,index)+' = new DynLayer("'+divname+'")')
        }
      }
    }
  }
  else if (is.ie) {
    for (var i=0; i<document.all.tags("DIV").length; i++) {
      var divname = document.all.tags("DIV")[i].id
      //alert('i=' + i);
      //alert('divname=' + divname );
      var index = divname.indexOf("Div")

      //alert('index=' + index );
      //alert('divname.substr(0,index)=' + divname.substr(0,index));
      if (index > 0) {
      //alert('...part 1....');
        eval(divname.substr(0,index)+' = new DynLayer("'+divname+'")')
        //alert('...part 2....');
      }
    }
  }

  doneLoading = true;
  //alert('done loading....');
  return true

}

//alert('here too..2');
DynLayer.nestRefArray = new Array()
DynLayer.refArray = new Array()

DynLayer.refArray.i = 0

DynLayer.set = false


// Clip Methods
function DynLayerClipInit(clipTop,clipRight,clipBottom,clipLeft) {
  if (is.ie) {
    if (arguments.length==4) this.clipTo(clipTop,clipRight,clipBottom,clipLeft)
    else if (is.ie4) this.clipTo(0,this.css.pixelWidth,this.css.pixelHeight,0)
  }
}
function DynLayerClipTo(t,r,b,l) {
  if (t==null) t = this.clipValues('t')
  if (r==null) r = this.clipValues('r')
  if (b==null) b = this.clipValues('b')
  if (l==null) l = this.clipValues('l')
  if (is.ns) {
    this.css.clip.top = t
    this.css.clip.right = r
    this.css.clip.bottom = b
    this.css.clip.left = l
  }
  else if (is.ie) this.css.clip = "rect("+t+"px "+r+"px "+b+"px "+l+"px)"
}
function DynLayerClipBy(t,r,b,l) {
  this.clipTo(this.clipValues('t')+t,this.clipValues('r')+r,this.clipValues('b')+b,this.clipValues('l')+l)
}
function DynLayerClipValues(which) {
  if (is.ie) var clipv = this.css.clip.split("rect(")[1].split(")")[0].split("px")
  if (which=="t") return (is.ns)? this.css.clip.top : Number(clipv[0])
  if (which=="r") return (is.ns)? this.css.clip.right : Number(clipv[1])
  if (which=="b") return (is.ns)? this.css.clip.bottom : Number(clipv[2])
  if (which=="l") return (is.ns)? this.css.clip.left : Number(clipv[3])
}
DynLayer.prototype.clipInit = DynLayerClipInit
DynLayer.prototype.clipTo = DynLayerClipTo
DynLayer.prototype.clipBy = DynLayerClipBy
DynLayer.prototype.clipValues = DynLayerClipValues

// Write Method
function DynLayerWrite(html) {
  if (is.ns) {
    if (is.ns4) {
      this.doc.open()
      this.doc.write(html)
      this.doc.close()
    } else if (is.ns5) {
      this.elm.innerHTML = html;
    }
  }
  else if (is.ie) {
    this.event.innerHTML = html
  }
}
DynLayer.prototype.write = DynLayerWrite


// END DYNAMIC LAYER CODE

// BEGIN CSS STYLE DEFINITION CODE
//## Writes the appropriate CSS link depending on the user's browser.

//styleString = '<link rel="stylesheet" href="/css/master' + ((is.ie || is.ns5) ? 'IE': 'NN') + '.css" type="text/css">'

var startString = '<link rel="stylesheet" href="/css/master';
var endString = '.css" type="text/css">';

if ((is.ie || is.ns5)) styleString = startString + 'IE';
  else styleString = startString + 'NN';
if (is.mac && is.ns) styleString = styleString + 'mac';

styleString = styleString + endString;

document.write(styleString)

// END CSS STYLE DEFINITION CODE





    var newWindow
    function makeNewWindow(url) {
      if ( ! (!newWindow || newWindow.closed) ) {
        newWindow.close()
      }
      newWindow = window.open(url, "",
'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width=400,height=300');
      if (!newWindow.opener) {
        newWindow.opener = window;
      }
    }


function IN_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.IN_p) d.IN_p=new Array();
    var i,j=d.IN_p.length,a=IN_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.IN_p[j]=new Image; d.IN_p[j++].src=a[i];}}
}

function IN_swapImgRestore() { //v3.0
  var i,x,a=document.IN_sr; 
  for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++)
  {
  var docpath = window.location.pathname;
	docpath = docpath.toLowerCase();

if(docpath.indexOf("/specifications")!=-1)
{
	//alert(LastHighlightedSpecImg);
	var strsource = x.oSrc;
	if(strsource.indexOf(LastHighlightedSpecImg)==-1)
	{
	//alert(LastHighlightedSpecImg);
	 x.src=x.oSrc;
	 }
}	 
 else
 {
 //alert('onmouseout image=' + x.oSrc);
 x.src=x.oSrc;
 }
 
 }
}

function IN_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=IN_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function IN_swapImage() { //v3.0
  var i,j=0,x,a=IN_swapImage.arguments; document.IN_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=IN_findObj(a[i]))!=null)
   {document.IN_sr[j++]=x; 
   if(!x.oSrc)
    x.oSrc=x.src; 
    //alert(a[i+2]);
    x.src=a[i+2];
    
    }
}


function IN_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}



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];}
}

function MM_showHideLayers() { //v6.0

    //alert('showhidelayers called');
   var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }

		var timerID;
		//logic to make windows hide after a certain time.
		if (v=='hidden')

		{

		//if (timerID) clearTimeout(timerID)	// clear the current timeout
		timerID=setTimeout( 'MM_showHideLayers2(' + args[i] + ',' + i + ',"' + v + '")', 100);
		obj.visibility=v;
		}

		else

		{
		if (timerID) clearTimeout(timerID)	// clear the current timeout
		obj.visibility=v;

		}

    }

}

function MM_showHideLayers2(n,i,v)
{
  //function to help in adding timeout in the MM_showHideLayers function.
  var obj;
  n.style.visibility=v;

}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

// For CPO menu 

var QueryString = "blah";

var str=(location.pathname);
var fr = (str.match("/en/general/preowned/"));
var en = (str.match("/fr/general/preowned/"));

if (en == null) {
	str=(location.pathname);
	var QueryString = (str.replace(/en/,"fr"));
	//document.write(QueryString);
	} else {
		str=(location.pathname);
		var QueryString = (str.replace(/fr/,"en"));
		//document.write(QueryString);
};

      function openDash () {
        document.getElementById('dashOver').style.visibility = 'visible';
      }
      function closeDash () {
        document.getElementById('dashOver').style.visibility = 'hidden';
      }
      var ran = 0;

