 var storeCityArray = new Array();
 var storeArray = new Array();
 var areaArray; // = new Array();
 function FetchStoreDetails()
 {
   
         storeCityArray = storeList.getCityList();  
         
         storeArray = storeList.getStoresList();
         areaArray  = storeList.getAreaList();
         //areaArray[0] = 'All';            
         selCity = storeCityArray[0];     
         if (storeCityArray.length > 0)
         {
         $('#txtStoreCity').val(storeCityArray[0]); 
           
         }
         
        if(storeCityArray.length > 0)     
        {
        if(storeCityArray.length > 1)
        {
        IsSingleCity = false;
        fillCityCombo();
        }
        else
        {
        IsSingleCity = true;                
        }
        ProcessSelectedCity();
        }
           if (storeCityArray.length > 0)
         {
            // added from initEnd()
            document.getElementById('divOpts').style.display = 'block';
            document.getElementById('divOptRoute').style.display = 'block'; 
            if(IsSingleCity == false)
            {                
            document.getElementById('divOptCityBorder').style.display = 'block'; 
            }
         }                 
      ProcessSelectedDestStore(0);
    }
    
  function  fillCityCombo()
  {			
            document.getElementById('divOptCity').style.display = 'block';    
		    var drpCity = document.getElementById('dropCity');
		    if(drpCity)
		    {
		        while (drpCity.options.length > 0) 
		        {
		            drpCity.options[0] = null;
		        }
		        var optn = null;   
		        for(var clen=0;clen < storeCityArray.length;clen++)
		        {
		            optn = document.createElement("OPTION");
		            optn.text = storeCityArray[clen];
		          if(storeCityArray[clen].toLowerCase() == selCity.toLowerCase())
                    {
                        optn.selected = true;   
                    }
		            drpCity.options.add(optn);
		        }
		        optn = null;                  
		    }  
		    drpCity = null;
		
		}
		
function ProcessSelectedCity()
{
  if(selCity && selCity.length > 0)
    {
        if(processedCity == selCity)
            return;
        processedCity = selCity;           
        
        $('txtSelectLocation').value = "";
        $('longlat').value = "";

        //document.getElementById('divOptCityBorder').style.display = 'none';
        //document.getElementById('divOptRoute').style.display = 'none';
        document.getElementById('divOptDistance').style.display = 'none';   
        
        $('txtStoreCity').value = selCity;            
            
            StoresArrayByCity =  mapCtrlObj.getStoresByCity(storeArray, selCity);
            FillAreaArray();
            popupAreas = null;
         if (storeArray.length > 0)
         {
             if(storeArray.length == 1)    
                {
                    IsSingleStore = true;
                }
                else
                {
                    IsSingleStore = false; 
                          
                    document.getElementById('divOpts').style.display = 'block';
                    document.getElementById('divFilterAreas').style.display = 'block';                        
                }
                  document.getElementById('divStoresList').innerHTML = GetFormatedStoreAddressesList("all");
         }                                    
         
      
    }    
}     

function ChangeTheCity()
 {            
    if($('dropCity'))
    {
        var drpCity = document.getElementById('dropCity');                               
        var count;
        for(var clen=0;clen<drpCity.options.length;clen++)
        {
            if(drpCity.options[clen].selected == true)
            {
                selCity = drpCity.options[clen].text; 
                count =clen;
                break;
            }
        }
        drpCity = null; 
        
        ProcessSelectedCity();         
        ProcessSelectedDestStore(count);  
        
    }      
 }    
 
 function ProcessSelectedDestStore(dsSelIndex)
{       

var StoreDeatilsObj = StoresArrayByCity[dsSelIndex]; 
    if(dsSelIndex >= 0 && dsSelIndex <= storeArray.length)
    {                

        document.getElementById('spSelStoreName').innerHTML = '"'+ StoreDeatilsObj.storeName +'" ';
        if(IsSingleStore == true)
        {
            if(IsSingleCity == false)
            {
            
                document.getElementById('spAddressHeading').innerHTML = "Stores in "+ GetFormatedName(selCity) + " - " + StoresArrayByCity.length;
                document.getElementById('spOptHeading').innerHTML = "Store Locator";
              
            }
            else
            {
                document.getElementById('spAddressHeading').innerHTML = "Store Address";
                document.getElementById('spOptHeading').innerHTML = "Get Route";
            }                                                           
        }
        else
        {
            document.getElementById('spAddressHeading').innerHTML = "Stores in "+ GetFormatedName(selCity) + " - " + StoresArrayByCity.length;
            document.getElementById('spOptHeading').innerHTML = "Store Locator";        
        }     
                                           
         //GetRoute(StoreDeatilsObj.lat,StoreDeatilsObj.lng);
         
         mapCtrlObj.locateMultipleMarkers(StoresArrayByCity); 
         
         setTimeout("ShowPopup(0)",600);
         
    }
     
}

function GetFormatedName(curName)
{
    var strFormated = curName;
    if(curName.length > 1)
    {
        strFormated = curName.substr(0,1).toUpperCase() + curName.substr(1,curName.length - 1).toLowerCase();
    }
    return strFormated;       
} 


function GetFormatedStoreAddressesList(curArea)
{
    var strRet = "";
    if(StoresArrayByCity && StoresArrayByCity.length > 0)
    {
        for(var slen=0;slen<StoresArrayByCity.length;slen++)
        {
            if(curArea && curArea.length > 0 && curArea.toLowerCase() != 'all')
            {
                if(StoresArrayByCity[slen].area != curArea)
                {
                    continue;
                }
            }
            strRet += GetFormatedStoreAddress(slen,StoresArrayByCity[slen]);             
        }
    }       
    return strRet;
}
function ShowPopup(index)
{ 
document.getElementById('spSelStoreName').innerHTML = '"'+ StoresArrayByCity[index].storeName +'" ';
mapCtrlObj.showPopup(StoresArrayByCity[index].lat ,StoresArrayByCity[index].lng);
mapCtrlObj.setRouteSourceLatLng(StoresArrayByCity[index].lat ,StoresArrayByCity[index].lng);
if($('#txtSelectLocation').val()){
GetRoute(StoresArrayByCity[index].lat,StoresArrayByCity[index].lng);
}
}
function GetFormatedStoreAddress(curStoreIndex,currentStoreDetails)
{
    var storeAddressFormat = 
    '<ul class="storeslistdetails">'+
        '<li>'+
//            '<a class="storeslistheading" href="'+currentStoreDetails.siteurl+'" target="_blank">'+currentStoreDetails.storename+'</a>'+
            '<a class="storeslistheading" href="'+currentStoreDetails.siteURL+'" target="_blank">'+currentStoreDetails.storeName+'</a>'+
            '<li>'+currentStoreDetails.address+'</li>'+
            '<li class="visitstorediv" style="width:90%; float:left;">'+                    
                '<div class="storemapbtn">'+
                    '<div class="navbtn">'+
                        '<span class="navbtn_l"></span><span class="navbtn_m">'+
                            //'<input class="mj_btnbg" onclick="ProcessSelectedDestStore('+curStoreIndex+')" type="button" value="View store on the map" />'+
                            '<input class="mj_btnbg" onclick="ShowPopup(' +curStoreIndex +')" type="button" value="View store on the map" />'+
                                '</span><span class="navbtn_r"></span>'+
                    '</div>'+
                '</div>'+
            '</li>'+  
            '<li class="visitstorediv" style="width:90%; float:left;">'+                    
                '<div class="storemapbtn">'+
                    '<div class="navbtn">'+
                        '<span class="navbtn_l"></span><span class="navbtn_m">'+
//                            '<input class="mj_btnbg" onclick="OpenNewWindow(\''+currentStoreDetails.siteurl+'\')" type="button" value="Visit the webstore" />'+
                            '<input class="mj_btnbg" onclick="OpenNewWindow(\''+currentStoreDetails.siteURL+'\')" type="button" value="Visit the webstore" />'+
                        '</span><span class="navbtn_r"></span>'+
                    '</div>'+
                '</div>'+
            '</li>'+    
        '</li>'+
     '</ul>';
    return storeAddressFormat;
}


 function createAreasList(curObjId)
{        
    if(areaArray.length > 0)
    {
        var curObj = document.getElementById(curObjId);
        if(!popupAreas)
        {                
            popupAreas = document.createElement('DIV');
            popupAreas.id = 'divPopupFilter';
            popupAreas.className =  'filterareadiv';               
                        
            var closeButton = document.createElement('DIV');
            closeButton.id = 'divPopupFilterCloseButton';
            closeButton.className='filterclose';          
            closeButton.title = 'Close';                            
            closeButton.onclick = closeAreaPopup;	                		        
    	    
	        var popupAreasList = document.createElement('DIV');	 
	        popupAreasList.id = 'divPopupFilterList';
	        popupAreasList.className='filterarealist';          	              
            popupAreasList.innerHTML = GetFormatedAreasList();	                                                      		    		           
    	    
            popupAreas.appendChild(closeButton);
            popupAreas.appendChild(popupAreasList);
            document.body.appendChild(popupAreas);											   	
        }
        else
        {
            popupAreas.style.display='block';                
        }	   
        SwapPosition(curObj,popupAreas);             	
    }                        
}   
function SwapPosition(sourceObj,DestObj)
{
    var curLeft = CommonFunctions.GetLeftPos(sourceObj) + 20; //- (curObj.offsetHeight + 12)
    var curTop = CommonFunctions.GetTopPos(sourceObj)  + 10;
    if(CommonFunctions.IsIE6() == true)
    {
        curTop = curTop - 25;
    }
    DestObj.style.left = curLeft +  'px';
    DestObj.style.top = curTop + 'px';	
}
function closeAreaPopup()
{		
    if(popupAreas)
    {
        popupAreas.style.display='none';
    }
} 
function GetFormatedAreasList()
{
    var strRet = "";
    //curAreaStoreDetails = curAreaStoreDetails.slice(1,curAreaStoreDetails.length);
    areaArray.sort(); 
    //areaArray = ['All'].concat(areaArray);
    if(areaArray && areaArray.length > 0)
    {
        strRet = '<ul class="arealistdetails">';
        for(var slen=0;slen<areaArray.length;slen++)
        {
            strRet += '<li onclick="processSelectedAreaFromList(\''+areaArray[slen]+'\')"><a href="#">'+areaArray[slen]+'</a></li>'                     
        }
        strRet += '</ul>';
    }       
    return strRet;
}
function processSelectedAreaFromList(curSelArea)
{
   document.getElementById('divStoresList').innerHTML = GetFormatedStoreAddressesList(curSelArea); 
   closeAreaPopup();
}  
function OpenNewWindow(curUrl)
{
    window.open(curUrl,'UrlWin');//'menubar=yes,toolbar=yes,status=yes,width=700,height=600,left=250,top=180,resizable=yes,scrollbars=yes'
}       

function FillAreaArray()
 {
    if(storeArray && storeArray.length > 0)
    {
       areaArray = new Array();
       areaArray[0] = 'All';            
        //var flagInclude = true; 
      
       for(var slen=0; slen < StoresArrayByCity .length; slen++)
       {
       if(areaArray.length == 0){
              areaArray[areaArray.length++] = StoresArrayByCity[slen].area;
             }else{
              var flag = false;
              for(var clen=0; clen < areaArray.length; clen++)
              {
                if(areaArray[clen] == StoresArrayByCity[slen].area){
                 flag = true;
                }
              }
              if(!flag){
              areaArray[areaArray.length++] = StoresArrayByCity[slen].area;
              }
             }
        }
       
     }
       
      /*   for(var slen=0; slen < storeArray.length; slen++)
        {    
           if(storeArray[slen].city.toLowerCase() == selCity.toLowerCase()) {
             if(areaArray.length == 0){
              areaArray[areaArray.length++] = storeArray[slen].area;
             }else{
              var flag = false;
              for(var clen=0; clen < areaArray.length; clen++)
              {
                if(areaArray[clen] == storeArray[slen].area){
                 flag = true;
                }
              }
              if(!flag){
              areaArray[areaArray.length++] = storeArray[slen].area;
              }
             }
           }*/
       /* 
            flagInclude = true;          
            for(var clen=0;clen<areaArray.length;clen++)
            {            
                if(areaArray[clen] == storeArray[slen].area)
                {
                    flagInclude = false; break;   
                }
            }
            if(flagInclude == true)
            {            
                alert(storeArray[slen].area);
                areaArray[areaArray.length] = storeArray[slen].area;
            }*/
        
                            
} 





// Deals with Common Functions

var CommonFunctions = new function()
{
    this.DisplayMessage = function(curMsg)
    {
        alert(curMsg);
    };
    
    this.GetBrowserName = function()
    {
        return navigator.appName;
    };
    this.GetBrowserVersion = function()
    {
        return navigator.appVersion;
    };

    this.IsIE  = function()
    {
        return ((this.GetBrowserName() == "Microsoft Internet Explorer") ? true : false);
    };
            
    this.IsIE6 = function()
    {
        var retVal = false;
        if (this.IsIE() == true)
        {                   
            var tmpArr = this.GetBrowserVersion().split(";");
            if(tmpArr.length > 2)
            {                
                var tempArr = tmpArr[1].split(' ');                
                if(tempArr.length > 0)
                {
                    try
                    {
                        if(parseFloat(tempArr[2]) <= 6 )
                        {
                            retVal = true;
                        }
                    }
                    catch(err) {}                                                            
                }                
                tempArr = null;
            }                       
            tmpArr = null;
        }
        return retVal;
    };   
        
    this.DisplayMouseFollower = function(FollowerDivId,mouseevent)
    {
        var dispEle = document.getElementById(FollowerDivId);          
        dispEle.style.display = 'block'; 
        var curWidth = dispEle.style.width;
        var curHeight =  dispEle.style.height;  
        if(this.IsIE())
        {
            if(curWidth && curWidth.length > 0 && curHeight && curHeight.length > 0)
            {
                dispEle.style.left = mouseevent.clientX - (parseInt(curWidth.toLowerCase().replace('px',''),0))  + 'px';
                dispEle.style.top = mouseevent.clientY - (2*parseInt(curHeight.toLowerCase().replace('px',''),0)) - 2   + 'px';
            }
            else
            {
                dispEle.style.left = mouseevent.clientX + 'px';
                dispEle.style.top = mouseevent.clientY + 'px';
            }
        }                              
        else
        {
            if(curWidth && curWidth.length > 0 && curHeight && curHeight.length > 0)
            {
                dispEle.style.left = mouseevent.clientX - (parseInt(curWidth.toLowerCase().replace('px',''),0))  + 'px';
                dispEle.style.top = mouseevent.clientY - (2*parseInt(curHeight.toLowerCase().replace('px',''),0)) - 2   + 'px';
            }
            else
            {
                dispEle.style.left = mouseevent.clientX + 1 + 'px';
                dispEle.style.top = mouseevent.clientY  + 1 + 'px';
            }
        }
        dispEle = null;    
    };
    
    this.GetTopPos = function(inputObj)
    {	
      var returnValue = inputObj.offsetTop;
      while((inputObj = inputObj.offsetParent) != null)
      {
        returnValue += inputObj.offsetTop;
      }
      return returnValue;
    };

    this.GetLeftPos = function(inputObj)
    {
      var returnValue = inputObj.offsetLeft;
      while((inputObj = inputObj.offsetParent) != null)returnValue += inputObj.offsetLeft;
      return returnValue;
    };
}


