// Global Variables
var OPTIONS = ["Vehicles","Inventory","Dealers"];
var ENCLOSE = ["(",")"];
var IMG_EXTENSION  =  ".gif";
var BRAND  ="pontiac";
var BRAND_ID  ="pg";
var msrpsLT = new Array();
var msrps = new Array();
var cacheDealersPage = new Array();
var pvcMsrpsLT = new Array();
var pvcMsrps = new Array();
var debug = false;
var WIDGET = undefined;
var BASE_CONTEXT_LOCAL = BASE_CONTEXT;
var VEHICLE = 0;
var INVENTORY = 1;
var DEALER = 2;
var clickOnSavedInfo = 0;

var byoLinks = new Array();
byoLinks["vibe2010"] = new Array('/vibe/build-your-own/');
byoLinks["g52009"] = new Array('/g5-2009/build-your-own/');
byoLinks["g6sedan2009"] = new Array('/g6-sedan-2009/build-your-own/');
byoLinks["newg6sedan"] = new Array('/g6-sedan/build-your-own/');
byoLinks["g6coupe2009"] = new Array('/g6-coupe-2009/build-your-own/');
byoLinks["newg6coupe"] = new Array('/g6-coupe/build-your-own/');
byoLinks["g6convertible2009"] = new Array('/g6-convertible-2009/build-your-own/');
byoLinks["newg6convertible"] = new Array('/g6-convertible/build-your-own/');
byoLinks["g82009"] = new Array('/g8-2009/build-your-own/');
byoLinks["solstice2009"] = new Array('/solstice-2009/build-your-own/');
byoLinks["torrent2009"] = new Array('/torrent-2009/build-your-own/');
byoLinks["vibe2009"] = new Array('/vibe-2009/build-your-own/');
byoLinks["g32009"] = new Array('/g3/build-your-own/');
byoLinks["g52008"] = new Array('/g5-2008/build-your-own/');
byoLinks["g6sedan2008"] = new Array('/g6-sedan-2008/build-your-own/');
byoLinks["g6coupe2008"] = new Array('/g6-coupe-2008/build-your-own/');
byoLinks["g6convertible2008"] = new Array('/g6-convertible-2008/build-your-own/');
byoLinks["g82008"] = new Array('/g8-2008/build-your-own/');
byoLinks["solstice2008"] = new Array('/solstice-2008/build-your-own/');
byoLinks["torrent2008"] = new Array('/torrent-2008/build-your-own/');
byoLinks["vibe2008"] = new Array('/vibe-2008/build-your-own/');
byoLinks["grandprix"] = new Array('/grand-prix/build-your-own/');



String.prototype.replaceAll = function(findstring, newstring)  {
    var newval = this;
    while(newval.indexOf(findstring) >= 0){
        newval = newval.replace(findstring, newstring);
    }
    return newval;
}

var NODEALERS_MESSAGE = "<p class='noDealer'>No dealers have been saved.</p>";

/******************************************HTML TEMPLATES**********************************************/

/*var VEHICLE_HTML = "<li><div><img src='$image' alt='' width='126' height='80' style='z-index=-1;' onError='javascript:setDefaultImage(this);' $moLink'/>"+
"<ul><a href=\"javascript:removeVehicle('$remVEH');\" class='removeItem'></a><li>$year $brand</li> <li class='model'>$model</li>"+
"<li>MSRP(1):</li><li class='msrp'>$$msrp1-$$msrp2</li></ul>"+
"<a class='btnByo_off' href='$byoLink'></a> </div></li>";

var INVENTORY_HTML = "<li><div><img src='$image' alt='' width='126' height='80' style='z-index=-1;' onError='javascript:setDefaultImage(this);' $wsLink />"+
"<ul><a href=\"javascript:removeInventory('$remINV');\" class='removeItem'></a><li>$year $brand</li><li class='model'>$model</li>"+
"<li class='msrpBig'><span class='grayText'>MSRP</span>$msrp1*</li></ul>"+
"<a class='btnRaq_off' href='$raqLink'></a> </div></li>";

var UNAVAILABLE_INV_HTML = "<li><div><img src='"+BASE_CONTEXT_LOCAL+"/content/en/images/saveInfo/car.jpg"+"' alt='' width='126' height='80' style='z-index=-1;' onError='javascript:setDefaultImage(this);'/>"+
"<ul><a href=\"javascript:removeInventory('$remINV');\" class='removeItem'></a><li style='color:red;'>No longer available</li><li>$year $brand</li><li class='model'>$model</li><li class='vin'>VIN: $vin</li>"+
"</ul></div></li>";

var DEALER_HTML = "<li><div class='dlDiv'><h2><a href=\"javascript:showDealerPage('$bac');\">$name</a></h2>"+
"<a href=\"javascript:removeDealer('$remD');\" class=\"removeItem\"></a><ul><li>$name</li><li>$city, $state, $zip</li><li>$phone<li><li><br /><a href=\"javascript:showMap('$bac')\">Map &amp;  Directions</a></li></ul>"+
"<ul><li><strong>Certified Internet</strong></li><li><strong>Manager:</strong></li><li>$manager</li></ul>"+
"<a href='$searchInvLink' class='inventory_off'></a> <a href='$contactDlLink' class='searchDealer'>Contact Dealer </a></div></li>";

*/

var VEHICLE_HTML =  '<li> <div> <img src="$image" alt="" width="126" height="80" style="z-index=-1;" onError="javascript:setDefaultImage(this);" onclick="showLink(\'$moLink\');"/> <ul><a href="javascript:void(0);" onclick="javascript:removeVehicle(\'$remVEH\');return false;" class="removeItem" title="Remove this item"></a> <li>$year $brand</li> <li class="model">$model</li> <li>MSRP(1):</li> <li class="msrp">$$msrp1-$$msrp2</li> </ul> <a class="btnByo_off" onmouseover=" Over(this);" onmouseout="Out(this);" href="$byoLink"></a> </div></li>';
var INVENTORY_HTML = '<li> <div> <img src="$image" alt="" width="126" height="80" style="z-index=-1;" onerror="setDefaultImage(this);" onclick="showLink(\'$wsLink\');"/> <ul> <a href="" onclick="javascript:removeInventory(\'$remINV\');return false;" class="removeItem" title="Remove this item"></a> <li>$year $brand</li> <li class="model">$model</li> <li class="msrpBig"><span class="grayText">MSRP</span>$msrp1<sup class="supIndex">1</sup></li> </ul> <a class="btnRaq_off" onmouseover="Over(this);" onmouseout="Out(this);" href="$raqLink"></a> </div></li>';
var DEALER_HTML = '<li> <div class="dlDiv"> <h2><a title="$name" href="" onclick="javascript:showDealerPage(\'$bac\');return false;">$shortname</a></h2> <a href="" onclick="javascript:removeDealer(\'$remD\');return false;" class="removeItem" title="Remove this item"></a> <ul> <li>$address</li><li>$city, $state, $zip</li> <li>$phone<li> <li><br /><a href="" onclick="javascript:showMap(\'$bac\');return false;">Map &amp; Directions</a></li> </ul> <ul> <li><strong>Certified Internet</strong></li> <li><strong>Manager:</strong></li> <li>$manager</li> </ul> <a href="$searchInvLink" class="inventory_off" onmouseover="Over(this);" onmouseout="Out(this);"></a> <a href="$contactDlLink" class="searchDealer">Request a Quote</a> </div></li>';
var UNAVAILABLE_INV_HTML = "<li><div><img src='"+BASE_CONTEXT_LOCAL+"/content/en/images/saveInfo/car.jpg"+"' alt='' width='126' height='80' style='z-index=-1;' onError='javascript:setDefaultImage(this);'/>"+
"<ul><a href=\"javascript:removeInventory('$remINV');\" class='removeItem'></a><li style='color:red;'>No longer available</li><li>$year $brand</li><li class='model'>$model</li><li class='vin'>VIN: $vin</li>"+
"</ul></div></li>";


/****************************************  LINKS TEMPLATE **********************************************/

var MO_LINK  = "showModelOverview$model.do";
//var BYO_LINK  = "vehicles/$model/build.do";
var COMPARE_LINK  = "compare-vehicles-results/?anchorVehicleYear=$year&anchorVehicleID=$pvc&anchorVehicleName=&comparisonVehicles=$otherIds&aS3_LanguageCode=7&AS3_ClientID=Pontiac";


var WIN_ST_LINK = "wssearch.do?year=$year&makeId=$brandId&VIN=$vin&RPOList=";
var RAQ_LINK = "getRAQSelectedVehicle.do?scratchListId=$styleId|4534534545&filePathAndName=c:&orderavailability=Retail&userId=GMBP&regionId=30&colorConfigPage=false&modelId=$modelId&postalCode=$zip&unitMeasure=MILES&proximity=25&desiredCount=3&webSiteId=pg&vendorId=$bac&selectingDealer=false&selectingVehicle=false&dealerRelativeDistance=0&OperationCode=0";

//var MAP_LINK = "showmappoint.do?latitude=$lat&longitude=$long&pushPinLabel=here&pushPinIcon=50&panHorz=0&panVert=0";
var MAP_LINK = "dealerLocatorSearchDetails.do?latitude=$lat&longitude=$long&panVert=0.0&panHorz=0.0&width=375&height=375&zoom=03&pushPinLabel=Dealer&pushPinIcon=50&webSiteId=$webId&dealer.vendorId=$bac&dealer.name=$name&dealer.distance=$dist&dealer.street=$address&dealer.city=$city&dealer.regionCode=$state&dealer.postalcode=$zip&dealer.postalcode4=&dealer.bpManagerName=$manager&dealer.bpPhoneNumber=$phone&dealer.bpPhoneAreaCode=$phArea&dealer.bpFaxNumber=$fax&dealer.bpFaxAreaCode=$faxArea&dealer.url=$url";
var CONTACT_DL_LINK = "getRAQSelectedVehicle.do?scratchListId=289062|4534534545&filePathAndName=c:&orderavailability=Retail&userId=GMBP&regionId=30&colorConfigPage=false&modelId=16946&postalCode=$zip&unitMeasure=MILES&proximity=25&desiredCount=3&webSiteId=pg&vendorId=$bac&selectingDealer=false&selectingVehicle=true&dealerRelativeDistance=10&OperationCode=0";
var SEARCHINV_DL_LINK = "showSelectVehicle.do?searchType=4&vendorId=$bac&maximumCount=15";

/****************************************  LINKS GENERATION **********************************************/

function getContactDealerLink(bac,zip)
{
    var html  = CONTACT_DL_LINK;
    html = html.replaceAll("$bac",bac);
    html = html.replaceAll("$zip",zip);
    result = BASE_CONTEXT_LOCAL+"/"+html;
    return result;
}

//$lat  $long  $webId $bac $distance $address $city $state $zip $phone $phArea $fax $faxArea $url

function getMAPLink(coordinates,dealer)
{
    var result = "";
    var webid = BRAND_ID;
    var url = "";

    if(coordinates.length==2)
    {
        var html  = MAP_LINK;
        html = html.replaceAll("$lat",coordinates[0]);
        html = 	html.replaceAll("$long",coordinates[1]);
        html = 	html.replaceAll("$webId",webid);
        html = 	html.replaceAll("$bac",dealer.bac);
        html = 	html.replaceAll("$name",dealer.name);
        html = 	html.replaceAll("$manager",dealer.manager);
        html = 	html.replaceAll("$dist",0);
        html = 	html.replaceAll("$address",dealer.address.address);
        html = 	html.replaceAll("$city",dealer.address.city);
        html = 	html.replaceAll("$state",dealer.address.state);
        html = 	html.replaceAll("$zip",dealer.address.zip);
        html = 	html.replaceAll("$phone",dealer.address.phone);
        html = 	html.replaceAll("$phArea","");
        html = 	html.replaceAll("$faxArea","");
        html = 	html.replaceAll("$fax","");
        html = 	html.replaceAll("$url",cacheDealersPage[dealer.bac]);
        result = BASE_CONTEXT_LOCAL+"/"+html;
    }
    return result;
}

function getRAQLink(styleId,modelId,zip,bac)
{
    var html  = RAQ_LINK;
    html = html.replaceAll("$styleId",styleId);
    html = 	html.replaceAll("$modelId",modelId);
    html = 	html.replaceAll("$zip",zip);
    html = 	html.replaceAll("$bac",bac);
    return BASE_CONTEXT_LOCAL+"/"+html;
}

function getSearchInvLink(bac)
{
    var html  = SEARCHINV_DL_LINK;
    html = html.replaceAll("$bac",bac);
    return BASE_CONTEXT_LOCAL+"/"+html;
}

function getWinStLink(brandId,year,vin,pvc)
{
    var html  = WIN_ST_LINK;
    html = html.replaceAll("$brandId",brandId);
    html = 	html.replaceAll("$year",year);
    html = 	html.replaceAll("$vin",vin);
    return BASE_CONTEXT_LOCAL+"/"+html;
}

function getMOLink(model,year)
{//"showModelOverview$model.do"
    var html  = MO_LINK;
    model = model.replaceAll(" ","");
    //alert(model);//GrandPrix
    if(model == "G3"){
    	html = html.replaceAll("$model",model);
    }else if(model == "NEWG6Sedan" || model == "NEWG6Coupe" || model == "NEWG6Convertible"){
    	model = model.replaceAll("NEW","");
		html = html.replaceAll("$model",model);
    }else if(model == "GrandPrix"){
    	html = "grand-prix/"
    }else{
		html = html.replaceAll("$model",model+"-"+year);
	}
    return BASE_CONTEXT_LOCAL+"/"+html;
}

function getBYOLink(model,year)
{
    //var html  = BYO_LINK;
    model = model.replaceAll(" ","");
    //html = 	html.replaceAll("$model",model.toLowerCase());
    //return BASE_CONTEXT_LOCAL+"/"+html;
	model =  model.toLowerCase();
	if (model == "grandprix" || model == "newg6sedan" || model == "newg6coupe" || model == "newg6convertible"){
		var request = model;
	}else{
		var request = model + year;
	}
	var html = byoLinks[request];
	return BASE_CONTEXT_LOCAL+html;
}


function getCompareLink(allVehicles)
{
    var returnVal = "";
    if(allVehicles.length>1)
    {
        var firstV = allVehicles[0];
        var html  = COMPARE_LINK;
        var	model = firstV.model.toLowerCase();
        model = model.replaceAll(" ","");
        html = 	html.replaceAll("$year",firstV.year);
        html = 	html.replaceAll("$nmodel",model);
        html = 	html.replaceAll("$pvc",firstV.pvc);
        html = 	html.replaceAll("$modelId",firstV.modelId);
        var ids = "";
        for(var i=1;i<allVehicles.length;i++)
        {
                var ve = allVehicles[i];
                var styleId = "A"+ve.polkId;
                if(ids=="")
                        ids = styleId;
                else
                        ids = ids +"%5E"+styleId;
        }
        html = 	html.replaceAll("$otherIds",ids);
        returnVal =  html;
    }
    return returnVal;
    }

/******************************************HTML TILE GENERATORS**********************************************/

function getVehicleHtml(modelId,image,year,brand,model)
{
    var html  = VEHICLE_HTML;
    html = html.replaceAll("$modelId",modelId);
    html = 	html.replace("$remVEH",modelId+year);
    html = html.replaceAll("$image",image);
    html = 	html.replaceAll("$year",year);
    html = 	html.replaceAll("$brand",brand);
    html = 	html.replaceAll("$model",model);
    var msrptext = getMsrpRange(year,modelId);
    var list  = msrptext.split("::");
    var msrp1 = list[0];
    var msrp2 = list[1];
    html = 	html.replaceAll("$msrp1",msrp1);
    if(msrp1 < msrp2){
    	html = 	html.replaceAll("$msrp2",msrp2);
    }else{
    	html = html.replaceAll("-$$msrp2","");
    }
    html = 	html.replaceAll("$byoLink",getBYOLink(model,year));
    //var molink =  "onclick=\"showLink('"+getMOLink(model)+"');\"";
    var molink =  getMOLink(model,year);
    html = 	html.replaceAll("$moLink",molink);
    return html;
}

function getInventoryHtml(vin,pvc,modelId,image,year,brand,model)
{
    var html = "";
    var vL = getVehicleInfo(vin,pvc,year);
    if(vL.length>0)
    {
        html  = INVENTORY_HTML;
        html = html.replaceAll("$modelId",modelId);
        html = html.replaceAll("$image",image);
        html = 	html.replaceAll("$year",year);
        html = 	html.replaceAll("$brand",brand);
        html = 	html.replaceAll("$model",model);
        var msrp = getMsrp(year,pvc);
        html = 	html.replaceAll("$msrp1",msrp);
        html = 	html.replaceAll("$vin",vin);
        html = 	html.replace("$remINV",vin);
        //var wslink =  "onclick=\"showLink('"+getWinStLink(BRAND_ID,year,vin,pvc)+"');\"";
        var wslink = getWinStLink(BRAND_ID,year,vin,pvc);
        html = 	html.replace("$wsLink",wslink);

        var raqLink = "";
        if(vL.length==3)
            raqLink = getRAQLink(vL[0],modelId,vL[2],vL[1]);
        html = 	html.replace("$raqLink",raqLink);
    }
    else
    {
        html=UNAVAILABLE_INV_HTML.replaceAll("$vin",vin);
        html=html.replaceAll("$remINV",vin);
        html = 	html.replaceAll("$year",year);
        html = 	html.replaceAll("$brand",brand);
        html = 	html.replaceAll("$model",model);
    }
    return html;
}

function getDealersHtml(bac,name,address,manager)
{
    var html  = DEALER_HTML;
    var shortname = name;
    if(name.length > 30)
           shortname = name.substr(0,28) + "..";
    html = html.replaceAll("$shortname",shortname);
    html = html.replaceAll("$name",name);
    html = 	html.replaceAll("$manager",manager);
    html = 	html.replaceAll("$address",address.address);
    html = 	html.replaceAll("$city",address.city);
    html = 	html.replaceAll("$state",address.state);
    html = 	html.replaceAll("$zip",address.zip);
    html = 	html.replaceAll("$phone",address.phone);
    html = 	html.replace("$remD",bac);
    html = 	html.replaceAll("$bac",bac);
    html = 	html.replace("$searchInvLink",getSearchInvLink(bac));
    html = 	html.replace("$contactDlLink",getContactDealerLink(bac,address.zip));
    return html;
}

/****************************************** UTILITY **********************************************/

function getImageName(year,model)
{
    var fn = model.toLowerCase();
    fn  =  fn.replace(/ /g,"_");
    var res = year+"_"+BRAND+"_"+fn+IMG_EXTENSION;
    return res;
}
//P81_2008_pontiac_g5_base_34U.gif

function getImageNameInv(modelId,year,model,color)
{
    var fn = model.toLowerCase();
    fn  =  fn.replace(/ /g,"_");
    var res = "P81_"+year+"_"+BRAND+"_"+fn+"_"+color+IMG_EXTENSION;
    return res;
}

function getAccordionTabTitle(op,content,max)
{
    return "My "+OPTIONS[op]+" "+ENCLOSE[0]+content+" of "+max+ENCLOSE[1];
}

function getTabTitle(op,content)
{
    return OPTIONS[op]+" "+ENCLOSE[0]+content+ENCLOSE[1];
}

function setDefaultImage(element)
{
	element.src  = BASE_CONTEXT_LOCAL+"/content/en/images/saveInfo/car.jpg";
}
/******************************************USER INTERFACE**********************************************/

function hideElement(id)
{
    var elem = $(id);
    elem.style.display = 'none';
}

function showElement(id)
{
    var elem = $(id);
    elem.style.display = 'block';
}

function showSaveInfo()
{
    showInfo = document.getElementById('savedInfo');
    showInfo.style.display = 'block';
}

function hideSaveInfo()
{
    showInfo = document.getElementById('savedInfo');
    showInfo.style.display = 'none';
}

function isOpened()
{
    showInfo = document.getElementById('savedInfo');
    if(showInfo.style.display == 'none' || showInfo.style.display == '' )
    {
            return false;
    }
    else
            return true;
}

function toggleSaveInfo()
{
    showInfo = document.getElementById('savedInfo');
    if(showInfo.style.display == 'none' || showInfo.style.display == '' )
    {
            /*initWidget();
            showInfo.style.display = 'block';
            WIDGET.showSection(VEHICLE);*/
            showSaveInfoWin();
			onClickOnSavedInfo();
    }else{
            showInfo.style.display = 'none';
	}
}

function showSaveInfoWin()
{

	lastSaved = getLastSaved();
    showInfo = document.getElementById("savedInfo");
    initWidget();
    showInfo.style.display = "block";
    if(lastSaved!=DEALER)
    {
        showSITabInfo(document.getElementById('msiOption1'));
        if(WIDGET!=null)
            WIDGET.showSection(lastSaved);
    }
    else
       showSITabInfo(document.getElementById('msiOption2'));
}

function loadAll(){
    try{
            WIDGET = new MultipleOpenAccordion($$('.msiClosedItem'), $$('.msiTheItem'), {
              allowMultipleOpen:false,openAll: false,wait:true,duration:0,firstElementsOpen:[]
            });
    }catch(err){}
}


/******************************************WIDGET LOGIC**********************************************/


function initWidget()
{
    var items  = new SaveMyInfoUtils();
    var vehC = items.countMyVehicles();
    var invC = items.countMyInventory();
    var dealersC = items.countDealers();
    if((vehC+invC)>0)
    {
        hideElement('msiText');
        if(vehC>0)
        {
            loadVehiclesData();
            showElement('vehiclesDiv');
            if(vehC>1)
                    showElement('btnCompare');
            else
                    hideElement('btnCompare');
        }
        else
        {
            $("vehiclesList").innerHTML = "";
            hideElement('vehiclesDiv');
        }

        if(invC>0)
        {
            loadInventoriesData();
            showElement('inventoryDiv');
        }
        else
        {
            $("inventoryList").innerHTML = "";
            hideElement('inventoryDiv');
        }

    }
    else
    {
        showElement('msiText');
        $("vehiclesList").innerHTML = "";
        $("inventoryList").innerHTML = "";
        hideElement('inventoryDiv');
        hideElement('vehiclesDiv');
        loadAll();
    }

    if(dealersC>0)
    {
        loadDealersData();
        showElement('dealersDiv');
    }
    else
    {
        $("dealersList").innerHTML = NODEALERS_MESSAGE;
    }
}

function loadVehiclesData()
{
    var html = "";
    var utils  = new SaveMyInfoUtils();
    var list =	utils.getMyVehicles();
    for(i=0;i<list.length;i++)
    {
            var veh = list[i];
            var img = BASE_CONTEXT_LOCAL+"/content/en/images/saveInfo/"+getImageName(veh.year,veh.model);
            if(veh!= null && veh != "")
            html = html + getVehicleHtml(veh.modelId,img,veh.year,veh.brand,veh.model);
    }
    $("vehiclesList").innerHTML = html;
}

function loadInventoriesData()
{
    var htmlInv = "";
    var utils  = new SaveMyInfoUtils();
    list =	utils.getMyInventory();
    for(i=0;i<list.length;i++)
    {
            var inv = list[i];
            if(inv!= null && inv != "")
            {
                    var img = BASE_CONTEXT_LOCAL+"/content/en/images/saveInfo/"+inv.year+"/81/"+getImageNameInv(inv.modelId,inv.year,inv.model,inv.color);
                    htmlInv = htmlInv + getInventoryHtml(inv.vin,inv.pvc,inv.modelId,img,inv.year,inv.brand,inv.model);
            }

    }
    $("inventoryList").innerHTML = htmlInv;
}

function loadDealersData()
{
    var htmlD = "";
    var utils  = new SaveMyInfoUtils();
    list =	utils.getMyDealers();
    for(i=0;i<list.length;i++)
    {
            var dealer = list[i];
            if(dealer!= null && dealer != "")
            htmlD = htmlD + getDealersHtml(dealer.bac,dealer.name,dealer.address,dealer.manager);

    }
    $("dealersList").innerHTML = htmlD;
}

/******************************************WIDGET BUTTONS CALLS***************************************/

function showAllVehicles()
{
    var link = BASE_CONTEXT_LOCAL+"/showViewAllVehicles.do";
    window.location.href=link;
}

function showLink(myLink)
{
    window.location.href=myLink;
}

function showComparator()
{
    var link = "";
    var util = new SaveMyInfoUtils();
    var allVehicles = util.getMyVehicles();
    var compareLink = getCompareLink(allVehicles);
    if(""!=compareLink)
    {
            link = BASE_CONTEXT_LOCAL+"/"+compareLink;
    }
    window.location.href=link;
}

function showDealerPage(bac)
{
    var html = getDealerPage(bac);
    if(""!=html && "null" != html)
    PositionedWin(html,800,600,'resizable=1','dealerPage');
}

function showMap(bac)
{
    var util = new SaveMyInfoUtils();
    var dealers = util.getMyDealers ();
    for(var i=0;i<dealers.length;i++)
    {
        var dealer = dealers[i];
        if(dealer.bac==bac)
        {
            var url = getMAPLink(getDLLocations(bac),dealer);
            //PositionedWin(getMAPLink(getDLLocations(bac),dealer),800,600,'resizable=1','dealerMAPPage');
            if(url!= "" && url!=null)
                window.location.replace(url);
            break;
        }
    }
}

function printVersion()
{
        var html = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>My Saved Information (Print Version)</title><style type="text/css"><!--#mainContent{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; color:#FFFFFF;}#itemsDiv{ position:relative; left:20px; top:35px;}.msiTitle { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 15px; font-weight: bold; color: #FFFFFF;}.msiItemTitle { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; font-weight: bold; color: #FFFFFF; background-repeat: repeat; background-position: left; width: 800px; border: 1px solid #000000; position:relative; top:20px;}.mstPVTitlte { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9px; color: #999999; text-decoration: underline; position:absolute; top:18px; left:600px;}.info { position:relative; top:20px;}.printTag { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; color: #0099CC; left: 617px; top: 18px; position:absolute;}body { background-color: #000000;}#itemsDiv div ul,p { position:relative; top:10px; }--></style></head><body><div id="mainContent"><div id="titleDiv"> <p><span class="msiTitle">MY SAVED INFORMATION </span></p> <img src="$printImg" class="mstPVTitlte" > <a class="printTag" href="" onclick="javascript:window.print();">Print</a> </div> <div id="itemsDiv"> <div class=\'info\'> <h1 class="msiItemTitle">Saved Vehicles</h1> $vehicles </div> <div class=\'info\'> <h1 class="msiItemTitle">Saved Inventory </h1> $inventory </div> <div class=\'info\'> <h1 class="msiItemTitle">Saved Dealers</h1> $dealers </div> </div></div></body></html>';
        //var htmlV = $("vehiclesList").innerHTML;
        //var htmlI = $("inventoryList").innerHTML;
        //var htmlD = $("dealersList").innerHTML;
        var htmlV = "";
        var htmlI = "";
        var htmlD = "";

        var util = new SaveMyInfoUtils();

        var vehicles = util.getMyVehicles();

        for(var i=0;i<vehicles.length;i++)
        {
            var vHtml = "<ul>";
            var vO = vehicles[i];
            vHtml = vHtml + "<img src='"+BASE_CONTEXT_LOCAL+"/content/en/images/saveInfo/"+getImageName(vO.year,vO.model)+"' />";
            vHtml = vHtml + "<li> Brand: "+vO.brand+"</li>";
            vHtml = vHtml + "<li> Model : "+vO.year+" "+vO.model+"</li>";
            vHtml = vHtml + "<li> MSRPS : "+msrps[vO.year+vO.modelId].replaceAll("::","-")+"</li>";
            vHtml = vHtml + "</ul>"
            htmlV = htmlV + vHtml;
        }
        if(vehicles.length==0)
            htmlV = "<p style='position:relative;left:20px;'>No vehicles have been saved</p>";


        var inventory = util.getMyInventory();

         for(var i=0;i<inventory.length;i++)
        {
            var vHtml = "<ul>";
            var vO = inventory[i];
            vHtml = vHtml + "<img src='"+BASE_CONTEXT_LOCAL+"/content/en/images/saveInfo/"+vO.year+"/81/"+getImageNameInv(vO.modelId,vO.year,vO.model,vO.color)+"' />";
            vHtml= vHtml + "<li> Brand: "+vO.brand+"</li>";
            vHtml = vHtml + "<li> Model : "+vO.year+" "+vO.model+"</li>";
            vHtml = vHtml + "<li> MSRP : "+pvcMsrps[vO.year+vO.pvc]+"</li>";
            vHtml = vHtml + "<li> VIN : "+vO.vin+"</li>";
            vHtml = vHtml + "</ul>"
            htmlI = htmlI + vHtml;
        }
        if(inventory.length==0)
            htmlI = "<p style='position:relative;left:20px;'>No inventory have been saved</p>";


        var dealers = util.getMyDealers();

         for(var i=0;i<dealers.length;i++)
        {
            var vHtml = "<ul>";
            var vO = dealers[i];
            vHtml = vHtml + "<li> Dealer: "+vO.name+"</li>";
            vHtml = vHtml + "<li> Address : "+vO.address.address+","+vO.address.city+","+vO.address.state+" "+vO.address.zip+". </li>";
			vHtml = vHtml + "<li> Phone : "+vO.address.phone+"</li>";
			vHtml = vHtml + "<li> Manager : "+vO.manager+"</li>";
            vHtml = vHtml + "</ul>"
            htmlD = htmlD + vHtml;
        }
        if(dealers.length==0)
            htmlD = "<p style='position:relative;left:20px;' >No dealers have been saved</p>";

        html = html.replace("$vehicles",htmlV);
        html = html.replace("$inventory",htmlI);
        html = html.replace("$dealers",htmlD);
        html = html.replace("$printImg",BASE_CONTEXT_LOCAL+"/content/en/images/print_icon.gif");
	HCPositionedWin(800,600,"savedInfoPV",html);
        /*if(document.all) {
            var frame = document.getElementById("hiddenFramePV");
            frame.document.write(html);
            frame.document.close();
            frame.print();
        } else if(document.getElementById) {
            document.getElementById("hiddenFramePV").contentDocument.write(html);
            document.getElementById("hiddenFramePV").contentDocument.close();
            document.getElementById("hiddenFramePV").contentWindow.print();
    }*/

}

/******************************************DATA RETRIEVAL**********************************************/

function getMsrpRange(year,modelId) {
    //do request
    var dat = new Date();
    var time = dat.getTime();
    var result = "";
    if(msrpsLT[year+modelId] == undefined || (time-msrpsLT[year+modelId])>100000)
    {
        var request = getRequest();
        try{
            request.open("get",  BASE_CONTEXT_LOCAL + "/getMsrpRange.do?modelId="+modelId+"&year="+year, false);
            request.send(null);
            result = request.responseText;
            if(result.length>25)
                result="N/A*";
            msrps[year+modelId]  = result;
        }catch(err)
        {
            msrps[year+modelId]  = "N/A";
        }
        msrpsLT[year+modelId]  = dat.getTime();
    }
    else
    {
        result = msrps[year+modelId];
    }
    return result;
}

function getMsrp(year,pvc) {
    //do request
    var dat = new Date();
    var time = dat.getTime();
    var result = "";
    if(pvcMsrpsLT[year+pvc] == undefined || (time-pvcMsrpsLT[year+pvc])>100000)
    {
        var request = getRequest();
        try{
            var urlReq = BASE_CONTEXT_LOCAL+"/getMsrp.do?pvc="+pvc+"&year="+year;
            request.open("get",  urlReq , false);
            request.send(null);
            result = request.responseText;
            if(result.length>25)
                result="N/A*";
        }catch(err)
        {
            result = "N/A";
        }
        pvcMsrps[year+pvc]  = result;
        pvcMsrpsLT[year+pvc]  = dat.getTime();
    }
    else
    {
        result = pvcMsrps[year+pvc];
    }
    return result;
}

function getDealerPage(bac) {
    try{
    var urlReq = BASE_CONTEXT_LOCAL+"/getDealerInfo.do?bac="+bac;
    var request = getRequest();
    request.open("get",  urlReq , false);
    request.send(null);
    result = request.responseText;

    if(!isNoE(result) && "null" != result)
    {
        var list = result.split("~~");
        result = list[0];
        cacheDealersPage[bac]=result;
    }
    }catch(err)
    {
        result = "";
    }

    return result;
}

function getDLLocations(bac) {
    var coordinates = new Array();
    try{
        var urlReq = BASE_CONTEXT_LOCAL+"/getDealerInfo.do?bac="+bac;
        var request = getRequest();
        request.open("get",  urlReq , false);
        request.send(null);
        result = request.responseText;
        if(!isNoE(result) && "null" != result)
        {
            var list = result.split("~~");
            coordinates.push(list[3]);
            coordinates.push(list[4]);
        }
    }catch(err)
    {
    }

    return coordinates;
}

function getVehicleInfo(vin,pvc,year) {
    var list = new Array();
    try{
        var urlReq = BASE_CONTEXT_LOCAL+"/getVehicleInfo.do?vin="+vin+"&pvc="+pvc+"&year="+year;
        var request = getRequest();
        request.open("get",  urlReq , false);
        request.send(null);
        result = request.responseText;
        if(!isNoE(result) && "null"!=result)
        {
            list = result.split("~~");
        }
    }catch(err){

    }
    return list;
}//STYLEID~~BAC~~ZIPCODE

function getStyleId(pvc,year) {
    var id = "";
    try{
        var urlReq = BASE_CONTEXT_LOCAL+"/getVehicleInfo.do?&pvc="+pvc+"&year="+year;
        var request = getRequest();
        request.open("get",  urlReq , false);
        request.send(null);
        result = request.responseText;
        if(!isNoE(result))
        {
            id = result;
        }
    }catch(err){

    }
    return id;
}//STYLEID

/****************************************** TESTS **********************************************/

function testSave()
{
	saveVehicle('108','2008','Pontiac','G5','280','22157');
        saveVehicle('113','2008','Pontiac','G6 Convertible','2055','21829');
	saveVehicle('112','2008','Pontiac','G6 Coupe','2053','21827');
        saveVehicle('085','2008','Pontiac','G8','207','23301');
        saveInventory('1G2MC35B18Y112554','270','086','2008','pontiac','Solstice Base','34U');
	saveDealer('235161.0','DORAL BUICK PONTIAC GMC',new Address('8505 NW 12TH ST','Miami','DL','33126','(305) 436-8400'),'Mariano Martinez');
}

function readTest()
{
	var util = new SaveMyInfoUtils();

	var listV = utils.getMyVehicles();
	var listI = utils.getMyInventory();
	var listD = utils.getMyDealers();
}

function removeTest()
{
	var util = new SaveMyInfoUtils();

	util.removeVehicle('085');
	util.removeVehicle('047');
	util.removeVehicle('113');
	util.removeVehicle('086');

	util.removeInventory('1G2MC35B18Y112554');

	util.removeDealer('3235161.0');
}

function btnTestSave()
{
	testSave();
	initWidget();
}

function testRemove()
{
	var v1 = new SavedVehicle(0,0,0,0,0,0);
	v1.remove('112');
    v1.remove('108');
}

/****************************************** MAIN **********************************************/

AttachEvent(window, "load", loadAll);

document.body.onclick = function (event){
event = event || window.event;
eventClickSavedInfo(event);
}

function eventClickSavedInfo(event){
	if(clickOnSavedInfo!=1){
		hideSaveInfo();
	}
	clickOnSavedInfo=0;
}

function onClickOnSavedInfo(){
	clickOnSavedInfo=1;
}