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 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 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] ) {
            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 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>";
	for (i=0; i < myTranslator.length; i++) {
		if( myNextPortletVehicle == myTranslator[i][0] ) {
			myNextPortletVehicle = myTranslator[i][1];
		}
	}
	//alert("myNextPortletVehicle "+myNextPortletVehicle);
	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";	
	
	for (i=0; i < myTranslator.length; i++) {
		if( myNextPortletVehicle == myTranslator[i][1] ) {
			myNextPortletVehicle = myTranslator[i][0];
		}
	}								  
	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 (flyout_ids!=null && flyout_ids!="undefined"){
		for(i = 0; i < flyout_ids.length; i++){
			if(flyout_ids[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');
}