/*
 * This method is used to fetch the details of the selected dealer. It inherently makes a DWR call to "DealerLocatorImpl" class
 * "getDealerById" method.
 * Note: This function is not being used at present.
 */
function getDetails(dealerId){
	if(debugMode){
			alert("Entered function getDetails()");
	}

	// AJAX call to fetch the dealer information using given dealer ID
	DealerLocatorFacade.getDealerById(dealerId, document.dealerLocatorForm.hdnLocaleLanguage.value, document.dealerLocatorForm.hdnLocaleCountry.value, displayDealerDetails);

	if(debugMode){
			alert("Leaving function getDetails()");
	}
}

function reCenter(di) {
	latReal = map.GetShapeLayerByIndex(0).GetShapeByIndex(di).Latitude;
	lonReal = map.GetShapeLayerByIndex(0).GetShapeByIndex(di).Longitude;

	realCenter = map.GetCenter().Longitude; //
	if (realCenter != null) {
		pixelAct = new VEPixel(450,155); // change to pixel value of desired location if map changes
		adjCenter = map.PixelToLatLong(pixelAct).Longitude;
		adjAmount = realCenter-adjCenter;
		//finalNum = realCenter-adjAmount;

		latlo = new VELatLong(latReal,lonReal+adjAmount);
		document.getElementById("panTail").style.display="none";
		map.AttachEvent("onchangeview",rePanTail);
		map.PanToLatLong(latlo);
	} else {
		map.AttachEvent("onchangeview",panForPanel);
		map.PanToLatLong(new VELatLong(latReal,lonReal));
	}
}

function panForPanel() {
	map.DetachEvent("onchangeview",panForPanel);	
	map.AttachEvent("onchangeview",rePanTail);
	map.Pan(-137,0);
}

function hidePanel(){
	document.getElementById('dealerPanel').style.display='none';
	document.getElementById('panTail').style.display='none';
	document.getElementById('inputBox').style.display='none';
	if($("awardPop")){
		document.getElementById('awardPop').innerHTML="";
		jQuery("#awardPop").remove();
	}
	clearGradients();
}

function clearGradients(){
	var allDivs = document.getElementsByTagName("div");
	for (i=0;i<allDivs.length;i++)
            if (allDivs[i].className == "resBoxActive"){
                allDivs[i].className = "resBox"
            }
}

/*
 * This method is being used to view the details of the selected dealer. Basically all the dealers information is stores in a global variable
 * called "dealerResultsGlobal". Based on the "index" provided the function extracts the corresponding dealer information and display on
 * the page
 */
function viewDealerDetails(dealerIndex){
	//what is this? commenting for now.
	//slide_horiz.start();

	stateMgr.changeState(stateMgr.states.DEALERDETAILS);

	if(debugMode){
			alert("Entered function viewDealerDetails()");
			alert("The selected dealer index:"+dealerIndex);
	}
	// Fetching the selected dealer information from the global variable. This variable is being declared in "display.js"
	// Array "dealerAssets" contains all the resource bundle properties we have in our application.
	var positionedDealerObj = dealerResultsGlobal[dealerIndex];

	var languagevalue=document.dealerLocatorForm.hdnLocaleLanguage.value;
	var lang_difference='';
	if(languagevalue=='es')
	{
		lang_difference='/espanol';
	}

	// remove selected gradient from all results boxes
	clearGradients();

	// add selected gradient to the current dealer detail
	// Commented for SR 17443
	/*if (document.getElementById("resBox"+dealerIndex)) {
		document.getElementById("resBox"+dealerIndex).className = "resBoxActive";
	}*/

	if(document.getElementById("resBox"+dealerIndex) == null){
              
		 displaySelectedDealer(dealerIndex);
	}
	else {
		document.getElementById("resBox"+dealerIndex).className = "resBoxActive";
	}

	positionedDealer = positionedDealerObj;
	if (!document.getElementById("panTail")) {
		var pt = document.createElement("div");
		pt.id="panTail";
		document.getElementById("cdpageContent").appendChild(pt);
		var pti = document.createElement("img");
		pti.src="/img/global/transparent/eeeeee90-right-tail.png";
		pt.appendChild(pti);
		jQuery(pti).css({
			position: "absolute",
			top: "0px",
			right: "0px"
		}).ifixpng();
		setupPanTail(map);
	}

	var panel;
	var ddDiv;
	// yank existing panel
	if (document.getElementById("dealerPanel")){
		// document.getElementById('dealerPanel').style.display='none';
		panel = document.getElementById("dealerPanel");
		panel.style.display="block";
		// panel.innerHTML="";
		ddDiv = document.getElementById("ddDiv");
	} else {
		panel = document.createElement("div");
		panel.id = "dealerPanel";
		jQuery(panel).css({
			top: "0px", left: "278px", position: "absolute", width: "358px",
			height: "394px", borderRight: "1px solid #b0b0b0","z-index":"100"});
		document.getElementById("cdpageContent").appendChild(panel);
		panelbg = document.createElement("div");
		panel.appendChild(panelbg);
		jQuery(panelbg).css({
			top: "0px", left: "0px", position: "absolute", width: "358px", height: "394px",
			backgroundImage: "url(/img/global/transparent/eeeeee90.png)",
			backgroundRepeat: "repeat"
			}).ifixpng();
		ddDiv = document.createElement("div");
		ddDiv.id = "ddDiv"
		ddDiv.setAttribute("class","ddDiv");
		panel.appendChild(ddDiv);
	}
	ddDiv.innerHTML = '<div class="ddClose"><a href="javascript:hidePanel();"><img src="/img/global/button/close.png" alt="Close" /></a></div>';
	ddDiv.innerHTML += '<div class="ddTitle"><div class="ddTitle_text">'+positionedDealerObj["name"]+'</div></div>';

	ddAwards = document.createElement("div");
	ddAwards.id = "ddAwards";
	ddAwards.setAttribute("class","ddAwards");
	
	if(positionedDealerObj["excellencecode"] == 1){
		ddAwards.innerHTML += '<img src="/img/dealer_locator/icons/excellence.png" alt="" rel="#excellenceCopy"/>';
	}
	if(positionedDealerObj["awardSet"]){
		ddAwards.innerHTML += '<img src="/img/dealer_locator/icons/award_set.png" alt="" rel="#awardSetCopy"/>';
	}
	if(positionedDealerObj["gtr"]){
		ddAwards.innerHTML += '<img src="/img/dealer_locator/icons/gtr.png" alt="" rel="#gtrCopy" style="margin:6px"/>';
	}
		//Express Service 
	if(positionedDealerObj["expressService"]){
		ddAwards.innerHTML += '<img src="/img/dealer_locator/icons/express_service.png" alt="" rel="#expressCopy" style="margin:6px; margin-left:-1px;"/>';
	}
	//Express Service 
	ddAwards.onclick="crmEvent10();"
	document.getElementById("ddDiv").appendChild(ddAwards);
	/* jQuery(".ddAwards img").cluetip({
		activation: "click", local: true, cluetipClass: 'jtip', arrows: true, dropShadow: false, hoverIntent: false, width: 250, hoverIntent: false, showTitle: false,
		topOffset: 0, leftOffset: 20, closeText: "<img src=\"/img/dealer_locator/close.jpg\" alt=\"X\" />", sticky: true
	}); */

	ddContent1 = document.createElement("ul");
	ddContent1.setAttribute("class","ddContent");
	var innerHTML="";

	if(!isNullOrEmpty(positionedDealerObj["defaultPhone"])){
		innerHTML += '<div><div class="dealerHeadingFormat">'+dealerAssets["dealerLocator.viewDealer.mainLine"]+'</div>';
		innerHTML += '<div class="dealerDataFormat">'+positionedDealerObj["defaultPhone"]+'</div></div><br/>';
	}
        
	if(!isNullOrEmpty(positionedDealerObj["internetSalesPhone"])){
		innerHTML += '<div><div class="dealerHeadingFormat">'+dealerAssets["dealerLocator.viewDealer.internetSales"]+'</div>';
		innerHTML += '<div class="dealerDataFormat">'+positionedDealerObj["internetSalesPhone"]+'</div></div><br/>';
	}

    if(!isNullOrEmpty(positionedDealerObj["servicePhone"])){
		innerHTML += '<div><div class="dealerHeadingFormat">'+dealerAssets["dealerLocator.viewDealer.serviceDepartment"]+'</div>';
		innerHTML += '<div class="dealerDataFormat">'+positionedDealerObj["servicePhone"]+'</div></div><br/>';
	}

	ddContent1.innerHTML = innerHTML;
	innerHTML ="";
	document.getElementById("ddDiv").appendChild(ddContent1);

	ddContent2 = document.createElement("ul");
	ddContent2.setAttribute("class","ddContent");

	if(positionedDealerObj["completeSalesHours"].length != 0){
		innerHTML = '<li>'+dealerAssets["dealerLocator.viewDealer.salesHours"]+'<ul>';
		for(var i = 0; i < positionedDealerObj["completeSalesHours"].length; i++) {
			innerHTML += '<div><div class="dealerHeadingFormat" style="font-weight:normal">'+positionedDealerObj["completeSalesHours"][i]+'</div><div class="dealerDataFormat">'+positionedDealerObj["completeSalesHours"][++i]+'</div></div><br/>';
		}
		innerHTML += '</ul></li>';
	}
	
	if(positionedDealerObj["completeServiceHours"].length != 0){
		innerHTML += '<li>'+dealerAssets["dealerLocator.viewDealer.serviceHours"]+'<ul>';
		for(var i = 0; i < positionedDealerObj["completeServiceHours"].length; i++) {
			innerHTML += '<div><div class="dealerHeadingFormat" style="font-weight:normal">'+positionedDealerObj["completeServiceHours"][i]+'</div><div class="dealerDataFormat">'+positionedDealerObj["completeServiceHours"][++i]+'</div></div><br/>';
		}
		innerHTML += '</ul></li>';
	}
	
	if(!isNullOrEmpty(positionedDealerObj["languagesCode"])){
		// added for languages
		innerHTML += '<li>'+dealerAssets["dealerLocator.viewDealer.languagesSpoken"]+'<ul>';
		innerHTML += '<li><div class="dealerDataFormat" style="left:0px">'+positionedDealerObj["languagesCode"]+'</div></li>';
		innerHTML += '</ul></li>';
		// end of additions for languages
	}

	ddContent2.innerHTML=innerHTML;
	document.getElementById("ddDiv").appendChild(ddContent2);

	ddBtnCtr = document.createElement("ul");
	ddBtnCtr.id = "ddBtnCtr";
	ddBtnCtr.setAttribute("class","ddBtnCtr");
	// this variable is used for firing crmEvents
	var crmEvent2taggingArgs = "'STATE':'"+positionedDealerObj['state']+"', "+"'DlrCode':'"+positionedDealerObj['id']+"', "+"'DlrName':'"+formatStringForQuote(positionedDealerObj['name'])+"', "+"'Method':'Detail'";
	var crmEvent4taggingArgs = "'Method':'Detail'";
	// The below code displays all the 6 buttons. Namely "Contact this dealer", "Search Inventory", "Driving Directions", "Save Information",
	// "Visit dealer website" and "Print Page"
	var inputBox1 ="'inputBox'";
	
	//SR 13538 - Search inventory URL change - begins
	var currentURI = window.location.href;
	var isStageEnv = (currentURI.search('www.stage') > -1) ? true : false;
	var isQAEnv = (currentURI.search('www.qa') > -1) ? true : false;
	var isIntegEnv = (currentURI.search('www.integ') > -1) ? true : false;
	var search_inventory_url = '/Locate.jsp?make=nissan&flow=browse&dealer='+positionedDealerObj["id"]+'&nextInInventory=dealer_inventory&rpl=false&x=&zip='+positionedDealerObj["postalCode"]+'&Site=&lang=en';
	
	if (isStageEnv || isQAEnv || isIntegEnv)
	search_inventory_url = 'http://www.config.stage.nissanusa.com'+search_inventory_url;
	else
	search_inventory_url = 'http://www.config.nissanusa.com'+search_inventory_url;
	//search inventory URL change - ends
	
	if(positionedDealerObj["contactable"] == true){
	innerHTML = '<li><a href="javascript:contactDealer(\''
					+positionedDealerObj["id"]
					+'\', \'noActionState\',\''
					+formatStringForQuote(positionedDealerObj["name"])
					+'\',\''
					+positionedDealerObj["postalCode"]
					+'\',\''
					+formatStringForQuote(positionedDealerObj["city"])
					+'\',\''
					+positionedDealerObj["state"]
					+'\',\''
					+formatStringForQuote(positionedDealerObj["line1"])
					+'\',\''
					+positionedDealerObj["defaultPhone"]
					+'\',\''
					+positionedDealerObj["defaultEmail"]
					+'\',\''
					+positionedDealerObj["distance"]
					+'\',\''
					+formatStringForQuote(positionedDealerObj["url"])
					+'\',\'Locate.Contact_Dealer_Detail\');" page="ContactDealer"><img src="/img/dealer_locator/buttons'+lang_difference+'/contact_dealer_off.png" class="CTAbutton" /></a></li>';
	} else {
		innerHTML = "";
	}

	
	//Changes made by CTS
	if (positionedDealerObj["url"] != "") {
		
		innerHTML += '<li><a href="'+positionedDealerObj["url"]+'" target="_blank" onClick="crmEvent2({'+crmEvent2taggingArgs+'})"><img src="/img/dealer_locator/buttons'+lang_difference+'/view_dealer_site_off.png" class="CTAbutton ddLink"/></a></li>';
		
	}

	//SR 13538 - Search inventory URL change - begins
	//innerHTML += '<li><a href="'+search_inventory_url+'&next=Locate.SearchInventory"><img src="/img/dealer_locator/buttons'+lang_difference+'/search_inv_off.png" class="CTAbutton"/></a></li>';
	//SR 13538 - Search inventory URL change - ends
	
	//End of changes
	
	innerHTML += '<li><a href="javascript:displayDrivingDirections('+inputBox1+','+dealerIndex+');" onClick="crmEvent4({'+crmEvent4taggingArgs+'})"><img src="/img/dealer_locator/buttons'+lang_difference+'/get_driving_directions_off.png" class="CTAbutton"/></a></li>';
	innerHTML += '<li><a href="javascript:displaySaveDealerInfo('+dealerIndex+');" onClick="crmEvent5()"><img src="/img/dealer_locator/buttons'+lang_difference+'/send_info2my_email_off.png" class="CTAbutton"/></a></li>';
	
	//Changes made by CTS
	/*if (positionedDealerObj["url"] != "") {
		innerHTML += '<li><a href="'+positionedDealerObj["url"]+'" target="_blank" onClick="crmEvent2({'+crmEvent2taggingArgs+'})"><img src="/img/dealer_locator/buttons'+lang_difference+'/view_dealer_site_off.png" class="CTAbutton ddLink"/></a></li>';
	}*/
	
	if(eventGTR){
		innerHTML +='<li><a href="http://www.GTRNISSAN.com?site=nissanusa.dealer_loc" target="_blank" onClick="crmEvent15(\'Detail\');"><img src="/img/dealer_locator/buttons'+lang_difference+'/viewGTRSite_gray_off.png" class="CTAbutton"/></a></li>';
	}
	else{
		innerHTML += '<li><a href="'+search_inventory_url+'&next=Locate.SearchInventory"><img src="/img/dealer_locator/buttons'+lang_difference+'/search_inv_off.png" class="CTAbutton"/></a></li>';
	}
	//End of Changes
	innerHTML += '<li><a href="javascript:printDealerInfo();" onClick="crmEvent8()"><img src="/img/dealer_locator/buttons'+lang_difference+'/print_dealer_info_off.png" class="CTAbutton"/></a></li>';
	ddBtnCtr.innerHTML=innerHTML;
	document.getElementById("ddDiv").appendChild(ddBtnCtr);

	jQuery(".ddClose a img").ifixpng();
	jQuery("#ddDiv img.CTAbutton").ifixpng().hover(imgSwitch,imgSwitch);
	jQuery("#ddAwards img").click(function (e) {
		if($("awardPop")){
			document.getElementById('awardPop').innerHTML="";
			jQuery("#awardPop").remove();
		}
		awardPopup(this,this.getAttribute("rel").replace("#",""));
		crmEvent10();
	}).ifixpng();

	reCenter(dealerResultsGlobal[dealerIndex]["index"]);

	jQuery("#ddBtnCtr li").css({
		"padding-left": "0px",
		"float": "left",
		width: "130px",
		position: "relative"
	});
	jQuery("#ddBtnCtr li:even").css({
		width: "180px",
		"padding-left": "17px"
	});

	if (positionedDealerObj["url"] == null){

		jQuery(".ddLink").css({
			"visibility": "hidden"
		});
	}

	if(debugMode){
			alert("Leaving function viewDealerDetails()");
	}
}

// This function is used to display a dealer on the left panel when a dealer is selected by clicking a number on the map and requesting to view dealer details.

function  displaySelectedDealer(dealerIndex){
 
  newIndex = dealerIndex+1;
  var currentPage = Math.ceil(newIndex/10);
  var selectBox = document.getElementById('pageNumber');
  selectBox[currentPage-1].selected=true;
  navigation('center');
  document.getElementById("resBox"+dealerIndex).className = "resBoxActive";
}

/*

*/
function printFrame(addEls) {
	this.addHead = function(str,overwrite) {
		if (overwrite) window.frames['printframe_ifr'].document.getElementsByTagName("head")[0].innerHTML="";
		if (typeof(str) == 'string') {
			window.frames['printframe_ifr'].document.getElementsByTagName("head")[0].innerHTML+=str;
		} else {
			window.frames['printframe_ifr'].document.getElementsByTagName("head")[0].appendChild(str);
		}
	}
	this.addBody = function(str,overwrite) {
		if (overwrite) window.frames['printframe_ifr'].document.body.innerHTML="";
		if (typeof(str) == 'string') {
			window.frames['printframe_ifr'].document.body.innerHTML+=str;
		} else {
			if (typeof(str.outerHTML) == 'string') {
				window.frames['printframe_ifr'].document.body.innerHTML+=str.outerHTML;
				
				//Code for changing the title			
				window.frames['printframe_ifr'].document.title = "Dealer Information";
			
				
			} else {
				window.frames['printframe_ifr'].document.body.appendChild(str);

				//Code for changing the title			
				window.frames['printframe_ifr'].document.title = "Dealer Information";
			}
		}
	}
	this.removeBody = function(elid) {
		with (window.frames['printframe_ifr'].document) {
			body.removeChild(getElementById(elid));
		}
	}
	this.showBody = function(elid) {
		with (window.frames['printframe_ifr'].document) {
			getElementById(elid).style.display="block";
		}
	}
	this.addBody("",true);
	for (var i = 0, ae = addEls.length; i < ae; i++) {
		this.addBody(addEls[i]);
	}
	/* var scr = document.createElement("script");
	scr.type="text/javascript";
	scr.innerHTML="parent.printFrameCallback();";
	this.addBody(scr); */
	setTimeout("printFrameCallback()",500);
	return true;
}

function printFrameCallback() {
	
	window.frames['printframe_ifr'].focus();
	window.frames['printframe_ifr'].print();
	window.focus();
	
}

function printDealerInfoCallback(dealermap) {	
	var dph = document.createElement("h1");
	jQuery(dph).css({"height": "30px", "margin-top": "20px"});
	dph.innerHTML = "<img src=\"/img/global/header_nissan_logo.gif\" alt=\"NISSAN\" style=\"float: left; margin-right: 30px; margin-top: -15px;\" />" + dealerAssets["dealerLocator.mainHeading"];
	
	var dp = document.getElementById("dealerPanel").cloneNode(true);
	var resAdd = document.createElement("div");
	resAdd.className="resAdd";
	resAdd.id="dealerAddress";
	var p1 = document.createElement("p");
	var p2 = document.createElement("p");
	p1.innerHTML=positionedDealer["line1"];
	p2.innerHTML=positionedDealer["city"] + ", " + positionedDealer["state"] + " " + positionedDealer["postalCode"];
	resAdd.appendChild(p1);
	resAdd.appendChild(p2);
	
	var img_div = document.createElement("div");
	var mg = document.createElement("img");
	mg.alt="dealer map";
	mg.src=dealermap.replace("https://","http://");
	mg.style.width="302px";
	mg.style.height="200px";
	//mg.style.paddingLeft="17px";
	
	img_div.style.position="absolute";
	img_div.style.top="65px";
	img_div.appendChild(mg);

	dp.removeChild(dp.firstChild);
	dp.insertBefore(img_div,dp.firstChild);
	dp.insertBefore(dph,dp.firstChild);
	dp.lastChild.removeChild(dp.lastChild.lastChild);
	dp.lastChild.insertBefore(resAdd,dp.lastChild.childNodes[3]);
	
	
	dp.style.left = "0px";
	dp.style.margin = "0px 0px 0px 0px";
	dp.style.top = "0px";
	dp.style.border = "0px";
	dp.style.position = "absolute";
	dp.style.width = "582px";	
	
	dp.lastChild.style.position = "absolute";
	dp.lastChild.style.marginLeft = "305px";
	dp.lastChild.style.width = "280px";
	
	printFrame([dp]);
	return true;
}

function printDealerInfo(){
	crmEvent14();
	if(debugMode){
			alert("Entered function printDealerInfo()");
	}
	var ifr;
	if (document.getElementById("printframe_ifr")) {
		ifr = document.getElementById("printframe_ifr");
		ifr.src="/js/dealer_locator/printframe.html";
	} else {
		ifr = document.createElement("iframe");
		ifr.style.position="absolute";
		ifr.style.width="900px";
		ifr.style.height="500px";
		ifr.style.top="-3000px";
		ifr.style.left="0px";
		ifr.id="printframe_ifr";
		ifr.name="printframe_ifr";
		ifr.src="/js/dealer_locator/printframe.html";
		document.body.appendChild(ifr)
	}

	// Get all the hidden variables from the form to get the driving directions Map;
	var localeLanguage = document.dealerLocatorForm.hdnLocaleLanguage.value;
	var localeCountry = document.dealerLocatorForm.hdnLocaleCountry.value;
	var drivingDirFld = document.dealerLocatorForm.hdnNewDrivingDirections.value;
	var addressLine = document.dealerLocatorForm.hdnAddressLine.value;
	var city = document.dealerLocatorForm.hdnCity.value;
	var state = document.dealerLocatorForm.hdnState.value;
	var zipCode = document.dealerLocatorForm.hdnZipcode.value;
	//var positionedDealerObj = dealerResultsGlobal[dealerIndex];
	var positionedDealerObj = positionedDealer;
	var country ='US';
	var mapflag = true;
	positionedDealerPrint = { id:positionedDealerObj["id"], line1:positionedDealerObj["line1"],city:positionedDealerObj["city"],state:positionedDealerObj["state"],postalCode:positionedDealerObj["postalCode"]};

	DealerLocatorFacade.getDealerMapUrl(positionedDealerPrint,printDealerInfoCallback);

	if(debugMode){
			alert("Leaving function printDealerInfo()");
	}
}