var sRootImagePath = "SiteBuilder/CorporateImageLib/Models/";
var sVinImagePath = "/SiteBuilder/inventoryimages/";
var sDlrImagePath = "SiteBuilder/dealerimages/";
var aImages = new Array();
var aImagesDesc = new Array();
var bUseDefaultImageDesc=false;
var oDetailImage=new Image();
oDetailImage.src="/volvoImages/image_na.jpg";
var trRollOverClass = 'clsRollOver';

function submitADFLeadForm(prmType)
{
	var form = GetForm("volvomail");
	if (!validation(prmType, form)) 
		return false;
	
	setCurrentTime(form)

	form.submit();
}
 
 
function validation(prmType, form)
{
	var strRequiredErrors = '';
	var strErrors      = '';
	var strAddErrors   = '';
	var FirstName      = (form.fname) ? form.fname.value : "";
	var LastName       = (form.lname) ? form.lname.value : "";
	var Address        = (form.addr1) ? form.addr1.value : "";
	var City           = (form.city) ? form.city.value : "";
	var ZipCode        = (form.zip) ? form.zip.value : "";
	var Phone          = (form.phone) ? form.phone.value : "";
	var DayPhone	   = (form.dayphone) ? form.dayphone.value : "";
	var EveningPhone   = (form.eveningphone) ? form.eveningphone.value : "";
	var Email          = (form.email) ? form.email.value : "";
	var Fax            = (form.fax) ? form.fax.value : "";
	var Comments       = (form.comments) ? form.comments.value : "";
	var ContactMethod  = (form.cmethod) ? form.cmethod : "";
	var BestTime	   = (form.besttime) ? form.besttime[form.besttime.selectedIndex].value : "";
	var strYear	       = (form.year) ? form.year.value : "";
	//var strYear	   = (form.year && form.year.options) ? form.year.options[form.year.selectedIndex].value.toUpperCase() : (form.year)? form.year.value: "";
	var strModel	   = (form.model) ? form.model.value : "";
	//var strModel	   = (form.model && form.model.options) ? form.model.options[form.model.selectedIndex].value.toUpperCase() : (form.model)? form.model.value: "";	
	var Apt		   = (form.apt) ? form.apt.value : "";
	var State	   = (form.state) ? form.state.options[form.state.selectedIndex].value.toUpperCase() : "";
	var FirstDateReq   = (form.fdate) ? form.fdate.value : "";
	var SecondDateReq  = (form.sdate) ? form.sdate.value : "";	
	var FirstTimeReq   = (form.ftime) ? form.ftime.value : "";
	var SecondTimeReq  = (form.stime) ? form.stime.value : "";
	var TradeInMileage = (form.timileage) ? form.timileage.value : "";
	var Comments 	   = (form.comments) ? form.comments.value : "";
	var TradeInYear    = (form.tiyear && form.tiyear.options) ? form.tiyear.options[form.tiyear.selectedIndex].value.toUpperCase() : (form.tiyear)? form.tiyear.value: "";
	var TradeInModel   = (form.timake && form.timake.options) ? form.timake.options[form.timake.selectedIndex].value.toUpperCase() : (form.timake)? form.timake.value: "";
	var TradeInMake    = (form.timodel) ? form.timodel.value : "";
	var TradeInMileage = (form.timileage) ? form.timileage.value : "";
	
	//request service appointment
	var RequiredService= (form.requiredservice) ? form.requiredservice.value : "";
	var Symptoms= (form.symptoms) ? form.symptoms.value : ""; 
	var Make = (form.make) ? form.make.value : "";
	var Mileage = (form.mileage) ? form.mileage.value : "";


	/*if(prmType == "inventorydetailsquickform" && (Make.length ==0 || strYear.length ==0 || strModel.length==0)){
		alert("Sorry, your request cannot be sent. There is no vehicle detail information on this page.");
		return false;
	}*/
	
	
 	var alphas = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
 	var nums   = '0123456789';
	var phoneVals ='0123456789()/\.- ';
	
	var aryHold = new Array();	
	var a=0;
	var bContactRequired = false;
 	
 	ZipCode = ZipCode.replace(/^\s*/, '').replace(/\s*$/, ''); 
 	
	
	for(var i=0; i<aryElts.length; i++){  // check required input field
		switch(aryElts[i])
		{
			case "make":						  	
					if (Make.length == 0 && prmType != "inventorydetailsquickform") {
						strRequiredErrors += 'Make\n';
					}
					break;
		 	case "year":		
		 			if ((strYear.length < 2) || (strYear == "ALL") && prmType != "inventorydetailsquickform")	
		 				strRequiredErrors += 'Year\n';
		  			break;
		  	case "model":
		  			if ((strModel.length < 2) || (strModel == "ALL") && prmType != "inventorydetailsquickform")	
	 					strRequiredErrors += 'Model\n';
		  			break;
		  	case "mileage":
		  			if (Mileage.length == "")	
	 					strRequiredErrors += 'Mileage\n';
		  			break;		  			
		 	case "FName":		
			 		if (FirstName.length == 0) {
				 		strRequiredErrors += 'First Name\n';
 					}
			  		break;
		  	case "LName":
					if (LastName.length == 0) {
						strRequiredErrors += 'Last Name\n';
					}
			  		break;		  		
		 	case "Addr1":		
		 			if (Address.length == 0) {
						strRequiredErrors += 'Address\n';
					}
			  		break;
		  	case "Apt":
					if (Apt.length == 0) {
						strRequiredErrors += 'Apt/Suite\n';
					}
			  		break;
		 	case "City":		  	
		  			if (City.length == 0) {
						strRequiredErrors += 'City\n';
					}
			  		break;
		  	case "State":
					if (State.length == 0) {
						strRequiredErrors += 'State\n';
					}
					break;	
		 	case "Zip":		  	
		  			if (ZipCode.length == 0) {
						strRequiredErrors += 'Zip Code\n';
					}
					break;	
		  	case "Phone":
		  			if (Phone.length == 0) {
						strRequiredErrors += 'Phone Number\n';
					}
					bContactRequired = true;
					break;	
			case "DayPhone":
		  			if (DayPhone.length == 0) {
						strRequiredErrors += 'Day Phone Number\n';
					}
					bContactRequired = true;
					break;	
			case "EveningPhone":
					if (EveningPhone.length == 0) {
						strRequiredErrors += 'Evening Phone Number\n';
					}
					bContactRequired = true;
					break;	
			
		 	case "Fax":		  	
		  			if (Fax.length == 0) {
						strRequiredErrors += 'Fax Number\n';
					}
					bContactRequired = true;
					break;	
		  	case "Email":
		  			if (Email.length == 0) {
						strRequiredErrors += 'Email\n';
					}
					bContactRequired = true;
					break;
			case "FDate" :
					if (FirstDateReq.length == 0 || FirstDateReq == "mm/dd/yyyy" ) {
						strRequiredErrors += '1st Choice Date\n';
					}
					break;					
			case "FTime" :
					if (FirstTimeReq.length == 0 || FirstTimeReq == "hh:mm"){
						strRequiredErrors += '1st Choice Time\n';
					}
					break;
			case "SDate" :
					if ((SecondDateReq.length == 0 || SecondDateReq == "mm/dd/yyyy") && prmType != "inventorydetailsquickform") {
						strRequiredErrors += '2nd Choice Date\n';
					}
					break;						
			case "STime" :
					if ((SecondTimeReq.length == 0 || FirstTimeReq == "hh:mm") && prmType != "inventorydetailsquickform"){
						strRequiredErrors += '2nd Choice Time\n';
					}
					break;
			case "requiredservice" : 
					if (RequiredService.length == 0){
						strRequiredErrors += 'Required Service\n';
					} 
					break;
			case "symptoms" : 
					if (Symptoms.length == 0){
						strRequiredErrors += 'Symptoms\n';
					}
					break;
			case "Comments" : 
					if (Comments.length == 0){
						strRequiredErrors += 'Comments\n';
					}
					break;
			case "TradeInInfo" :
					if (TradeInYear.length == 0){
						strRequiredErrors += 'Trade-in Year\n';
					}
					if (TradeInModel.length == 0){
						strRequiredErrors += 'Trade-in Model\n';
					}
					if (TradeInMake.length == 0){
						strRequiredErrors += 'Trade-in Make\n';
					}
					if (TradeInMileage.length == 0){
						strRequiredErrors += 'Trade-in Mileage\n';
					}
					break;
			case "TestDriveDay" : 
					if (FirstDateReq.length == 0 || FirstDateReq == "mm/dd/yyyy"){
						strRequiredErrors += 'Test Drive - Choice a Day\n';
					}
					break;
			case "TestDriveTime" : 
					if (FirstTimeReq.length == 0 || FirstTimeReq == "hh:mm"){
						strRequiredErrors += 'Test Drive - Choice a Time\n';
					}
					break;
		}
	}

 
 	if (Mileage.length > 0 && !validString(Mileage,nums + ',')) {
 		strErrors += 'Mileage\n';
	}
	
 	//--- first name
	if (FirstName.length > 0 && (FirstName.length < 2 )) {
 		strErrors += 'First Name\n';
 	}
	
	//--- last name 
 	if (LastName.length > 0 && (LastName.length < 2 )) {
		strErrors += 'Last Name\n';
 	}

	//--- address
 	if (Address.length > 0 && Address.length < 2) {
 		strErrors += 'Address\n';
 	}

	//--- city
	if (City.length > 0 && (City.length < 2 || !validString(City,alphas + '- .'))) {
 		strErrors += 'City\n';
 	}

	//--- zip code
	if (ZipCode > 0 && (ZipCode.length < 5 || !validString(ZipCode,nums) || ZipCode.length > 9)) {
		if (ZipCode.length == 10 && validString(ZipCode.substring(0,5),nums) && validString(ZipCode.substring(6,10),nums) && (ZipCode.substring(5,6)=='-' || ZipCode.substring(5,6) == ' ')) {} else {	
			strErrors += 'Zip Code\n';
		}
	}
	
	//-- phone number
	if(Phone.length > 0)
		strErrors += ValidatePhoneFax (Phone, prmType, phoneVals, 'Phone Number\n');	
	if(DayPhone.length > 0)
		strErrors += ValidatePhoneFax (DayPhone, prmType, phoneVals, 'Day Phone Number\n');	
	if(EveningPhone.length > 0)
		strErrors += ValidatePhoneFax (EveningPhone, prmType, phoneVals, 'Evening Phone Number\n');	

	//--- email
	if(Email.length > 0)
		strErrors += ValidateEmail (Email, prmType);	
	
	//--- fax number	
	if(Fax.length > 0)
		strErrors += ValidatePhoneFax (Fax, prmType, phoneVals, 'Fax Number\n')	;

	if(Phone.length == 0 && Email.length == 0 && Fax.length == 0 && bContactRequired == false && prmType != "requestservice"){
		strRequiredErrors += 'Please provide Phone Number, Fax Number, or Email Address.';
	}
	

	if(prmType != "inventorydetailsquickform"){
		if ((FirstDateReq != '')|| (FirstTimeReq != '' && FirstTimeReq != 'hh:mm') ) {
			if (form.fdate){
				if (!chkdate(form.fdate)) {
					strErrors += '1st choice of date - Invalid Date\n';
				} else if (!comparedate(FirstDateReq)) {
					strErrors += "1st choice of date - Date must occur after today's date\n";
				} 
			}
			if (form.stime && (FirstTimeReq == '' || !checkdate(FirstTimeReq, nums))) {
				strErrors += '1st Choice of Time for Appointment - Invalid Time [Hour(s) Only (1-12) or Hour(s) & Minute(s) (1-12):(00-59)]\n';
			}
		}
		if ((SecondDateReq != '' && SecondDateReq != 'mm/dd/yyyy') || (SecondTimeReq != '' && SecondTimeReq != 'hh:mm')) {
			if (form.sdate){
				if (!chkdate(form.sdate)) {
					strErrors += '2nd choice of date - Invalid Date\n';
				} else if (!comparedate(SecondDateReq)) {
					strErrors += "2nd choice of date - Date must occur after today's date\n";
				}  
			}
			if (form.stime && (SecondTimeReq == '' || !checkdate(SecondTimeReq, nums))){
				strErrors += '2nd Choice of Time for Appointment - Invalid Time [Hour(s) Only (1-12) or Hour(s) & Minute(s) (1-12):(00-59)]\n';
			}
		}	

	}else{
		if (FirstDateReq != 'mm/dd/yyyy' && FirstDateReq != ''){
			if (!chkdate(form.fdate)) {
				strErrors += 'Test Drive Choose a Date - Invalid Date\n';
			} 
		}
		if (FirstTimeReq != 'hh:mm' && FirstTimeReq != '') {
			if (!checkdate(FirstTimeReq, nums)) {
				strErrors += 'Test Drive Choose a Time - Invalid Time [Hour(s) Only (1-12) or Hour(s) & Minute(s) (1-12):(00-59)]\n';
			}
		}
		
	}
	
	if (TradeInMileage.length > 0 && !validString(TradeInMileage,nums + ',')) {
		strErrors += 'Trade-In Mileage\n';
	}


	//--- contact method
	
	if(ContactMethod && !ContactMethod[0] && ContactMethod.value != "Email"){
		strAddErrors += ValidateContactMethod (ContactMethod, prmType, Phone, Fax); 
	}
	

	//--- comment
        if (Comments.length > 1000) {
              strAddErrors = strAddErrors + WriteTextFormat(a, "Additional Comments", "no more than 1000 characters")
        }
	strRequiredErrors = (strRequiredErrors.length > 0) ? 'Please complete all required fields of the form so our\nsales consultant can contact you regarding your request.\n' + strRequiredErrors: "";
	strErrors = (strErrors.length > 0)?'\n\nInvalid Input:\n' + strErrors: "";
	strAddErrors = (strAddErrors.length>0) ?  '\n' + strAddErrors : "";
	strErrors = strRequiredErrors + strErrors + strAddErrors;
	
	if (strErrors.length > 0) {
		alert (strErrors)
	} else {
		return true;
	}

	return false;
}

function setCurrentTime(form){
	var right_now=new Date();
	var year = right_now.getYear();
	var month = right_now.getMonth()+1;
	var day = right_now.getDate();
	var hour = right_now.getHours();
	var minute = right_now.getMinutes();
	var second = right_now.getSeconds();


	if(parseInt(month) < 10) month = "0" + month + "";
	if(parseInt(day) < 10) day = "0" + day + "";
	if(parseInt(hour) < 10) hour = "0" + hour + "";
	if(parseInt(minute) < 10) minute = "0" + minute + "";
	if(parseInt(second) < 10) second = "0" + second + "";
	
	var requesttime = year + "-" + month + "-" + day + "T" + hour + ":" + minute + ":" + second + "-" + hour + ":" + minute;
	
	form.requesttime.value = requesttime;
}
function ValidateContactMethod (objContactMethod, prmType, Phone, Fax) {
	var strErrors = '';
	if ((objContactMethod[1].checked) && (Fax.length == 0)) {
		strErrors = 'You indicated that your preferred method of contact was via fax.\nPlease enter your fax number.\n\n';
	}	
	if ((objContactMethod[2].checked) && (Phone.length == 0)) {
		strErrors = 'You indicated that your preferred method of contact was via phone.\nPlease enter your phone number.\n\n';
	} 
	return strErrors;
}

function ValidatePhoneFax (prmValue, prmType, prmVals, prmErrorMsg) {
	var IsError 	= 0;
	var stripped 	= prmValue.replace(/[\(\)\.\-\ ]/g, '');
	var strErrors 	= prmErrorMsg;

	if (stripped.length > 0) {
		if (!validString(prmValue,prmVals)) {
			IsError = 1;
		} else {
			if (!(stripped.length == 10)) {
				IsError = 1;
			}
		}	
	}
	if (IsError == '1') {return strErrors;} else {return '';}
}

function ValidateEmail (Email, prmType) {
	var IsError 	= 0;
	var stripped	=/^.+@.+\..{2,3}$/;
	var strErrors = 'Email Address\n';
	if (!(stripped.test(Email))) { 
		IsError = 1;
	}	
	if ((Email.length > 0) && (Email.indexOf('@',0) == -1)) {
		IsError = 1;
	}
	if (IsError == '1') {return strErrors;} else {return '';}
}

function WriteTextFormat(prmCount, prmName, prmFormat) {
	var sResult = '';
	if (prmCount == 0) {
		sResult = 'Please complete the field(s) with the correct format';
	}	
	sResult = sResult + '\n' + prmName + ' field should be entered with ' + prmFormat + '.';
	return sResult;
}

function checkdate(prmDate, nums) {
	if (prmDate.length > 0) {
		if ((prmDate.length > 5) || (!validString(prmDate,nums + ':'))) {
			return false;
		} else {
			if ((prmDate.indexOf(':')) != -1) {
				var aryTime = prmDate.split(':');
				if ((aryTime[0].length == 0) || (aryTime[1].length < 2))  {
					return false;
				} else if ((aryTime[0] == 0) || (aryTime[0] > 12) || (aryTime[1] > 59) )  {
					return false;
				}
			} else if ((prmDate == 0) || (prmDate > 12)) {
				return false;
			}

		}

	}
	return true;
}

function validString(OurString,goodChars) {
 	for(x=0;x<OurString.length;x++) {
 		if(goodChars.indexOf(OurString.charAt(x),0) == -1) {
 			return false;
 		}
 	}	
 	return true;
 }
 
 
//////////////////
// Calendar	
//////////////////

function showcalender(CalVal)
{
	var form = GetForm("volvomail");
	window.dateField = form[CalVal];
	calendar=open('Calendar.asp','cal','WIDTH=250,HEIGHT=250');
}	 

function comparedate(sDate) {
	var d = new Date();
	if (Date.parse(sDate) > Date.parse(d.toLocaleString())) {
		return true;
	} else {
		return false;
	}
}
	 
function chkdate(objName) {
	var strDatestyle = "US"; //United States date style
	var strDate;
	var strDateArray;
	var strDay;
	var strMonth;
	var strYear;
	var intday;
	var intMonth;
	var intYear;
	var datefield = objName;	
	var booFound = false;
	var strSeparatorArray = new Array("-"," ","/",".");
	var intElementNr;
	var err = 0;
	var strMonthArray = new Array(12);
	strMonthArray[0] = "Jan";
	strMonthArray[1] = "Feb";
	strMonthArray[2] = "Mar";
	strMonthArray[3] = "Apr";
	strMonthArray[4] = "May";
	strMonthArray[5] = "Jun";
	strMonthArray[6] = "Jul";
	strMonthArray[7] = "Aug";
	strMonthArray[8] = "Sep";
	strMonthArray[9] = "Oct";
	strMonthArray[10] = "Nov";
	strMonthArray[11] = "Dec";
	strDate = datefield.value;

	if (strDate.length < 1) {
		return true;
	}
	for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
		if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
			strDateArray = strDate.split(strSeparatorArray[intElementNr]);
			if (strDateArray.length != 3) {
				err = 1;
				return false;
			} else {
				strDay = strDateArray[0];
				strMonth = strDateArray[1];
				strYear = strDateArray[2];
			}
			booFound = true;
   		}
	}
	if (booFound == false) {
		if (strDate.length>5) {
			strDay = strDate.substr(0, 2);
			strMonth = strDate.substr(2, 2);
			strYear = strDate.substr(4);
   		} else {
   			err = 1;
   			return false;
   		}
	}

	if (strYear.length == 2) {
		strYear = '20' + strYear;
	}

	if (strDatestyle == "US") {
		strTemp = strDay;
		strDay = strMonth;
		strMonth = strTemp;
	}
	intday = parseInt(strDay, 10);
	if (isNaN(intday)) {
		err = 2;
		return false;
	}
	intMonth = parseInt(strMonth, 10);
	if (isNaN(intMonth)) {
		for (i = 0;i<12;i++) {
			if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
				intMonth = i+1;
				strMonth = strMonthArray[i];
				i = 12;
   			}
		}
		if (isNaN(intMonth)) {
			err = 3;
			return false;
   		}
	}
	intYear = parseInt(strYear, 10);
	if (isNaN(intYear)) {
		err = 4;
		return false;
	}
	if (intMonth>12 || intMonth<1) {
		err = 5;
		return false;
	}
	if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
		err = 6;
		return false;
	}
	if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
		err = 7;
		return false;
	}
	if (intMonth == 2) {
		if (intday < 1) {
			err = 8;
			return false;
		}
		if (LeapYear(intYear) == true) {
			if (intday > 29) {
				err = 9;
				return false;
			}
		} else {
			if (intday > 28) {
				err = 10;
				return false;
			}
		}
	}
	return true;
}

function LeapYear(intYear) {
	if (intYear % 100 == 0) {
		if (intYear % 400 == 0) { return true; }
	} else {
		if ((intYear % 4) == 0) { return true; }
	}
	return false;
}

function previousPage(oElt){
	var oForm = oElt.form;
	oForm.startpage.value = invPreviousPage;
	oForm.submit();
}

function nextPage(oElt){
	var oForm = oElt.form;
	oForm.startpage.value = invNextPage;
	oForm.submit();
}

function nextForm(oBtn){
	var oForm = oBtn.form;	
	var sCriteriaSuffix = "&generic1=" + sYear + "&generic2=" + sMake + "&generic3=" + sModel + "&generic4=" + sVin;
	
	switch (oBtn.id){
		case "btnReqQuote":
			if(invNewUsed == 'NEW'){
				oForm.crt.value = "generic1=noflash&sitekey=" + sitekey + "&pagekey=" + invNewRequestQuotePageKey + sCriteriaSuffix;
			} else {
				oForm.crt.value = "generic1=noflash&sitekey=" + sitekey + "&pagekey=" + invUsedRequestQuotePageKey + sCriteriaSuffix;
			}
			oForm.submit();
			break;
			
		case "btnSchDrive":
			if(invNewUsed == 'NEW'){
				oForm.crt.value = "generic1=noflash&sitekey=" + sitekey + "&pagekey=" + invNewScheduleDrivePageKey + sCriteriaSuffix;
			} else {
				oForm.crt.value = "generic1=noflash&sitekey=" + sitekey + "&pagekey=" + invUsedScheduleDrivePageKey + sCriteriaSuffix;
			}
			oForm.submit();
			break;
			
		case "btnBldVolvo":
			window.open('http://www.volvocars.us/BuildPrice/','','menubar=no,toolbar=no,location=no,scrollbars=yes,resizable=yes,top=30,left=30,width=825,height=650');
			break;
			
		case "btnBack":			
			window.history.back();
			break;
		
		case "btnNewSearch":
			if(invNewUsed == 'N'){	//CN Inventory Only!
				//oForm.crt.value = 'sitekey=' + sitekey + "&pagekey=" + invNewResultsPageKey + '&startpage=1&' + cn_inventoryid_string + '&type=N';
				oForm.crt.value = 'generic1=noflash&sitekey=' + sitekey + "&pagekey=" + invNewResultsPageKey + '&startpage=1&' + cn_inventoryid_string + '&make=' + allNewBrands + '&type=N';
			} else {
				oForm.crt.value = 'generic1=noflash&sitekey=' + sitekey + "&pagekey=" + invUsedResultsPageKey + '&startpage=1&' + cn_inventoryid_string + '&type=U';
			}
			oForm.submit();
			break;			
	}
}

function newSearch(oBtn){
	var oForm = oBtn.form;
	oForm.crt.value += '&generic1=noflash';
	oForm.crt.value += '&y1=' + oForm.year.value;
	oForm.crt.value += '&y2=' + oForm.year.value;
	oForm.crt.value += '&make=' + cnEncode(oForm.make.value);
	oForm.crt.value += '&model=' + cnEncode(oForm.model.value);
	oForm.crt.value += '&series=' + cnEncode(oForm.trim.value);
	oForm.crt.value += '&pagesize=' + oForm.resultsperpage.value;
	if(oForm.mileage && oForm.mileage.value != ''){
		oForm.crt.value += '&mileage1=' + getFirstValue(oForm.mileage.value) + '&mileage2=' + getSecondValue(oForm.mileage.value);
	}
	if(oForm.price && oForm.price.value != ''){
		oForm.crt.value += '&price1=' + getFirstValue(oForm.price.value) + '&price2=' + getSecondValue(oForm.price.value);
	}
	if(oForm.cpo && oForm.cpo.checked){
		oForm.crt.value += '&cpo=Y';
	}
	oForm.submit();
}

function getFirstValue(s){
	return s.substring(0,s.indexOf("-")-1);
}

function cnEncode(s){	
	s = escape(s);
	s = s.replace(/\+/g, '%2B');
	return s;
}


function getSecondValue(s){
	return s.substring(s.indexOf("-") + 2,s.length);
}

function setSelectedTab(divObj){
    if(divObj.id=='dlrTab'){
        document.getElementById('heroshotDiv').innerHTML="<img id=\"invDetailsImg\" onclick=\"showFullImage(this);\" src="+dlrDefaultImg+" alt=\"Actual Photo\" hspace=\"8\" border=\"0\" style=\"visibility:visible;\"/>";
        document.getElementById('imgLabel').innerHTML='Actual Photo';
        document.getElementById('thumbstd').innerHTML=dlrImgsThumbs;
        document.getElementById('extTabImg').src='/Themes/Default/en-us/Common/Public/inventory/images/exterior-off.gif';
        document.getElementById('360TabImg').src='/Themes/Default/en-us/Common/Public/inventory/images/360-off.gif'; 
        document.getElementById('intTabImg').src='/Themes/Default/en-us/Common/Public/inventory/images/interior-off.gif';
        document.getElementById('dlrTabImg').src='/Themes/Default/en-us/Common/Public/inventory/images/dealer-on.gif'; 
        prevState='-on.gif';
    }
    if(divObj.id=='intTab'){
        document.getElementById('heroshotDiv').innerHTML="<img id=\"invDetailsImg\" onclick=\"showFullImage(this);\" src="+intDefaultImg+" alt=\"Actual Photo\" hspace=\"8\" border=\"0\" style=\"visibility:visible;\"/>";
        document.getElementById('imgLabel').innerHTML='Stock Photo';
        document.getElementById('thumbstd').innerHTML=eVoxInterior;
        document.getElementById('extTabImg').src='/Themes/Default/en-us/Common/Public/inventory/images/exterior-off.gif';
        document.getElementById('360TabImg').src='/Themes/Default/en-us/Common/Public/inventory/images/360-off.gif'; 
        document.getElementById('dlrTabImg').src='/Themes/Default/en-us/Common/Public/inventory/images/dealer-off.gif'; 
        document.getElementById('intTabImg').src='/Themes/Default/en-us/Common/Public/inventory/images/interior-on.gif';
        prevState='-on.gif';
    }
    if(divObj.id=='extTab'){
        document.getElementById('heroshotDiv').innerHTML="<img id=\"invDetailsImg\" onclick=\"showFullImage(this);\" src="+extDefaultImg+" alt=\"Actual Photo\" hspace=\"8\" border=\"0\" style=\"visibility:visible;\"/>";
        document.getElementById('imgLabel').innerHTML='Stock Photo';
        document.getElementById('thumbstd').innerHTML=eVoxExterior;
        document.getElementById('intTabImg').src='/Themes/Default/en-us/Common/Public/inventory/images/interior-off.gif';
        document.getElementById('360TabImg').src='/Themes/Default/en-us/Common/Public/inventory/images/360-off.gif'; 
        document.getElementById('dlrTabImg').src='/Themes/Default/en-us/Common/Public/inventory/images/dealer-off.gif'; 
        document.getElementById('extTabImg').src='/Themes/Default/en-us/Common/Public/inventory/images/exterior-on.gif';  
        prevState='-on.gif';
    }
    if(divObj.id=='360Tab'){
    
        var getInstall="";
        var hasProductInstall = DetectFlashVer(6, 0, 65); 

        if(!hasProductInstall){
            getInstall=confirm("You need a flash player to view the 360 images.  Click ok if  you want to install flash.");
        }
        
        if(getInstall){
        
            if(eVoxInt360!='')
                document.getElementById('imgContainer').innerHTML='<div>'+eVoxInt360+'</div>';
            else
                document.getElementById('imgContainer').innerHTML='<div>'+eVoxExt360+'</div>'; 
                
            
        }

        document.getElementById('thumbstd').innerHTML=flashTabContainer;
        document.getElementById('intTabImg').src='/Themes/Default/en-us/Common/Public/inventory/images/interior-off.gif';
        document.getElementById('extTabImg').src='/Themes/Default/en-us/Common/Public/inventory/images/exterior-off.gif';
        document.getElementById('dlrTabImg').src='/Themes/Default/en-us/Common/Public/inventory/images/dealer-off.gif'; 
        document.getElementById('360TabImg').src='/Themes/Default/en-us/Common/Public/inventory/images/360-on.gif';
        prevState='-on.gif';
    }
        
}

var prevState="";
function setOnMouseOver(imgId){
    
    var curr=document.getElementById(imgId).src;
    var tabImageName=curr.substring(0, curr.lastIndexOf('-'));
    prevState=curr.substring(curr.lastIndexOf('-'));
    if(prevState=='-off.gif'){
        document.getElementById(imgId).src=tabImageName+'-on.gif';
    }
}

function setOnMouseOut(imgId){
    var curr=document.getElementById(imgId).src;
    var tabImageName=curr.substring(0, curr.lastIndexOf('-'));
    document.getElementById(imgId).src=tabImageName+prevState;
}

function addImageToPreloadArray(sImage){
	var iIndex = aImages.length;
	var imageDesc=sImage.substring(0, sImage.indexOf('-'));
	sImage=sImage.substring(sImage.indexOf('-')+1);
	aImages[iIndex] = new Image();
	aImages[iIndex].src=sImage;
	addImageDescToPreloadArray(imageDesc);
}
            

function hideUnusedTabs(objid){
    document.getElementById(objid).style.width='0px';
    document.getElementById(objid).style.overflow='hidden';
}
			

var eVoxExterior="";
var eVoxInterior="";
var dlrImgsThumbs="";
var activeImgsThumbs="";
var activeExtImgsThumbs="";
var eVoxExt360="";
var eVoxInt360="";
var extDefaultImg="";
var intDefaultImg="";
var dlrDefaultImg="";
var flashTabContainer="";
var colorVif="";
var eVoxPath="";

function setDetailImages(dlrImgPath, eVoxImgPath, dlrImgArr, eVoxImg, eVoxExtImgArr, eVoxIntImgArr, eVoxExtFlash, eVoxIntFlash, cVif){

    var invDetImage;
    var img1exists='0';
    var img2exists='0';
    var imgpath1='';
    var imgpath2='';
    var imgpath3='';
    eVoxPath=eVoxImgPath;
    
    colorVif=cVif;

    //hiding tabs with no images
    if(dlrImgArr.length==0)
        hideUnusedTabs('dlrTab');
    if(eVoxExtImgArr.length==0 || eVoxImg=='')
        hideUnusedTabs('extTabImg');
    if(eVoxIntImgArr.length==0)
        hideUnusedTabs('intTabImg');
    if(eVoxExtFlash=='' && eVoxIntFlash=='')
        hideUnusedTabs('360TabImg');
        
    //populating images
    if(dlrImgArr.length>0){
        imgpath1='/'+dlrImgPath+'heroshots/'+dlrImgArr[0];
        dlrDefaultImg=imgpath1;
        invDetImage=loadImageObject(imgpath1);
        document.getElementById('heroshotDiv').innerHTML="<img id=\"invDetailsImg\" onclick=\"showFullImage(this);\" src="+invDetImage.src+" alt=\"Actual Photo\" hspace=\"8\" border=\"0\" style=\"visibility:visible;\"/>";
        document.getElementById('imgLabel').innerHTML='Actual Photo';
        dlrImgsThumbs=detailsExtThumbs(dlrImgArr, dlrImgPath, 'dealer');
        activeImgsThumbs=dlrImgsThumbs;
    }
    
    if(eVoxExtImgArr.length>0 && eVoxImg!=''){
        var vifCode="";
//        if(eVoxExtImgArr[0]=='thumb.jpg')
//            vifCode=cVif;
//        else
        vifCode=eVoxExtImgArr[0].substring(0, eVoxExtImgArr[0].indexOf('_'));
        imgpath2='/'+eVoxImgPath+'/'+vifCode+'/heroshots/'+eVoxExtImgArr[0];
        invDetImage=loadImageObject(imgpath2);
        eVoxExterior=detailsExtThumbs(eVoxExtImgArr, eVoxImgPath, 'evoxext');
        extDefaultImg='/'+eVoxImgPath+'/'+vifCode+'/heroshots/'+eVoxExtImgArr[0];
        if(activeImgsThumbs==''){
            activeImgsThumbs=eVoxExterior;
            document.getElementById('heroshotDiv').innerHTML="<img id=\"invDetailsImg\" onclick=\"showFullImage(this);\" src="+invDetImage.src+" alt=\"Stock Photo\" hspace=\"8\" border=\"0\" style=\"visibility:visible;\"/>";
            document.getElementById('imgLabel').innerHTML='Stock Photo';

        }
    }

    if(eVoxIntImgArr.length>0){
        var vifCode=eVoxIntImgArr[0].substring(0, eVoxIntImgArr[0].indexOf('_'));
        imgpath3='/'+eVoxImgPath+'/'+vifCode+'/heroshots/'+eVoxIntImgArr[0];
        invDetImage=loadImageObject(imgpath3);
        eVoxInterior=detailsExtThumbs(eVoxIntImgArr, eVoxImgPath, 'evoxint');
        intDefaultImg='/'+eVoxImgPath+'/'+vifCode+'/heroshots/'+eVoxIntImgArr[0];
        if(activeImgsThumbs==''){
            activeImgsThumbs=eVoxInterior;
            document.getElementById('heroshotDiv').innerHTML="<img id=\"invDetailsImg\" onclick=\"showFullImage(this);\" src="+invDetImage.src+" alt=\"Stock Photo\" hspace=\"8\" border=\"0\" style=\"visibility:visible;\"/>";
            document.getElementById('imgLabel').innerHTML='Stock Photo';
        }
    }
    
    flashTabContainer=detailsFlash(eVoxImgPath, eVoxExtFlash, eVoxIntFlash);

    //image not available case
    if(activeImgsThumbs==''){
        document.getElementById('imageAreaT').style.visibility='hidden';
        document.getElementById('imageAvail').style.visibility='visible';
    }
 
}
			

function evoxFlash(flname){
var result="";

result=result+"<OBJECT classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"";
result=result+'\n'+"codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0\"";
result=result+'\n'+"WIDTH=\"100%\" HEIGHT=\"480\" id=\"myMovieName\"><PARAM NAME=movie VALUE="+flname+"><PARAM NAME=quality VALUE=high><PARAM NAME=bgcolor VALUE=#FFFFFF><EMBED src="+flname+" quality=high bgcolor=#FFFFFF WIDTH=\"100%\" HEIGHT=\"480\"";
result=result+'\n'+"NAME=\"myMovieName\" ALIGN=\"\" TYPE=\"application/x-shockwave-flash\"";
result=result+'\n'+"PLUGINSPAGE=\"http://www.macromedia.com/go/getflashplayer\"></EMBED></OBJECT>";

return result;
}

function detailsExtThumbs(arr, imgpath, imgtype){
    var result='<table cellspacing=\"5\" cellpadding=\"0\">';
    var z=0;
    var detimgsrc='';
    var colnum=Math.ceil(arr.length/2);
    
    if(colnum<6)
        colnum=5;
        
    while(z<arr.length){
        result=result+'<tr>';
        for(var k=0; k<colnum && z<arr.length; k++){
            var dlrImagePath='';
            var vifCode='';
            detimgsrc=arr[z];
            
            if(imgtype!='dealer'){
                if(arr[z]=='thumb.jpg'){
                    vifCode=colorVif;
                    dlrImagePath=imgpath+'/'+vifCode+'/thumbs/';
                }
                else{
                    vifCode=arr[z].substring(0, arr[z].indexOf('_'));
                    dlrImagePath=imgpath+'/'+vifCode+'/thumbs/';
                }
            }
            else
                dlrImagePath=imgpath+'thumbs/';

            result=result+'<td><img name='+imgtype+' id='+z+' src=/'+dlrImagePath+arr[z]+' onclick=\"showHeroshot(this);\"></td>';
            z=z+1;
        }
        result=result+'</tr>';
    }
    result=result+'</table>';  
    
    return result;
}

function detailsFlash(evoxImgPath, exterior, interior){
    var result='<table height=\"120\" cellspacing=\"0\" cellpadding=\"0\">';
    var intButton='';
    var extButton='';


    if(interior!=''){
        intButton='<div id=\'interiorflash\' onclick=showHTMLInvFlash(this) style=\"padding:2px;\"><img src=\'/Themes/Default/en-us/Common/Public/inventory/images/interior.gif\'></div>';
        var intvifCode=exterior.substring(0, interior.indexOf('_'));
        var flashIntPath='/'+evoxImgPath+'/'+intvifCode+'/'+interior;
        eVoxInt360=evoxFlash(flashIntPath);
    }
    if(exterior!=''){
        extButton='<div id=\'exteriorflash\' onclick=showHTMLInvFlash(this) style=\"padding:2px;\"><img src=\'/Themes/Default/en-us/Common/Public/inventory/images/exterior.gif\'></div>';
        var extvifCode=exterior.substring(0, exterior.indexOf('_'));
        var flashExtPath='/'+evoxImgPath+'/'+extvifCode+'/'+exterior;
        eVoxExt360=evoxFlash(flashExtPath);
    }
        
    result+='<tr><td valign=\"top\">'+intButton+extButton+'<td></tr>';
    result+='</table>';  
    
    return result;
}

function showHTMLInvFlash(divObj){

    var hasProductInstall = DetectFlashVer(6, 0, 65); 
    if(hasProductInstall){

        if(divObj.id=='interiorflash')
            document.getElementById('imgContainer').innerHTML='<div>'+eVoxInt360+'</div>';
        if(divObj.id=='exteriorflash')
            document.getElementById('imgContainer').innerHTML='<div>'+eVoxExt360+'</div>'; 
             
        document.getElementById('fullImageContainer').style.visibility='visible';
        document.getElementById('besttime').style.visibility='hidden';
        document.getElementById('purchasepreference').style.visibility='hidden';
            
    }
    else{
        alert('You need to have the flash player to see the 360 images');
    }
    
}

function showHeroshot(thumbObj){
    if(thumbObj.name=='evoxext'){

        vifCode=eVoxExtImgArray[thumbObj.id].substring(0, eVoxExtImgArray[thumbObj.id].indexOf('_'));
        heroimgpath='/'+eVoxPath+'/'+vifCode+'/heroshots/'+eVoxExtImgArray[thumbObj.id];
        document.getElementById('invDetailsImg').src=heroimgpath;
        
    
//        currImage=document.getElementById('invDetailsImg').src;
//        imagePath=currImage.substring(0, currImage.lastIndexOf('/'));

//        document.getElementById('invDetailsImg').src=imagePath+'/'+eVoxExtImgArray[thumbObj.id];
    }
    else{
        if(thumbObj.name=='evoxint'){
            currImage=document.getElementById('invDetailsImg').src;
            imagePath=currImage.substring(0, currImage.lastIndexOf('/'));
            document.getElementById('invDetailsImg').src=imagePath+'/'+eVoxIntImgArray[thumbObj.id];
        }
        else{
            if(thumbObj.name=='dealer'){
                currImage=document.getElementById('invDetailsImg').src;
                imagePath=currImage.substring(0, currImage.lastIndexOf('/'));
                document.getElementById('invDetailsImg').src=imagePath+'/'+dlrImgArray[thumbObj.id];
            }
        }
    }

}

function showFullImage(currImage){
    
    var heroshotPath=(currImage.src).substring(0, (currImage.src).lastIndexOf('/'));
    var fullimgPath=heroshotPath.substring(0, heroshotPath.lastIndexOf('/'));
    var imgname=(currImage.src).substring((currImage.src).lastIndexOf('/'));
    fullimagesrc=fullimgPath+imgname;
//    document.getElementById('fullImageContainer').style.backgroundImage='url('+fullimagesrc+')';
    //document.getElementById('fullImg').src=fullimagesrc;
    
    document.getElementById('imgContainer').innerHTML='<img id=\'fullImg\' src='+fullimagesrc+'>';
    
    document.getElementById('fullImageContainer').style.visibility='visible';
    document.getElementById('besttime').style.visibility='hidden';
    document.getElementById('purchasepreference').style.visibility='hidden';
}

function closeFullImage(){
    document.getElementById('fullImageContainer').style.visibility='hidden';
    document.getElementById('besttime').style.visibility='visible';
    document.getElementById('purchasepreference').style.visibility='visible';
    
}

function addImageDescToPreloadArray(sImageDesc){
	var iIndex = aImagesDesc.length;
	aImagesDesc[iIndex] = sImageDesc;
}

function getImage(iImageIndex) {
	var sReturn=sRootImagePath + "default_t.gif";
	bUseDefaultImageDesc=false;
	if( iImageIndex<aImages.length){
		if(checkImage(aImages[iImageIndex])){
			sReturn = aImages[iImageIndex].src;
			bUseDefaultImageDesc=true;
		}
	}
	return sReturn;
}

function checkImage(oImage){
	var bReturn = false;
	if(oImage.complete){
		if(oImage.height!=0){
			bReturn = true;
		}
	}
	return bReturn;
}

function loadImageObject(sSrc){
	var oImage = new Image();
	oImage.src=sSrc;
	var iStopNeverEnd=500000;
	while(oImage.complete==false || oImage.height==0){
		if(iStopNeverEnd!=0){
			iStopNeverEnd--;
		}else{
			break;
		}
	}
	return oImage;
}

function checkDetailImage(sVinId){
	var oImage = document.getElementById(sVinId);
	if(oImage!=null){
		if(!checkImage(oImage)){
			var oStandInImage = loadImageObject(oImage.src);	
			if(!checkImage(oStandInImage)){
				oImage.src = oDetailImage.src;
				document.getElementById('txtPhotoDesc').innerHTML = "";
			}
		}
	}
}

function setImageSrc(oImage, iIndex) {
	oImage.src = getImage(iIndex);
}

function oRow_onmouseover(oRow, iIndex, resultsType){
	oRow.setAttribute('oldclassname', oRow.className);
	oRow.className = trRollOverClass;
	var tn = document.getElementById('tn');
	var tnc = document.getElementById('tnc');
	tnc.style.visibility = 'visible';
	var tnl = document.getElementById('tnl');
	tnl.href = tnDetailLink+oRow.id;	
	setImageSrc(tn,iIndex);	
	var tnd = document.getElementById('tnd');
	if(bUseDefaultImageDesc){
		var sDesc = aImagesDesc[iIndex];
		tnd.innerHTML = sDesc;
	} else if(resultsType == 'used'){
		tnc.style.visibility = 'hidden';
	} else {
		tnd.innerHTML = "";
	}
	tnc.style.top = getAbsoluteTop(oRow)-10;
	tnc.style.left = getAbsoluteLeft(oRow.offsetParent) + oRow.offsetWidth -80;
}

function findtnImage(){
	var oReturn =null;
	var cImages = document.images;
	for(var i=0;i<cImages.length;i++){
		if(cImages[i].id=='tn'){
			oReturn = cImages[i];
		}
	}
	return oReturn;
}

function oRow_onmouseout(oRow,iIndex) {
	oRow.className = oRow.getAttribute('oldclassname');
}

function oRow_onclick(oRow,iIndex){
	var gotoURL = document.getElementById('tnl');
	document.location.href = gotoURL;
}
function getAbsoluteTop(o){
    if (o.offsetParent == null) {
        return o.offsetTop;
    }
    else {
        return o.offsetTop + getAbsoluteTop(o.offsetParent);
    }
}
function getAbsoluteLeft(o){
    if (o.offsetParent == null) {
        return o.offsetLeft;
    }
    else {
        return o.offsetLeft + getAbsoluteLeft(o.offsetParent);
    }
}

function InventoryDisplay_Navigate(inventoryId){
	var f = document.getElementById('Form1');
	f.action = '?page=new-inventory&InventoryId=' + inventoryId;
	f.submit();
}


function previousPage(oElt, sStartpage,sPagesize){
	var oForm = oElt.form;
	var sCry=oForm.crt.value;
	sCry +="&startpage="+sStartpage+"&pagesize="+sPagesize;
	oForm.crt.value =sCry; 
	oForm.submit();
}

function nextPage(oElt, sStartpage,sPagesize){
	var oForm = oElt.form;
	var sCry=oForm.crt.value;
	sCry +="&startpage="+sStartpage+"&pagesize="+sPagesize;
	oForm.crt.value =sCry; 
	oForm.submit();
}

function submitQuickSearch(oForm){
    
	var sCrt = oForm.crt.value;
	if(oForm.newused[0].checked){
		sCrt += "N&pagekey=" + invNewResultsPageKey;
		sCrt += '&y1=' + oForm.year.value;
		sCrt += '&y2=' + oForm.year.value;
		if(oForm.make.value != "")
			sCrt += '&make=' + cnEncode(oForm.make.value);
		else
			sCrt += '&make=' + cnEncode(allNewBrands);
				
		sCrt += '&model=' + cnEncode(oForm.model.value);
	} else {
		sCrt += "U&pagekey=" + invUsedResultsPageKey;
		sCrt += '&y1=' + oForm.year.value;
		sCrt += '&y2=' + oForm.year.value;
		sCrt += '&make=' + cnEncode(oForm.make.value);
		sCrt += '&model=' + cnEncode(oForm.model.value);
	}
	
	oForm.crt.value = sCrt;
	oForm.submit();
}

/*
	Lightbox JS: Fullsize Image Overlays 
	by Lokesh Dhakar - http://www.huddletogether.com

	For more information on this script, visit:
	http://huddletogether.com/projects/lightbox/

	Script featured on Dynamic Drive code library Jan 24th, 06':
	http://www.dynamicdrive.com

	Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/
	(basically, do anything you want, just leave my name and link)
	
	Table of Contents
	-----------------
	Configuration
	
	Functions
	- getPageScroll()
	- getPageSize()
	- pause()
	- getKey()
	- listenKey()
	- showLightbox()
	- hideLightbox()
	- initLightbox()
	- addLoadEvent()
	
	Function Calls
	- addLoadEvent(initLightbox)

*/



//
// Configuration
//
var loadingImage = '/Themes/Default/en-us/Common/Public/inventory/images/loading.gif';		

//
// getPageScroll()
// Returns array with x,y page scroll values.
// Core code from - quirksmode.org
//
function getPageScroll(){

	var yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
	}

	arrayPageScroll = new Array('',yScroll) 
	return arrayPageScroll;
}



//
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
//
function getPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}


	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}


//
// pause(numberMillis)
// Pauses code execution for specified time. Uses busy code, not good.
// Code from http://www.faqts.com/knowledge_base/view.phtml/aid/1602
//
function pause(numberMillis) {
	var now = new Date();
	var exitTime = now.getTime() + numberMillis;
	while (true) {
		now = new Date();
		if (now.getTime() > exitTime)
			return;
	}
}

//
// getKey(key)
// Gets keycode. If 'x' is pressed then it hides the lightbox.
//

function getKey(e){
	if (e == null) { // ie
		keycode = event.keyCode;
	} else { // mozilla
		keycode = e.which;
	}
	key = String.fromCharCode(keycode).toLowerCase();
	
	if(key == 'x'){ hideLightbox(); }
}


//
// listenKey()
//
function listenKey () {	document.onkeypress = getKey; }
	

//
// showLightbox()
// Preloads images. Pleaces new image in lightbox then centers and displays.
//
function showLightbox(objLink,objTitle)
{
	// prep objects
	//objLink = "/Themes/Default/en-us/Common/Public/inventory/images/car.jpg"
	
	var objOverlay = document.getElementById('overlay');
	var objLightbox = document.getElementById('lightbox');
	var objImage = document.getElementById('lightboxImage');
	var objLoadingImage = document.getElementById('loadingImage');
	var objSWFDiv = document.getElementById('mediaDiv');
	var objImageDiv = document.getElementById('imageDiv');
	
	var arrayPageSize = getPageSize();
	var arrayPageScroll = getPageScroll();

	// set height of Overlay to take up whole page and show
	objOverlay.style.height = (arrayPageSize[1] + 'px');
	objOverlay.style.display = 'block';
	
	var extension = objLink.substr(objLink.lastIndexOf(".")+1, 3);
	if(extension != "swf"){
		objSWFDiv.style.display = "none";
		objImageDiv.style.display = "inline";
		// center loadingImage if it exists
		if (objLoadingImage) {
			objLoadingImage.style.top = (arrayPageScroll[1] + ((arrayPageSize[3] - 35 - objLoadingImage.height) / 2) + 'px');
			objLoadingImage.style.left = (((arrayPageSize[0] - 20 - objLoadingImage.width) / 2) + 'px');
			objLoadingImage.style.display = 'block';
		}

		// preload image
		imgPreload = new Image();
	
		imgPreload.onload=function(){
			objImage.src = objLink;
	
			// center lightbox and make sure that the top and left values are not negative
			// and the image placed outside the viewport
			var lightboxTop = arrayPageScroll[1] + ((arrayPageSize[3] - 35 - imgPreload.height) / 2);
			var lightboxLeft = ((arrayPageSize[0] - 20 - imgPreload.width) / 2);
			
			objLightbox.style.top = (lightboxTop < 0) ? "10px" : lightboxTop + "px";
			objLightbox.style.left = (lightboxLeft < 0) ? "10px" : lightboxLeft + "px";
			
			// A small pause between the image loading and displaying is required with IE,
			// this prevents the previous image displaying for a short burst causing flicker.
			if (navigator.appVersion.indexOf("MSIE")!=-1){
				pause(150);
			} 
	
			if (objLoadingImage) {	objLoadingImage.style.display = 'none'; }
			objLightbox.style.display = 'block';
	
			return false;
		}
	
		imgPreload.src = objLink;
	}else{
		objSWFDiv.style.display = "inline";
		objImageDiv.style.display = "none";
		var soEvox = new SWFObject(objLink, "media", 640, 480, "8", "263039");
		soEvox.addParam("quality", "high");
		soEvox.addParam("wmode", "opaque");
		soEvox.addParam("scale", "noscale");
		soEvox.addParam("id", "media");
		soEvox.addParam("name", "media");
		soEvox.addParam("allowScriptAccess", "always");
		soEvox.addParam("type", "application/x-shockwave-flash");
		soEvox.addParam("pluginspage", "http://www.adobe.com/go/getflashplayer");
		soEvox.addParam("align", "middle");
		soEvox.write("mediaDiv");

		// center lightbox and make sure that the top and left values are not negative
		// and the image placed outside the viewport
		var lightboxTop = arrayPageScroll[1] + ((arrayPageSize[3] - 35 - 480) / 2);
		var lightboxLeft = ((arrayPageSize[0] - 20 - 640) / 2);
		
		objLightbox.style.top = (lightboxTop < 0) ? "10px" : lightboxTop + "px";
		objLightbox.style.left = (lightboxLeft < 0) ? "10px" : lightboxLeft + "px";

		if (objLoadingImage) {	objLoadingImage.style.display = 'none'; }
		objLightbox.style.display = 'block';
	}

	// After image is loaded, update the overlay height as the new image might have
	// increased the overall page height.
	arrayPageSize = getPageSize();
	objOverlay.style.height = (arrayPageSize[1] + 'px');
	
	// Check for 'x' keypress
	listenKey();
}





//
// hideLightbox()
//
function hideLightbox()
{
	// get objects
	objOverlay = document.getElementById('overlay');
	objLightbox = document.getElementById('lightbox');

	// hide lightbox and overlay
	objOverlay.style.display = 'none';
	objLightbox.style.display = 'none';
	
	// disable keypress listener
	document.onkeypress = '';
}




//
// initLightbox()
// The function inserts html markup at the top of the page which will be used as a
// container for the overlay pattern and the inline image.
//
function initLightbox()
{

	// the rest of this code inserts html at the top of the page that looks like this:
	//
	// <div id="overlay">
	//		<a href="#" onclick="hideLightbox(); return false;"><img id="loadingImage" /></a>
	//	</div>
	// <div id="lightbox">
	//		<a href="#" onclick="hideLightbox(); return false;" title="Click anywhere to close image">
	//			<img id="closeButton" />		
	//			<img id="lightboxImage" />
	//		</a>
	//		<div id="lightboxDetails">
	//			<div id="lightboxCaption"></div>
	//			<div id="keyboardMsg"></div>
	//		</div>
	// </div>
	
	var objBody = document.getElementsByTagName("body").item(0);
	
	// create overlay div and hardcode some functional styles (aesthetic styles are in CSS file)
	var objOverlay = document.createElement("div");
	objOverlay.setAttribute('id','overlay');
	objOverlay.onclick = function () {hideLightbox(); return false;}
	objOverlay.style.display = 'none';
	objOverlay.style.position = 'absolute';
	objOverlay.style.top = '0';
	objOverlay.style.left = '0';
	objOverlay.style.zIndex = '100';
	objOverlay.style.backgroundImage="url(/Themes/Default/en-us/Common/Public/inventory/images/overlay.png)";
 	objOverlay.style.width = '100%';
	objBody.insertBefore(objOverlay, objBody.firstChild);
	
	var arrayPageSize = getPageSize();
	var arrayPageScroll = getPageScroll();

	// preload and create loader image
	var imgPreloader = new Image();
	
	// if loader image found, create link to hide lightbox and create loadingimage
	imgPreloader.onload=function(){

		var objLoadingImageLink = document.createElement("a");
		objLoadingImageLink.setAttribute('href','#');
		objLoadingImageLink.onclick = function () {hideLightbox(); return false;}
		objOverlay.appendChild(objLoadingImageLink);
		
		var objLoadingImage = document.createElement("img");
		objLoadingImage.src = loadingImage;
		objLoadingImage.setAttribute('id','loadingImage');
		objLoadingImage.style.position = 'absolute';
		objLoadingImage.style.zIndex = '150';
		objLoadingImageLink.appendChild(objLoadingImage);

		imgPreloader.onload=function(){};	//	clear onLoad, as IE will flip out w/animated gifs

		return false;
	}

	imgPreloader.src = loadingImage;
	var objLightbox = document.getElementById('lightbox');

}

//
// addLoadEvent()
// Adds event to window.onload without overwriting currently assigned onload functions.
// Function found at Simon Willison's weblog - http://simon.incutio.com/
//
function addLoadEvent(func)
{	
	var oldonload = window.onload;
	if (typeof window.onload != 'function'){
    	window.onload = func;
	} else {
		window.onload = function(){
		oldonload();
		func();
		}
	}

}



addLoadEvent(initLightbox);	// run initLightbox onLoad
