//JavaScript Document for LOCATION MODULE
// LOAD LOCATION RELATED FUNCTIOINS ON LOAD OF THE PAGE //

function locationFunctions()
{
	startMap_new(latArr,lonArr,locNameArr,locAddress1,locAddress2,cityArr,stateCodeArr,zipCodeArr,countryCodeArr,phoneNumberArr,stationHoursArr,size,pageNumber,pageSize,locationCodeArr,pulClosedArr,dolClosedArr,flowPath,pickUpLocationVerified,sameAsDropOff,searchBy,bingMapDown,soldOut,pageType,locClosedBoth,locClosedPickup,locClosedDropoff,selectLocation,makeReservation,resSize,countyPresent,differentReturnLocation);
}

var myMapObj=null;
var myIcon = null;
var shapeObjects = null;
var globalShape = null;
var mapLatArr = null;

//Required for bounds checking.  Must match styles used.
var popupWidth = 150;
var popupHeight = 150;
var mapWidth = null;
var mapHeight = null;

//Required for showing location buttons when cursor is placed on it
var max_z = null;
var previousElementID = null;
var panFlag = false;

//for pagination
function displayPage(pageNo)
{
	document.forms.ListForm.PAGE_NO.value = pageNo;
	document.forms.ListForm.submit();	
}

function recenterOnClick(e)
{
	myMapObj.panToLatLng(e.ll);
	myMapObj.setCenter(e.ll);
}

function showMe(key)
{
	var shapeID = shapeObjects[key];
	myMapObj.HideInfoBox();
	//myMapObj.ShowInfoBox(myMapObj.GetShapeByID(shapeID));
	var shape = myMapObj.GetShapeByID(shapeID);
	
	if(globalShape !=null){
		max_z = globalShape.GetZIndex();
	}else{
		max_z = shape.GetZIndex();
	}
	if(shape.GetZIndex() <= max_z && globalShape != shape)
       {
         max_z++;
           //document.getElementById("zindex").innerText = max_z;
         shape.SetZIndex(max_z);
       }
	globalShape = shape;
	showPinBox(shape);
}

function withinMap(pixel)
{
	//CHeck to see if pop-up will go beyond map bounds.  Values depend on map dimensions.
	if(pixel.x < 0 || pixel.x > (mapWidth - popupWidth) || pixel.y < 0 || pixel.y > (mapHeight - popupHeight))
	{
		return false;
	}
	else
	{
		return true;
	}
}



function initMapSize()
{
	mapWidth = document.getElementById("mapWindow").offsetWidth;
	mapHeight= document.getElementById("mapWindow").offsetHeight;
}
function mouseOverHandler(e)
{
	if(e.elementID != null)
	{
		var shape = myMapObj.GetShapeByID(e.elementID);
		if(previousElementID != null){
			max_z = myMapObj.GetShapeByID(previousElementID).GetZIndex();
		}else{
			max_z = shape.GetZIndex();
        	}
		if(shape.GetZIndex() <= max_z && e.elementID != previousElementID)
        	{
           		previousElementID = e.elementID;
		   	max_z++;
		       shape.SetZIndex(max_z);
        	}

		globalShape = shape;
		showPinBox(shape);		
	}
	return false;
}

function showPinBox(shape)
{
	if(withinMap(myMapObj.LatLongToPixel(shape.GetPoints()[0])))
	{
		myMapObj.ShowInfoBox(shape);
	}
	else
	{
		myMapObj.SetCenter(shape.GetPoints()[0]);
		panFlag = true;
	}
}

function onEndPanHandler(e)
{
	if(panFlag){
		setTimeout("myMapObj.ShowInfoBox(globalShape);",10);
		panFlag = false;
	}
}

function addPushpin(pinID,latLngObj,icon_url,title,details,map,label)
{
         var shape = new VEShape(VEShapeType.Pushpin, latLngObj);
		 //shape.SetID(pinID);
		 //Set the icon
         shape.SetCustomIcon(icon_url);
         shape.SetCustomIcon("<img src='"+icon_url+"'/>");//<div style='position:absolute;top:4px;left:9px;color:white;'>"+ label +"</div>");
         //Set the info box
         //map.ClearInfoBoxStyles();
         shape.SetTitle(title);
         shape.SetDescription(details);
		 //alert(shape.GetID());
         //Add the shape the the map
         map.AddShape(shape);
	  //max_z = shape.GetZIndex();
	  shapeObjects[pinID] = shape.GetID();
	  //alert(shape.GetID());
}


function buildInitPin(locName,locAddress11,locAddress21,city,stateCode,zipCode,countryCode,phoneNumber,stationHours,stationHours,locationCode,pulClosed,dolClosed,differentReturnLocation)
{
	var newdiv1 = null;

	
     if(locAddress21=='NA' || locAddress21=='N/A' || locAddress21=='' || locAddress21==null)
	{
		locAddress21="";
	}
      if(locAddress11=='NA' || locAddress11=='N/A' || locAddress11=='' || locAddress11==null)
	{
		locAddress11="";
	}
	else if(locAddress21!="")
	{     
                locAddress11="<br>"+locAddress11;
	}
		

	if(stateCode!='XX' && stateCode!='')
	{
		stateCode=", "+stateCode;
	}
	else if(stateCode=='XX')
	{
		stateCode='';
	}

	if(zipCode!='')
	{
		zipCode=", "+zipCode;
	}

	if(size>1)
	{
		newdiv1 = locAddress21+locAddress11+"<br>"+city+stateCode+zipCode +", "+countryCode+"<br>"+phoneNumber +"<br>"+stationHours;
	}
	else if (size==1)
	{
		if(flowPath =='RESPROCESS'){
			   if(differentReturnLocation == 'no'){
				   
				   newdiv1 = locAddress21+locAddress11+"<br>"+city+stateCode+zipCode +", "+countryCode+"<br>"+phoneNumber +"<br>"+stationHours+"<br><a href=..\/locationsearch\/locationbeforevalidation.ex?locationCode="+locationCode+"&locationselected=true&checkPulStatus=false&checkDolStatus=false>"+makeReservation+"</a>";
			   }
			   else{
				   if(pickUpLocationVerified=='true'){
					   newdiv1 = locAddress21+locAddress11+"<br>"+city+stateCode+zipCode +", "+countryCode+"<br>"+phoneNumber +"<br>"+stationHours+"<br><a href=..\/locationsearch\/locationbeforevalidation.ex?locationCode="+locationCode+"&locationselected=true&checkPulStatus=true&checkDolStatus=false>"+makeReservation+"</a>";
				   }
				   else{
					   newdiv1 = locAddress21+locAddress11+"<br>"+city+stateCode+zipCode +", "+countryCode+"<br>"+phoneNumber +"<br>"+stationHours+"<br><a href=..\/locationsearch\/locationbeforevalidation.ex?locationCode="+locationCode+"&locationselected=false&checkPulStatus=true&checkDolStatus=false>"+makeReservation+"</a>";
				   }
			   }
		   } else{
			   newdiv1 = locAddress21+locAddress11+"<br>"+city+stateCode+zipCode +", "+countryCode+"<br>"+phoneNumber +"<br>"+stationHours+"<br><a href=..\/reservation\/initializer.ex?pul="+locationCode+"&differentReturnLocation=no>"+makeReservation+"</a>";
			}
	}
	
	return newdiv1;
}

function buildPinDiv(index,latArr1,locNameArr1,locAddress11,locAddress21,cityArr1,stateCodeArr1,zipCodeArr1,countryCodeArr1,phoneNumberArr1,stationHoursArr1,stationHoursArr1,locationCodeArr1,pulClosedArr1,dolClosedArr1,countyPresent1,differentReturnLocation1)
{
	var newdiv = null;

      if(locAddress21[index]=='NA' || locAddress21[index]=='N/A' || locAddress21[index]=='' || locAddress21[index]==null)
	{
		locAddress21[index]="";
	}
	 
	if(locAddress11[index]=='NA' || locAddress11[index]=='N/A' || locAddress11[index]=='' || locAddress11[index]==null)
	{
		locAddress11[index]="";
	}
	else if(locAddress21[index]!="")
	{
		locAddress11[index]="<br>"+locAddress11[index];
	}

			

	if(stateCodeArr1[index]!='XX' && stateCodeArr1[index]!='')
	{
		stateCodeArr1[index]=", "+stateCodeArr1[index];
	}
	else if(stateCodeArr1[index]=='XX')
	{
		stateCodeArr1[index]='';
	}

	if(zipCodeArr1[index]!='')
	{
		zipCodeArr1[index]=", "+zipCodeArr1[index];
	}
	if(pulClosedArr1[index]=='true' && dolClosedArr1[index]=='true')
	{
		newdiv = locAddress21[index]+locAddress11[index]+"<br>"+cityArr1[index]+stateCodeArr1[index]+zipCodeArr1[index] +", "+countryCodeArr1[index]+"<br>"+phoneNumberArr1[index] +"<br>"+stationHoursArr1[index]+"<br>"+locClosedBoth;
	}
	else if(pulClosedArr1[index]=='true' && dolClosedArr1[index]=='false')
	{
		newdiv = locAddress21[index]+locAddress11[index]+"<br>"+cityArr1[index]+stateCodeArr1[index]+zipCodeArr1[index] +", "+countryCodeArr1[index]+"<br>"+phoneNumberArr1[index] +"<br>"+stationHoursArr1[index]+"<br>"+locClosedPickup;
	}
	else if(pulClosedArr1[index]=='false' && dolClosedArr1[index]=='true')
	{
		newdiv = locAddress21[index]+locAddress11[index]+"<br>"+cityArr1[index]+stateCodeArr1[index]+zipCodeArr1[index] +", "+countryCodeArr1[index]+"<br>"+phoneNumberArr1[index] +"<br>"+stationHoursArr1[index]+"<br>"+locClosedDropoff;
	}
	else
	{
		if(flowPath =='RESPROCESS' || flowPath=='LOCATION')
		{	
			if(countyPresent1=="true")
			{
				newdiv = cityArr1[index]+stateCodeArr1[index];
			}
			else
			{				
				   if(flowPath =='RESPROCESS'){
					   if(differentReturnLocation == 'no'){
						  
						   newdiv = locAddress21[index]+locAddress11[index]+"<br>"+cityArr1[index]+stateCodeArr1[index]+zipCodeArr1[index] +", "+countryCodeArr1[index]+"<br>"+phoneNumberArr1[index] +"<br>"+stationHoursArr1[index]+"<br><a href=..\/locationsearch\/locationbeforevalidation.ex?locationCode="+locationCodeArr1[index]+"&locationselected=true&checkPulStatus=false&checkDolStatus=false>"+selectLocation+"</a>";
					   }
					   else{
						   if(pickUpLocationVerified=='true'){
							   newdiv = locAddress21[index]+locAddress11[index]+"<br>"+cityArr1[index]+stateCodeArr1[index]+zipCodeArr1[index] +", "+countryCodeArr1[index]+"<br>"+phoneNumberArr1[index] +"<br>"+stationHoursArr1[index]+"<br><a href=..\/locationsearch\/locationbeforevalidation.ex?locationCode="+locationCodeArr1[index]+"&locationselected=true&checkPulStatus=true&checkDolStatus=false>"+selectLocation+"</a>";
						   }
						   else{
							   newdiv = locAddress21[index]+locAddress11[index]+"<br>"+cityArr1[index]+stateCodeArr1[index]+zipCodeArr1[index] +", "+countryCodeArr1[index]+"<br>"+phoneNumberArr1[index] +"<br>"+stationHoursArr1[index]+"<br><a href=..\/locationsearch\/locationbeforevalidation.ex?locationCode="+locationCodeArr1[index]+"&locationselected=false&checkPulStatus=true&checkDolStatus=false>"+selectLocation+"</a>";
						   }
					   }
				   } else{
			    	newdiv = locAddress21[index]+locAddress11[index]+"<br>"+cityArr1[index]+stateCodeArr1[index]+zipCodeArr1[index] +", "+countryCodeArr1[index]+"<br>"+phoneNumberArr1[index] +"<br>"+stationHoursArr1[index]+"<br><a href=..\/reservation\/initializer.ex?pul="+locationCodeArr1[index]+"&differentReturnLocation=no>"+selectLocation+"</a>";
					}
			}
		}
	}
	
	return newdiv;
}

function startMap_new(latArr,lonArr,locNameArr,locAddress1,locAddress2,cityArr,stateCodeArr,zipCodeArr,countryCodeArr,phoneNumberArr,stationHoursArr,size,pageNumber,pageSize,locationCodeArr,pulClosedArr,dolClosedArr,flowPath,pickUpLocationVerified,sameAsDropOff,searchBy,bingMapDown,soldOut,pageType,locClosedBoth,locClosedPickup,locClosedDropoff,selectLocation,makeReservation,resSize,countyPresent,differentReturnLocation)
{
	var flag = getBingMapFlag();
	if(flag)
	{
		var latArr1=new Array(size);
		var lonArr1=new Array(size);
		var locNameArr1=new Array(size);
		var locAddress11=new Array(size);
		var locAddress21=new Array(size);
		var cityArr1=new Array(size);
		var stateCodeArr1=new Array(size);
		var zipCodeArr1=new Array(size);
		var countryCodeAr1r=new Array(size);
		var phoneNumberArr1=new Array(size);
		var stationHoursArr1=new Array(size);
		var locationCodeArr1=new Array(size);
		var pulClosedArr1=new Array(size);
		var dolClosedArr1=new Array(size);
		var poi = new Array(size);
		var elm;
		var mapToHtmlId=new Array(size);
		var latLngObj;
		var poiLabelText;
		mapLatArr=new Array(size);
		latArr1=latArr.split(":");
		lonArr1=lonArr.split(":");
		locNameArr1=locNameArr.split(":");
		locAddress11=locAddress1.split(":");
		locAddress21=locAddress2.split(":");
		cityArr1=cityArr.split(":");
		stateCodeArr1=stateCodeArr.split(":");
		zipCodeArr1=zipCodeArr.split(":");
		countryCodeArr1=countryCodeArr.split(":");
		phoneNumberArr1=phoneNumberArr.split(":");
		stationHoursArr1=stationHoursArr.split("*");
		locationCodeArr1=locationCodeArr.split(":");
		pulClosedArr1=pulClosedArr.split(":");
		dolClosedArr1=dolClosedArr.split(":");
		shapeObjects = new Array(size);
		icon_url = '/budgetWeb/images/common/red_rnd.gif';
		previousElementID = null;
		max_z = null;
		var varLatitude1=latArr1[0];
		var varLogitude1=lonArr1[0];
		document.getElementById("mapSection").style.display = "block";
		initMapSize();
		myMapObj = new VEMap('mapWindow');
		var latlng = new VELatLong(varLatitude1, varLogitude1);		
		mapLatArr[0] = latlng;
		myMapObj.LoadMap(latlng,null,null,null,null,false);
		for(var i=1; i <= size-1; i++)
		{		
			var num = (pageNumber*pageSize)-((pageSize)-(1));
		
			var iconUrl = '/budgetWeb/images/common/flag_' + (num + (i-1)) + '.gif';

			var varLatitude=latArr1[i];
			var varLogitude=lonArr1[i];			
			latLngObj = new VELatLong(varLatitude,varLogitude);
			mapLatArr[i] = latLngObj;
			var title = locNameArr1[i];
			latArr1=latArr.split(":");
			var details = buildPinDiv(i,latArr1,locNameArr1,locAddress11,locAddress21,cityArr1,stateCodeArr1,zipCodeArr1,countryCodeArr1,phoneNumberArr1,stationHoursArr1,stationHoursArr1,locationCodeArr1,pulClosedArr1,dolClosedArr1,countyPresent,differentReturnLocation);
			poiLabelText = num;

			addPushpin(i, latLngObj, iconUrl, title, details, myMapObj, poiLabelText);			
		}
		

		var newdiv1 = buildInitPin(locNameArr1[0],locAddress11[0],locAddress21[0],cityArr1[0],stateCodeArr1[0],zipCodeArr1[0],countryCodeArr1[0],phoneNumberArr1[0],stationHoursArr1[0],stationHoursArr1[0],locationCodeArr1[0],pulClosedArr1[0],dolClosedArr1[0],differentReturnLocation);		
		if (pageType == 'LocationInformation')
		{
			// locaiton number
			var num = (pageNumber*pageSize)-((pageSize)-(1));
												
			var iconUrl = '/budgetWeb/images/common/flag_' + num + '.gif';			
			
			var varLatitude = latArr1[0];
			var varLogitude = lonArr1[0];			
			latLngObj = new VELatLong(varLatitude,varLogitude);
			mapLatArr[0] = latLngObj;
			var title = locNameArr1[0];
			latArr1 = latArr.split(":");
			var details = buildPinDiv(1,latArr1,locNameArr1,locAddress11,locAddress21,cityArr1,stateCodeArr1,zipCodeArr1,countryCodeArr1,phoneNumberArr1,stationHoursArr1,stationHoursArr1,locationCodeArr1,pulClosedArr1,dolClosedArr1,countyPresent,differentReturnLocation);
			poiLabelText = num;
			
			addPushpin(0, latlng, iconUrl, locNameArr1[0], newdiv1, myMapObj, poiLabelText);
			myMapObj.SetCenter(mapLatArr[0]);
			myMapObj.SetZoomLevel(13);
		}
		else
		{
                  if(size==1 || size==2){
                     myMapObj.SetCenter(mapLatArr[0]);
                     myMapObj.SetZoomLevel(13);
                  } 
		else{
		myMapObj.SetMapView(mapLatArr);
                  }
		}
		myMapObj.AttachEvent("onmouseover", mouseOverHandler);
		myMapObj.AttachEvent("onendpan",onEndPanHandler);
		//myMapObj.AttachEvent("ondoubleclick",doubleClickHandler);		
	}
}

// LOADING FUNCTIONS ON LOAD OF PAGE //
function loadInitFunctions()
{
	showHidesmallBigMaps();
}


if (window.attachEvent) 
{
	window.attachEvent('onload', loadInitFunctions);
}

else if (window.addEventListener) 
{
	window.addEventListener("load", loadInitFunctions, true);
}


//To Show or Hide Big Map or Small Map in select Location Pages
function showHidesmallBigMaps()
{
	if(document.getElementById('locationMap'))
	{
		var smallMapTxt = document.getElementById('smallMapTxt');
		var bigMapTxt = document.getElementById('bigMapTxt');
		bigMapTxt.onclick = function()
		{
			
			//removeClass(bigMapTxt,'mapnonlink');
			//addClass(smallMapTxt,'mapnonlink');
			bigMapTxt.className = 'mapnonlink';
			smallMapTxt.className = '';
			
			document.getElementById('smallBigMap').className = 'wideMap';
			
			//addClass(document.getElementById('smallBigMap'),'wideMap')
			document.getElementById('smallBigMap').innerHTML = '<iframe frameborder="0" class="wideMapiFrame" title="iframeMaps"></iframe><div id="mapWindow" style="position:relative; width:430px; height:360px"></div>';
			
			startMap_new(latArr,lonArr,locNameArr,locAddress1,locAddress2,cityArr,stateCodeArr,zipCodeArr,countryCodeArr,phoneNumberArr,stationHoursArr,size,pageNumber,pageSize,locationCodeArr,pulClosedArr,dolClosedArr,flowPath,pickUpLocationVerified,sameAsDropOff,searchBy,bingMapDown,soldOut,pageType,locClosedBoth,locClosedPickup,locClosedDropoff,selectLocation,makeReservation,resSize,countyPresent,differentReturnLocation);
		};
		
		smallMapTxt.onclick = function()
		{
			//removeClass(bigMapTxt,'mapnonlink');
			//addClass(smallMapTxt,'mapnonlink');
			//removeClass(document.getElementById('smallBigMap'),'wideMap')
			smallMapTxt.className = 'mapnonlink';
			bigMapTxt.className='';
			document.getElementById('smallBigMap').className = '';
			document.getElementById('smallBigMap').innerHTML = '<div id="mapWindow" style="position:relative;width:310px; height:360px"></div>';
			startMap_new(latArr,lonArr,locNameArr,locAddress1,locAddress2,cityArr,stateCodeArr,zipCodeArr,countryCodeArr,phoneNumberArr,stationHoursArr,size,pageNumber,pageSize,locationCodeArr,pulClosedArr,dolClosedArr,flowPath,pickUpLocationVerified,sameAsDropOff,searchBy,bingMapDown,soldOut,pageType,locClosedBoth,locClosedPickup,locClosedDropoff,selectLocation,makeReservation,resSize,countyPresent,differentReturnLocation);
		};		
	}
}

function hasClass(ele,cls) 
{
	return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}
function addClass(ele,cls) 
{
	if (!this.hasClass(ele,cls)) 
	{
		ele.className += " "+cls;
	}
}
function removeClass(ele,cls) 
{
	if (hasClass(ele,cls)) 
	{
		var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
		ele.className=ele.className.replace(reg,' ');	
	}
}

function doubleClickHandler()
{
	//myMapObj.SetMapView(mapLatArr);
	if(mapLatArr.length > 2){
	myMapObj.SetMapView(mapLatArr);
	}else if(mapLatArr.length == 1 || mapLatArr.length == 2){		
		myMapObj.SetCenter(mapLatArr[0]);
	}
}

function getBingMapFlag()
{
	return true;
}


	
