var PageCookieArray;
var skinSelected;
var skinsArray = new Array;
var myPortletArray = new Array();
var hideRX = /lid\=hide/g;
var showRX = /lid\=show/g;
//New function 12/18/07
var myNextPortletVehicle;
var PortletFunctions = new Object();

PortletFunctions = {
	nextVehicle: {
		portInit: function() {
			$('o-content-next-vehicle-msrp').style.visibility = "hidden";	
			$('o-content-next-vehicle-more-about').style.visibility = "hidden";
		}, 
		portRefresh: function() {
			setYourNextVehicle("refresh");
		},
		portClear: function() {
			$('o-inventory-lookup-data').style.visibility = "hidden";
		}
	}, 
	PACS: {
		portClear: function() {
        	$('o-parts-acs-default-state').setStyle('display','block');
        	$('o-parts-acs-dealer-state').setStyle('display','none');
		}
	}, 
	SandOperating: {
		portClear: function() {
        	$('o-dealer-service-dealer-state').setStyle('display','none');
        	$('o-dealer-service-default-state').setStyle('display','block');
		}
	},
	FindADealer: {
		portInit: function() {
			initFindMyDealerForm();
		},
		portBroadcast: function() {
		},
		portClear: function() {
			dealerInfo.clearPreferredDealerCookie();
		 	dealerInfo.id = '';
			Cookie.set('zipcode', '', {duration: 365, path: '/'});
    		dlocParams.zip = '';
			showModuleState("default");
			PortletFunctions.FindADealer.portInit();
			PortletFunctions.PACS.portClear();  
			PortletFunctions.SandOperating.portClear();
			PortletFunctions.nextVehicle.portClear();
			reloadMyDealerForm();  
		}
	}
}
function initFindMyDealerForm() {
      if(dealerInfo.id != null) {
		  //checkDealerLoaded(dealerInfo.id);
          populateMyDealer();
          $('o-my-vehicle-mast-title').setHTML("My Preferred Dealer");
          $('o-dealer-loc-dealer').setStyle('display','block');
      } else {
	 	//populateMyNextVehicle();
          if(loadOwnersCookies()) {
              $('o-my-vehicle-mast-title').setHTML("Dealers In My Area");
              $('o-dealer-loc-zip').setStyle('display','block');
              submitFindDealerKnownZip();
          } else {
              $('o-my-vehicle-mast-title').setHTML("Find A Dealer");
              $('o-dealer-loc-default').setStyle('display','block');
          }
      }
	 // PortletFunctions.nextVehicle.portRefresh();
}

function toggleDiv (divId, linkObj) {
  if (divId) {
    var curDiv = el(divId);
    if (curDiv.style.display == "none") {
      curDiv.style.display = "";
      el(linkObj).innerHTML = "Hide";
    }
    else {
      curDiv.style.display = "none";
      el(linkObj).innerHTML = "Show";
    }
  }
}

function serviceWarrantyLink(){
	//alert(omyVL.myWarrantyHref());
	flexWin(omyVL.myWarrantyHref(),'yes','527','600','warranty','');
}
function maintenanceSched(divElement){
	var myTarget = document.getElementById(divElement);
	if (omyVL.myFamily() == "") {
		if (myTarget.style.display == "none") {
			//no vehicle selected
			ownToggleElementClass('o-maint-sched-link','o-toggle-link-opened','o-toggle-link-closed');
			myTarget.style.display = "block";
			myTarget.innerHTML = "<span style='color:#dc000c'>To view, please select your current vehicle at the top left of the page.</span>";
		}else{
			ownToggleElementClass('o-maint-sched-link','o-toggle-link-opened','o-toggle-link-closed');
			myTarget.style.display = "none";
		}
	}else{
		if(myTarget.style.display == "block"){
			ownToggleElementClass('o-maint-sched-link','o-toggle-link-opened','o-toggle-link-closed');
			myTarget.style.display = "none";
		}
		//alert(omyVL.myScheduleHref());
		if (omyVL.myScheduleHref() == "") {
			//no manual exists
			popupMessageLayer(320,75,document.getElementById('o-popup-non-support').innerHTML);
		}else{
			//specs exists
			flexWin(omyVL.myScheduleHref(),'yes','800','600','schedule','');
		}
	}
					   
}
function manualLinksCheck (divElement){
	var myTarget = document.getElementById(divElement);
	if (omyVL.myFamily() == "") {
		if (myTarget.style.display == "none") {
			//no vehicle selected
			ownToggleElementClass('o-maint-sched-link','o-toggle-link-opened','o-toggle-link-closed');
			myTarget.style.display = "block";
			myTarget.innerHTML = "<span style='color:#dc000c'>To view, please select your current vehicle at the top left of the page.</span>";
		}else{
			ownToggleElementClass('o-maint-sched-link','o-toggle-link-opened','o-toggle-link-closed');
			myTarget.style.display = "none";
		}
	}else{
		if(myTarget.style.display == "block"){
			ownToggleElementClass('o-maint-sched-link','o-toggle-link-opened','o-toggle-link-closed');
			myTarget.style.display = "none";
		}
		if (omyVL.myManualHref() == "") {
			//no manual exists
			popupMessageLayer(320,75,document.getElementById('o-popup-non-support').innerHTML);
		}else{
			//manual exists
			window.location = omyVL.myManualHref();
		}
	}
}

function beginOwnersPage (){
	//initSkin(); // DELETE ME??
	document.write("<link href='/shared/styles/owners/"+Cookie.get("owners.skin")+".css' type='text/css' rel='stylesheet' />");
}
function initAboutMyVehiclePortlet() {
	loadXSL();
	oVL.getBrandOptList("mybrand");
	omyVL.init();
}

function toggleToolTip (myCaller, divId, jtooltip) {
	switch (divId.id){
		case "o-portlet-icon-help":
			divId.title="Find answers to your questions about this topic"
		break;
        default:
            //alert('custom tooltip');
  			switch (myCaller){
        		case "display":
            		divId.title=jtooltip;
       			break;
        		default:
            		//alert('unknown tooltip');
       			break;
			}
        break;
	}
}

function IsNumeric(sText) {
	var ValidChars = "0123456789.,";
	var IsNumber=true;
	var Char;
	
	for (i = 0; i < sText.length && IsNumber == true; i++) { 
  		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) {
			IsNumber = false;
			break;
	 	}
  	}	
	return IsNumber;   
}

// HIDE / SHOW MODULES
function togglePortlet (divId, controllerObj) {
  var targetController = $(controllerObj);
  var targetPortlet = $(divId);

  if (targetController.innerHTML == "Hide") {
    targetPortlet.style.display = "none";
    targetController.innerHTML = "Show";
    togglePortletLid (targetController, true);
  }  else {
    targetPortlet.style.display = "block";
    targetController.innerHTML = "Hide";
    togglePortletLid (targetController, false);
  }
}
function togglePortletOFF (divId, controllerObj) {
  if ($(controllerObj) != null) {
    $(divId).style.display = "none";
    $(controllerObj).innerHTML = "Show";
    togglePortletLid ($(controllerObj), true);
  }
}
function togglePortletON (divId, controllerObj) {	
  if ($(controllerObj) != null) {
    $(divId).style.display = "block";
    $(controllerObj).innerHTML = "Hide";
    togglePortletLid ($(controllerObj), false);
  }
}
function togglePortletLid (targetController, showIt) {
  if (showIt) {
    targetController.name = targetController.name.replace(hideRX,"lid\=show");
  } else {
    targetController.name = targetController.name.replace(showRX,"lid\=hide");
  }
}
function openPortletURL(portlet){
	var selInd = portlet.selectedIndex; 
	verifyURL(portlet.options[selInd].value);
}

function verifyURL(targetLink){
	for (i=0; i < argExternalLinks.length; i++) {
		if( targetLink == argExternalLinks[i][0] ) {
			//SEARCH REPL
			if(argExternalLinks[i][2] == 'yes' ) {
				doAPopUp(argExternalLinks[i][1],argExternalLinks[i][3],argExternalLinks[i][4],argExternalLinks[i][5],argExternalLinks[i][6]);
			}else{
				if(argExternalLinks[i][3] == 'yes' ) {
					location.href = '/en/owners/bounce.html?item='+escape(argExternalLinks[i][1]);
				}else{
					location.href = argExternalLinks[i][1];
				}
			}
			break;
		}
	}
}
function shopVURL(shopurl) {
	var shopFamily = document.getElementById('vehicles_dd').options[document.getElementById('vehicles_dd').selectedIndex].value;
	var shopVehicle = document.getElementById('vehicles_dd').options[document.getElementById('vehicles_dd').selectedIndex].value;
	var shopYear = '';
	var shopModel = 'undefined';
	var shopZip = '';
	
	location.href = shopurl + '&model=' + shopModel + '&zipcode=' + shopZip + '&year=' + shopYear + '&family=' + shopFamily + '&vehicle=' + shopVehicle;
}

function getContent (contentObjectID, contentType) {
	switch(contentType){
		case "input":
			var itsContent = document.getElementById(contentObjectID).value;
			switch(itsContent){
				case "Enter Zip Code":
				itsContent="";
				break;
			}
			return itsContent;
			//alert(itsContent);
		break;
	}
}
function getSavedValues(valueID){
	switch(valueID){
		case "savedZip":
			//alert(valueID+" = ");
		break;
		case "preferredDealer":
			//alert(valueID+" = ");
		break;
	}
}
function buildLink(parameter1,parameter2){
	return (parameter1+parameter2);
}

function setDLManual(callerID,callType){
	alert("setDLManual "+callerID+" "+callType);
}

function imageSwapIn(imgID,newSrc){
   var image = document.getElementById(imgID);
   var oldSrc = image.setAttribute('title',image.src);
   image.src = newSrc;
}
function imageSwapOut(imgID){
   var image = document.getElementById(imgID);
   var oldSrc = image.getAttribute('title');
   image.src = oldSrc;
   image.removeAttribute('title');
}


// DEALER ZIP SEARCH BOXES & MESSAGES
function toggleDealerSearch(searchBox) {
	if ($('o-'+ searchBox +'-wrapper').getStyle('display') == 'none') {
		$('o-'+ searchBox +'-link').className = 'o-toggle-link-opened';
		$('o-'+ searchBox +'-wrapper').setStyle('display', 'block');
		showDealerZip(searchBox);
	} else {
		closeDealerSearch(searchBox);	
	}
}
function closeDealerSearch(searchBox) {
	$('o-'+ searchBox +'-link').className = 'o-toggle-link-closed';
	$('o-'+ searchBox +'-wrapper').setStyle('display', 'none');
	hideDealerZip(searchBox);
	//hideDealerMessage(searchBox);
}
function showDealerZip(zipBox) {
	$('o-zip-'+zipBox).setStyle('display', 'block');
}
function hideDealerZip(zipBox) {
	$('o-zip-'+zipBox).setStyle('display', 'none');
}
function showDealerMessage(messageBox) {
	hideDealerZip(messageBox);
	$('o-message-'+messageBox).setStyle('display', 'block');	
}
function hideDealerMessage(messageBox) {
	$('o-message-'+messageBox).setStyle('display', 'none');
	showDealerZip(messageBox);
}


// OWNERS TOGGLE FUNCTIONS
function ownToggleDivElement(divElement) {
	if ($(divElement).getStyle('display') == 'none') {
		$(divElement).setStyle('display', 'block');	
	} else {
		$(divElement).setStyle('display', 'none');	
	}
}

function ownToggleElementClass(toggleElement, onState, offState) {	
	if ($(toggleElement).className == onState){
		$(toggleElement).className = offState;
	} else {
		$(toggleElement).className = onState;	
	}
}


// Inventory lookup for owners vehicles MB 12/17/07
//var myNextPortletVehicle;
function getInventoryCount(){
	if(myNextPortletVehicle!="" && vehicle_data!=null && vehicle_data!="undefined"){  
	var InvXML;
	var myVehicle_html = "<span>&nbsp;</span>";
	var inventory_url = "http://" + location.host + "/vehsuite/SearchInventory.jsp?"
									  + "dealerid=" + dealerInfo.id
									  + "&vehicle=" + vehicle_data[new Date().getFullYear()][myNextPortletVehicle].apps.trilogy
									  //+ "&encoding=xml&scope=vin";
									  + "&scope=vin";	
									  
	new Ajax(inventory_url, {method: 'get', onComplete: function(text, xml) {
																 InvXML=text;
																 InvXML = xmlParse(InvXML);
																 var x = InvXML.getElementsByTagName('Vehicle').length;
																 if(x >= 1){
																	 myVehicle_html = ('<span class="o-content-text-bold">'+x+'</span><span class="o-content-text"> '+glossary_label_similar_matches_available+' '+glossary_label_at+'</span> <a href="javascript:linkTrack(\'model_preferred_inventory\', \'dealer_website_' + dealerInfo.id + '\');wrap(\'ext_url\',\''+dealerInfo.domainName+'\', \'\', \'\');"  class="o-content-text">'+dealerInfo.name+'</a><br /><br />');
																}else{
																	myVehicle_html = ('<span class="o-content-text">Please visit or call the dealership</span> <a href="javascript:linkTrack(\'model_preferred_inventory\', \'dealer_website_' + dealerInfo.id + '\');wrap(\'ext_url\',\''+dealerInfo.domainName+'\', \'\', \'\');"  class="o-content-text">'+dealerInfo.name+'</a><br /><br />');
																}
																$('o-inventory-lookup-data').innerHTML = myVehicle_html;
														}
	}).request();
	}
}

function ownersInventoryLookup (){
	if (dealerInfo.id != null) {
		$('o-inventory-lookup-data').style.visibility = "visible";
		getInventoryCount();
	}else{
		$('o-inventory-lookup-data').style.visibility = "hidden";
	}
}
function showNextVehicleDataDivs(){	
	$('o-content-next-vehicle-msrp').style.visibility = "visible";	
	$('o-content-next-vehicle-more-about').style.visibility = "visible";
	ownersInventoryLookup();
}

// YOUR NEXT VEHICLE FUNCTIONS
// returns the flyout image used for a specific vehicle
function getVehicleFlyoutImage(vehicleID){
	myNextPortletVehicle = vehicleID; 
	var flyoutImage = '/en/owners/images/default_interested_vehicle.jpg'; // this is the default picture
	if (flyouts!=null && flyouts!="undefined"){ 
		for(i = 0; i < flyouts.length; i++){
			if(flyouts[i].id == vehicleID + "_flyout"){
				flyoutImage = flyout_img[i];
				break;
			}
		}
	}
    return flyoutImage;
}


// grab the link to the vehicle's homepage from the main nav
function getVehicleHomepagePath(vehicleID) {
	if(typeof($$('#vehicle_menu_container #'+ vehicleID +'')[0]) != "undefined") {		
		var vehicleHomepage = $$('#vehicle_menu_container #'+ vehicleID +'')[0].href;		
	} else {
		var vehicleHomepage = '#';	
	}
	return vehicleHomepage;
}
function setYourNextVehicle(selectList) {
	var vehicleID;
	if (selectList!="refresh" && selectList!= null && selectList!="undefined"){
		var selIndex = selectList.selectedIndex; 
		vehicleID = selectList.options[selIndex].value;
		Cookie.set('owners.nextvehicle', vehicleID, {duration: 365, path: "/"}); 
	}
	var myCookieReader = Cookie.get('owners.nextvehicle'); //added MB 12/17/07 
	vehicleID = myCookieReader; 
	
	if (vehicleID!="" && vehicleID != "undefined" && vehicleID != null){	
		if(typeof($$('#'+ vehicleID +'_flyout #starting_at_price')[0]) != "undefined") {
			var vehicleStartingAtPrice = $$('#'+ vehicleID +'_flyout #starting_at_price')[0].innerHTML;
			var vehicleName = $$('#'+ vehicleID +'_flyout h2')[0].innerHTML;
			if (IsNumeric(vehicleStartingAtPrice)) {
				vehicleStartingAtPrice = '$' + vehicleStartingAtPrice;
			}
		} else {
			var vehicleStartingAtPrice = 'See Dealer For Details';
			var vehicleName = $$('#'+ vehicleID +'_flyout h2')[0].innerHTML;
		}
		
		if(typeof($$('#'+ vehicleID +'_flyout #as_shown_price')[0]) != "undefined") {
			var vehicleAsShownPrice = $$('#'+ vehicleID +'_flyout #as_shown_price')[0].innerHTML;
			if (IsNumeric(vehicleAsShownPrice)) {
				vehicleAsShownPrice = '$' + vehicleAsShownPrice;
			}
		} else {
			var vehicleAsShownPrice = 'See Dealer For Details';
		}
		
		var vehicleImage = getVehicleFlyoutImage(vehicleID);
		var vehicleHomepage = getVehicleHomepagePath(vehicleID);
		
		$('o-next-vehicle-vehicle_name').innerHTML = vehicleName;
		$('o-next-vehicle-msrp_start').innerHTML = vehicleStartingAtPrice;
		$('o-next-vehicle-msrp_shown').innerHTML = vehicleAsShownPrice;
		$('o-next-vehicle-vehicle-image').src = vehicleImage;
		$('o-next-vehicle-vehicle-homepage').href = vehicleHomepage;
		showNextVehicleDataDivs();
    //	alert(' VehicleID ' + vehicleID + ' = ' + vehicleStartingAtPrice + ' ' + vehicleAsShownPrice + ' ' + vehicleImage);
	}else{
		$('o-content-next-vehicle-msrp').style.visibility = "hidden";	
		$('o-content-next-vehicle-more-about').style.visibility = "hidden";
		$('o-inventory-lookup-data').style.visibility = "hidden";
    	//alert(' Unknown ' + vehicleID + ' = ' + vehicleStartingAtPrice + ' ' + vehicleAsShownPrice + ' ' + vehicleImage);
	}
}

// SKIN SWITCHING
/*
function getSelected(){
	return skinSelected
}
function setSelected(myValue){
	skinSelected = myValue;
}
function setSkin(){
	//var result = setCookie("owners.skin",getSelected(), "36500000", "/", "", false);
	var result = Cookie.set('owners.skin', getSelected(), {path:'/'},{duration: 365});
	//var myholdarray2 = Json.toString([0,0,1,1,[3,4,5,6]]);
	//var myNewArray = Json.evaluate(myholdarray2);
	//alert(myNewArray[4][2]);
	return true
}	
function initSkin(){
	var currentValue = Cookie.get("owners.skin");
	if(!currentValue){
		setSelected("skin1");
		var result = setSkin();
	}
	setSelected(currentValue);
}
function updateSkin(){
	var currentValue = Cookie.get("owners.skin");
	if(!currentValue){
		initSkin();
	}
	setSelected(Cookie.get("owners.skin"));
	for (y=0;y<skinsArray.length;y++){
		if(skinsArray[y].target.id==skinSelected){
			document.getElementById(skinSelected).src = skinsArray[y].on;
		}else{
			skinsArray[y].target.src=skinsArray[y].off;
		}
	}
}
function swapSkinIcon(target,operation,operationParameters){
	//alert(target.id+" "+operation+" "+operationParameters);
	switch(operation){
		case "register":
			skinsArray.push({"target":document.getElementById(target), "skin": target,"off": operationParameters[0], "on": operationParameters[1], "over": operationParameters[2]});
			break;
		case "over":
			for (x=0;x<skinsArray.length;x++){
				if(skinsArray[x].target==target){
					skinsArray[x].target.src=skinsArray[x].over;
					break;
				}
			}
			break;
		case "out":	
			for (x=0;x<skinsArray.length;x++){
				if(skinsArray[x].target.id==skinSelected){
					skinsArray[x].target.src=skinsArray[x].on;
				}else{
					skinsArray[x].target.src=skinsArray[x].off;
				}
			}
			break;
		case "on":
			setSelected(target.id);
			var result = setSkin();
			location.reload();
			break;
	}	
}
*/


// OBSOLETE ?? -- Still used on the about my vehicle, vehicle specs link
function toggleLink (portletID,callerObject, targetObject) {
      document.getElementById(callerObject).style.display = "none";
      document.getElementById(targetObject).style.display = "block";
	  //alert('porlet_functions.js toggleLink is still used');
}
function swapDisplayContent (swapObject1, swapObject2) {
      document.getElementById(swapObject1).style.display = "none";
      document.getElementById(swapObject2).style.display = "block";
	  //alert('porlet_functions.js swapDisplayContent is still used');
}