var popup,prtFriendly;			
var maximumpage;

var historyPosition = 0;		

function initialize()
{			
	// initialize RSH
	dhtmlHistory.initialize();
	
	// add ourselves as a listener for history
	// change events
	dhtmlHistory.addListener(handleHistoryChange);             							
}

function PopUnavailableStatus()
{
		var popUnavailable;
		popUnavailable = window.open('/static/pop_unavailable.html', 'Unavailable','height=350,width=480,status=no,toolbar=no,menubar=no,location=no');
		popUnavailable.focus();
}
	
function addHistoryItem(key, pars)
{
	dhtmlHistory.add(key, pars);

	var target = document.getElementById('mainBlock');
	if (target){target.style.display = 'inline';}				
}	

function handleHistoryChange(newLocation, historyData) {
	// use the history data to update our UI
					
	if (newLocation == '')
	    {
		updateUI('', window.location.search.substr(1) + '&RType=0');
	    }
	else
		{
		updateUI(newLocation, historyData);								    
	    var sliderArray = getSliders(historyData);
	        if(sliderArray.length > 0){
	            adjustSliders(sliderArray);
	            initSliders();	    
	        }	    
		}		
}

//Parse the queryString to see if we havemoved any sliders.
function getSliders(qString){
    var qs = new Array();
    var pairs = qString.split('&');
    var sliderCount = 0; 
    if(pairs){
       for (i=0;i < pairs.length; i++){
        if(pairs[i].toString().indexOf('slider')!=-1){            
            qs[sliderCount] = pairs[i].toString();
            sliderCount++;
         }
       }
    }   
        
    return qs; 
}

//If we have a history of slider adjustments
//we need to adjust the sliders to the previous values.
function adjustSliders(slidersArray){
    for(i=0; i<slider.length;i++){
        for(j=0; j<slidersArray.length;j++){
            var sliderQuery = slidersArray[j].split('=');
            var sliderName = sliderQuery[0].split('slider');
            var testStr = sliderName[1].toLowerCase();
            if(slider[i].name == testStr){
                slider[i].val = sliderQuery[1];
                break;
            }
        }
    }
}

function updateUI(newLocation,historyData) {
     updateResults(historyData);         
}

function sponsor(url,hasPhoto) {
	var popWidth;
	
	if (hasPhoto) popWidth = 626;
	else popWidth = 420;
			
	if (url.length > 0) { OpenWindow(url,popWidth,600,'no','no','no','no','yes','yes',1); }
}
function sponsor_red(url){document.location.href=url;}												

		
function moveToInitResults(url)
{
	window.location.href = url;
}

function PopWindow(page,title,height){			
	if (!popup || popup.closed){popup=window.open(page, title,'height=' + height + ',width=486,status=no,toolbar=no,menubar=no,location=no,scrollbars=yes');} 
	popup.focus();
}
function PopPrint(page){						
	if (!prtFriendly || prtFriendly.closed)
		{
		if(page.indexOf('view=map')> -1)
		  {
		  var sessionid = document.getElementById('hSessionID');	
		  if (sessionid==null){sessionid = document.getElementById('ajxresultsmap_hSessionID');}
		  
		  var scale=document.getElementById('hScale');			
		  if (scale==null) {scale=document.getElementById('ajxresultsmap_hScale');}

		  if(sessionid){page+='&MapSession=' + sessionid.value;}
		  if(scale){page+='&curScale='+ scale.value;}
		  }				
		//alert(page);
			
		prtFriendly=window.open(page, 'Print','height=700,width=690,status=no,toolbar=no,menubar=no,location=no,scrollbars=yes');
		} 
		
		prtFriendly.focus();
}		


function moveToPage(url,objid)
{	

	var oPageVal=document.getElementById("txtCurrPage_" + objid);
		
	if (oPageVal) {		
	
		var curVal=oPageVal.value;		
		
		if (IsNumeric(curVal)) {		
			var mxPg=document.getElementById("hidmaxPage");
			
			if (mxPg){							
				maximumpage=mxPg.value;
			}
			
			if ((curVal>=1) && (curVal<=parseInt(maximumpage)))
			{	
				url=url + '&pgNum=' + curVal;						
			}
			else
			{	var orgPg=document.getElementById("hidOrgPage");
				url=url + '&pgNum=' + orgPg.value;					
			}
		}					
		else
			{	var orgPg=document.getElementById("hidOrgPage");
			url=url + '&pgNum=' + orgPg.value;			
			}
					
		getResults(url);
	}					
}

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;
}
}
return IsNumber;
	
}

function updateResults(pars)
{

    if (pars != '&RType=0') {
        DisplayLoading(true); //displaying loading image

        //alert(pars);

        // Store the parameters so that we know what the 'last' parameter was.
        // this can be passed into another page during navigation and used to
        // set return links and rebuild breadcrumbs.
        currentEndecaQuery = pars;

        var url = '/search/resultslanding.aspx';
        var myAjax = new Ajax.Request(
			url,
			{
			    method: 'get',
			    parameters: pars,
			    onComplete: showResponse
			});
    }	
		
}

function getResults(pars)
	{	
	    proxUrl = pars;		
	    try
	      {
		    clearReviewConfirmation();
    				
		    DisplayLoading(true); //displaying loading image
    				
		    // Store the parameters so that we know what the 'last' parameter was.
		    // this can be passed into another page during navigation and used to
		    // set return links and rebuild breadcrumbs.
    		
		    currentEndecaQuery = pars;
    					
		    historyPosition++;
    		var lastSliderAdjustmentName = getLastSliderAdjustment(pars)
    		
    		//if a slider adjustment was made we need to make
    		//sure no other slider with the same name exists
    		//in the history.
    		if (lastSliderAdjustmentName && lastSliderAdjustmentName.length > 0){
    		   pars = rebuildQueryString(pars,lastSliderAdjustmentName);    
    		} 
		    addHistoryItem('id' + historyPosition, pars);
	    
		    var url='/search/resultslanding.aspx';
		    var myAjax=new Ajax.Request(
			    url,
			    {
				    method: 'get',
				    parameters: pars,
				    onComplete: showResponse
			    });	   		   
		  }
		catch (e) {DisplayLoading(false);} 									 		
	}
	
	
function getLastSliderAdjustment(historyURL){
    var qs = new Array();
    var pairs = historyURL.split('&');
    
    if(pairs[pairs.length -1].indexOf('slider') > -1){
        return pairs[pairs.length -1]
    }

}
//Rebuild The URL incase a slider adjustment is made
function rebuildQueryString(historyURL,lastSlider){
    var qs = new Array();
    var pairs = historyURL.split('&');
    var sliders = getSliders(historyURL)
    var newURL = ''
    
    for(i = 0; i < pairs.length;i++){
        //build everything except the sliders
        if(pairs[i].indexOf('slider') <=-1){
            if (newURL.length > 0){
                newURL += '&' + pairs[i];                
            }
            else{
                newURL += pairs[i]; 
            }
        }
        
     }
     //iterate through all the slider adjustments
     //and keep the latest and greatest
     var lastSliderName = lastSlider.split('=')
     for(j=0;j<sliders.length;j++){
        if((lastSlider != sliders[j]) && (sliders[j].indexOf(lastSliderName[0])) > -1){
                      
            if (newURL.length > 0){
                newURL += '&' + lastSlider;                
            }
            else{
                newURL += lastSlider; 
            }       
        }
        
        else{
            if (newURL.length > 0){
                newURL += '&' + sliders[j];                
            }
            else{
                newURL += sliders[j];
            } 
        }
        
        
     }
     
     //If our URL does not have the lastest
     //slider adjustment add it.
     if(newURL.indexOf(lastSlider) <=-1){
        newURL += '&' + lastSlider;  
     }
        

    return newURL;
}	
function showResponse(originalRequest)
{						
	try
	  {		    
		var response  = originalRequest.responseText;	    
		var PrintKeyXMLStartIndex = response.indexOf("<PrintLink>");
		var PrintKeyXMLEndIndex = response.indexOf("</PrintLink>");

		if ((PrintKeyXMLStartIndex!=-1) && (PrintKeyXMLEndIndex!=-1))
		{
			var anUpdate = response.substring(PrintKeyXMLStartIndex+"<PrintLink>".length, PrintKeyXMLEndIndex);
		
			if (anUpdate)
			{
				var KeyWrapper = document.getElementById('actionWrapper');
				KeyWrapper.innerHTML = anUpdate;
			}
		}
		
		var MappingXMLStartIndex = response.indexOf("<MappingResults>");
		var MappingXMLEndIndex = response.indexOf("</MappingResults>");
		
		if ((MappingXMLStartIndex!=-1) && (MappingXMLEndIndex!=-1)) {
			var anUpdate = response.substring(MappingXMLStartIndex+"<MappingResults>".length, MappingXMLEndIndex);
			
			
			if (anUpdate)
				{
				var MapList = document.getElementById('resultsMainContent');
				MapList.innerHTML = anUpdate;
			    					    					    					
				var scriptpos =anUpdate.indexOf("function initMap(){");
				var scriptend=anUpdate.indexOf("myMap.bestFit();");
				//var scriptend=anUpdate.indexOf("initMap();",scriptpos+"function initMap(){".length);
				//alert(MapList.innerHTML.substring(anUpdate.indexOf("divKeys")));
				if ((scriptpos!=-1) && (scriptend!=-1)) {
					//Since it's an html replacement, the javascript wasn't executed for the map, so have to 
					//extract the javascript out of the map and then use eval to execute the statements inside
					//for loading map icons,unable to use serverside register to active the script
					 var curscript=anUpdate.substring(scriptpos+"function initMap(){".length, scriptend+ "myMap.bestFit();".length);
					 //var curscript=anUpdate.substring(scriptpos, scriptend+ "initMap();".length);					 
					 //alert(curscript.substring(curscript.length - 500));
					 //alert(curscript);
					 try
					    {eval(curscript);}
					 catch (e)
	                    {}   					 
				    }				    			    				 				
    			}     			  			
			}
		
		var PagingXMLStartIndex = response.indexOf("<PagingResults>");		
		var PagingXMLEndIndex = response.indexOf("</PagingResults>");
		
		if ((PagingXMLStartIndex!=-1) && (PagingXMLEndIndex!=-1)) {
			var anUpdate = response.substring(PagingXMLStartIndex+"<PagingResults>".length, PagingXMLEndIndex);
			if (anUpdate){
                
				var resultList = document.getElementById('resultsMainContent');					
				resultList.innerHTML= anUpdate;				
				refreshTopDiv();
										
				//var scriptpos = anUpdate.indexOf('mpoi_data');
				//var scriptend = anUpdate.indexOf('</script>');
				/*
				if ((scriptpos!=-1) && (scriptend!=-1)) {					
					var curscript=anUpdate.substring(scriptpos, scriptend);
					try
					{
						eval(curscript);
					}
					catch (e)
					{
					}
					selectZoom();
					}
				else
					{}					
                */                
                ReloadEventsForToolTips();
			   }
			}
			
		var CrumbXMLStartIndex = response.indexOf("<BreadCrumbs>");
		var CrumbXMLEndIndex = response.indexOf("</BreadCrumbs>");
	    	    	    
	    	    	    
		if ((CrumbXMLStartIndex!=-1) && (CrumbXMLEndIndex!=-1)) {
			var anUpdate = response.substring(CrumbXMLStartIndex+"<BreadCrumbs>".length, CrumbXMLEndIndex);			
			
			if (anUpdate)
				{
				//var crumb = document.getElementById('topPageTitle');		
				var crumb = document.getElementById('resultsHeaderDiv');	
	        											
				if(crumb){
				
				if(anUpdate.length > 0){
					crumb.style.visible = 'True';
					crumb.style.display = 'Block';
					crumb.innerHTML= anUpdate;
					}			    						
				else {crumb.style.visible = 'False';}   			  
				}
			  }  
			}	
			
			
		var YPXMLStartIndex = response.indexOf("<LefNavYP>");
		var YPXMLEndIndex = response.indexOf("</LefNavYP>");
	    	    	    
	    	    	    
		if ((YPXMLStartIndex!=-1) && (YPXMLEndIndex!=-1)) {
			var anUpdate = response.substring(YPXMLStartIndex+"<LefNavYP>".length, YPXMLEndIndex);			
			
			if (anUpdate)
				{
				//var crumb = document.getElementById('topPageTitle');		
				var YP = document.getElementById('YPBlock');	
	        											
				if(YP){
				
				if((anUpdate.length > 0)&&(anUpdate.indexOf('<div />')<0)){

					YP.style.visible = 'True';
					YP.style.display = 'Block';
					YP.innerHTML= anUpdate;
					}			    						
				else {
				    YP.style.visible = 'False';
				    YP.style.display = 'None';
				    YP.innerHTML= anUpdate;
				}   			  
				}
			  }  
			}	
//		var SliderXMLStartIndex = response.indexOf("<SliderValues>");
//		var SliderXMLEndIndex = response.indexOf("</SliderValues>");
//			
//		if ((SliderXMLStartIndex != -1) && (SliderXMLEndIndex != -1))
//		{	
//			var anUpdate = response.substring(SliderXMLStartIndex +"<SliderValues>".length, SliderXMLEndIndex);
//			if (anUpdate)
//			{			
//				eval (anUpdate);		
//				try
//				{
//				ReloadEventsForSliders();			
//				}
//				catch (e)
//				{
//				}
//			}		  
//		}
//		else{
//			initSliders();	
//		}
			
		var NavXMLStartIndex = response.indexOf("<LefNav>");
		var NavXMLEndIndex = response.indexOf("</LefNav>");

		if ((NavXMLStartIndex!=-1) && (NavXMLEndIndex!=-1)) {
			var anUpdate = response.substring(NavXMLStartIndex+"<LefNav>".length, NavXMLEndIndex);
			if (anUpdate)
				{
					anUpdate=anUpdate.replace(/\r|\n|\r\n/g, "");
					
					var leftNavRefine = document.getElementById('NavCategories');
					leftNavRefine.id = 'cats';
					var leftNav = document.getElementById('divLeftNav');
					var leftSlider = document.getElementById('pane_sliders');
					var leftNavHeader = document.getElementById('refineHeader');
					var leftvertBrowse = document.getElementById('NavVertBrowse');
						
															
					if(leftNavRefine){
						//leftNavRefine.innerHTML= anUpdate;		    
						if(anUpdate.length > 0)
						{
		
							leftNavRefine.innerHTML= anUpdate;	
							var leftremoveForNavCats = document.getElementById('removeForNavCats');
							if (leftremoveForNavCats)
							{
							    leftNavRefine.removeChild('removeForNavCats');
							}				
							
							// Temporary fix to stop double display of ratings on
							// sponsored results page.
							var navInPaneset = document.getElementById('paneset1');

							if(navInPaneset)
							{   
								var slidersInPaneset = navInPaneset.getElementsByTagName('DIV');
								
								if(slidersInPaneset)
								{																								
									for (i = 0; i <= slidersInPaneset.length - 1; i++)
									{
										if (slidersInPaneset[i].id == 'pane_sliders')
										{
											slidersInPaneset[i].style.display = 'none';
										}
										else if (slidersInPaneset[i].id == 'distanceWrapper')
										{
											slidersInPaneset[i].style.display = 'none';
										}
	
									}
								}
							}						
							
							// End temp fix.	
							
							if (anUpdate == '<div />')
							{
							    if (leftNavRefine){
								    leftNavRefine.style.display='none';
								}
								if (leftNav){
								    leftNav.style.display='none';	
								}
								if (leftNavHeader){
								    leftNavHeader.style.display='none';	
								}
								if (leftvertBrowse){	
								    leftvertBrowse.style.display='none';
								}
							}
							else
							{
                                if (leftNavRefine){
								    leftNavRefine.style.display='block';
                                }
								if (leftNav){
							        leftNav.style.display='block';	
							    }
                                if (leftNavHeader){
							        leftNavHeader.style.display='block';
	                            }
	                            if (leftvertBrowse){
							        if (anUpdate.indexOf("showpane")>0)
							        {	
							            leftvertBrowse.style.display='block';	
							        }
							        else
							        {
							            leftvertBrowse.style.display='none';
							        }
							    }		
							}
						}
						else 
						{					
							if (!leftSlider){
								if(leftNav){
									leftNav.style.display='none';
								}
							}
							if (leftNavRefine){
							    leftNavRefine.style.display='none';
							}
						}
					
				}			
									
				ReloadEventsForNavs();					
			 }
			 
		 }		
		 /*
		 This is required for the History fix.  It is possible that the user
		 has clicked forward or back, losing the correct tab on the results if
		 they have switched views.
		
		 Init variables that will default to as whether we think the map is
		 displayed, and the element that it is stored in.
         var isMapVisible = false;
         var mapContainer = document.getElementById('divMap');
        
         Check for object instance.
         if (mapContainer){isMapVisible = (mapContainer.style.display = 'block');}	
         */
//        var listTab = document.getElementById('tabList');
//        var mapTab = document.getElementById('tabMap');
//        var icoprint = document.getElementById('icoprint');  
//                      
//		if (mapTab)
//	   {
//			if (isMapVisible) {
//				listTab.className = '';
//				mapTab.className = 'curr';
//			}
//			else {
//				listTab.className = 'curr'; 
//				mapTab.className = '';
//			}
//								    		    
//		    if(icoprint){
//				icoprint.className=(isMapVisible)? 'elhide':'print';
//				
//				//CR# 16489	- htaningco - 5/15/2007 - take out the print icon when switching to map view
//				// but keep the Ratings Key icon
//				/*
//				icoprint.style.display =(isMapVisible)? 'none':'block';
//				*/
//			}		      
//	
//	   }
		   
		//hidding loading image	
		//DisplayLoading(false);
		//initPageAdv(false);		
		//	bb_save_state();			
	  }
	catch (e)
	  { }
	finally
	  {
	  initMemAdd();
	  //initFlyover();
	  DisplayLoading(false);	 
	  run_adv(false);
	  initPanes('cats');
	  }    	
}

function ReloadPropPage(details_link){
if(typeof doEndecaNavigate != 'undefined') 
     {doEndecaNavigate('/Verticals/PropertyDetails.aspx' + details_link);}
else {
     if (window.opener){
        window.opener.location = '/Verticals/PropertyDetails.aspx' + details_link;	self.close();}
     else {window.location= '/Verticals/PropertyDetails.aspx' + details_link;}
     }
}

function ChangePagingResultNum(cboResults,vid,url)
{
	var curVal =cboResults.options[cboResults.selectedIndex].value;
	url=url+'&resn='+curVal;	
	
	checkYPBox(url);
	//getResults(url);

}

function toggle_showPrevalence(id)
{
	var nListRoot = document.getElementById(id);
	
	if (nListRoot)
	{	

		var lListItems = nListRoot.getElementsByTagName('LI');

		for (i = 0; i <= lListItems.length - 1; i++)
		{	
				switch (lListItems[i].getAttribute('name'))
				{
					case 'byPrev':
						lListItems[i].style.display = 'block';
						break;
					
					case 'byAlpha':
						lListItems[i].style.display = 'none';
						break;
				}
		}
		resJump();
	}
}

function toggle_hidePrevalence(id){	
var nListRoot = document.getElementById(id);
if (nListRoot){	
	var lListItems = nListRoot.getElementsByTagName('LI');
	
	var i = 1;
	if (lListItems[i].getAttribute('name')=='byPrev')
	{
	    i = 0;
	}
	
	for (i ; i <= lListItems.length - 1; i++)
	    {	
		switch (lListItems[i].getAttribute('name'))
		    {
			case 'byPrev':
				lListItems[i].style.display = 'none';
				break;
			
			case 'byAlpha':
				lListItems[i].style.display = 'block';
				break;
		    }
	    }
    setLoadPos (nListRoot)
    }
}

function toggle_alpha(id){
show_short_alpha(id);	
var obj = document.getElementById(id);	
if (obj){obj.className = (obj.className != "hidepane" ? "hidepane" : "showpane" );}		
}

function show_short_alpha(id){
var obj = document.getElementById(id);
var liObjects = obj.getElementsByTagName('LI');
	
for (i = 0; i <= liObjects.length - 1; i++)
    {		
	if (liObjects[i].className == 'fewerlinks')
	    {			
		if (liObjects[i].parentNode.style.display == 'block')
		    {
			var lin = liObjects[i].getElementsByTagName('A');
			if (lin){eval(lin[0].getAttribute('href'));}				
		    }
	    }
    }
}

function toggle_prev(id, strid){
var obj = document.getElementById(id);

if (obj){obj.className = (obj.className != "hidepane" ? "hidepane" : "showpane" );}
toggle_showPrevalence(strid);
}

function toggle_morelinks(id) {

var e = document.getElementById(id);
var elink = document.getElementById(id+'_more');
if(e.style.display == 'none')
   {	
	e.style.display = 'block';
	elink.style.display = 'none';
   }	
else
   {
   var panetop=e.parentNode;
   while (panetop.className != "showpane") 
         {panetop=panetop.parentNode;}
         
    var listY=findPosY(panetop);
	e.style.display = 'none';
	elink.style.display = 'block';
	if (listY < getScrollY()) {window.scrollTo(0,listY);}
   }		
}

function slidervaluechanged(id,val){    
var slid = document.getElementById(id);
val=Math.round(val);
if (slid){   	    
    var curUrl=document.getElementById('JumpPage');
	var strurl=curUrl.value;		
	//var position=strurl.indexOf("RType");		
	//if (position==-1){strurl=strurl+'&RType=0';}
	
	//CR#15840 Added this parse script to remove the 'No' variable - James Sang - 4/05/07
	strurl = parseString(strurl);
			
	if (parseInt(val)==slid.max) {strurl=strurl+'&' + id + '=' + val  + '&maxed=1';}
	else {strurl=strurl+'&' + id + '=' + val;}
			
	getResults(strurl);	
    }		
}

//CR#15840 Added this parse script to remove the 'No' variable - James Sang - 4/05/07
function parseString(strurl){
var firstPos = strurl.indexOf("No=")

if (firstPos > -1)
    {
	var secondPos = strurl.indexOf("&",firstPos);
	if (secondPos > -1){newString = strurl.substring(0,firstPos) + strurl.substring(secondPos+1, strurl.length);}
	else {newString = strurl.substring(0,firstPos-1);}
	return newString;
    }
else {return strurl;}
}

/*
function toggleView(id,param) {
var rtype;
var list;
var tabmap= document.getElementById('tabMap');
var tablist = document.getElementById('tabList');

if (id=='tabList')
   {tabmap.className=""; tablist.className="curr"; list=true; rtype='&RType=1';}
else
   {tabmap.className="curr"; tablist.className=""; list=false; rtype='&RType=2';}
 
var newstrurl;
var curUrl=document.getElementById('JumpPage');
var strurl=curUrl.value.toLowerCase();
var position = strurl.indexOf("rtype");	
if (position == -1){strurl=strurl+rtype;}		

if (list==true)
    {	    
    newstrurl=strurl.replace('&view=map','');    
	if (strurl.indexOf('&View=Map') > -1) {newstrurl=strurl.replace('&View=Map','');}
	if (strurl.indexOf('&view=map') > -1) {newstrurl=strurl.replace('&view=map','');}	
	if (strurl.indexOf('&view=map') > -1) {newstrurl=strurl.replace('&View=Map','');}		
    }
else{
	 strurl = strurl.replace('&view=list','');
	 strurl = strurl.replace('&view=List','');
	 strurl = strurl.replace('&view=list','');
	 newstrurl = strurl + "&View=Map";	 
	 }								
getResults(newstrurl);
}
*/

//function MM_preloadImages() { //v3.0
//var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
//var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
//if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
//}

//function swapimage(obj,img){
//	SaveImgSrc = obj.src;
//	obj.src = img;
//}


function refreshTopDiv(){
var dvTop = document.getElementById('zagat_top');  
if(dvTop == '[object HTMLDivElement]'){dvTop.innerHTML = dvTop.innerHTML;}  
}

/*
var ddlNeighborhood = '';
var dvStandardHeader = 'ctl00_ctl00_MainMasterPageContentHolder_ResultsListContentPlaceHolder_UsrReview_dvStandardHeader';
var dvMemberYellowHeader= 'ctl00_ctl00_MainMasterPageContentHolder_ResultsListContentPlaceHolder_UsrReview_dvMemberYellowHeader';
var flsSelects = 'ctl00_ctl00_MainMasterPageContentHolder_ResultsListContentPlaceHolder_UsrReview_flsSelects';
var ddlCuisine = 'ctl00_ctl00_MainMasterPageContentHolder_ResultsListContentPlaceHolder_UsrReview_ddlCuisine';
*/

//James Sang  
// Note: ServerdvStandardHeader, ServerdvMemberYellowHeader, ServerflsSelects are created serverside in UserReview.ascx.vb
     
function popReviewJSON(obj){		

var notpublicview = document.getElementById('notpublicview');
var voteview = document.getElementById('vote_review');	
var dvPublicUpdate = document.getElementById('dvPublicUpdate');		
var ddlNeighborhood = document.getElementById(ServerddlNeighborhood);		
var dvStandardHeader = document.getElementById(ServerdvStandardHeader);
var dvStandardSubHeader = document.getElementById('dvStandardSubHeader');
var dvMemberYellowHeader= document.getElementById(ServerdvMemberYellowHeader);
var flsSelects= document.getElementById(ServerflsSelects);
var ddlCuisine = document.getElementById(ServerddlCuisine);
var astreq = document.getElementById('reviewreq');	

var json = obj.getAttribute('json');	
var webId = obj.getAttribute('webid');
var nids = obj.getAttribute('neighborhoodids');		
	
geoid = obj.getAttribute('geoid');	  	  	  	
ptype = obj.getAttribute('ptype');
neighborhood = obj.getAttribute('neighborhood');
cuisines = obj.getAttribute('cuisines');
islist =obj.getAttribute('islist'); 	
	
if (ptype==1)
    {	   
    astreq.className = 'elhide';
    dvMemberYellowHeader.className = 'elhide';
    dvPublicUpdate.style.display = 'none';   	  
    dvStandardHeader.className = 'elview';

    if (dvStandardSubHeader){dvStandardSubHeader.className = 'elhide';}

    notpublicview.className = 'elhide'; 	    
    voteview.className = 'elview';	
    flsSelects.className = 'elhide'; 
   
    /*
    populateNeighborhoods(nids,neighborhood);
    populateCuisines(ddlCuisine, cuisines);
    */
    }
	
else if (ptype==2)
    {	
    astreq.className = 'req';
    dvMemberYellowHeader.className = 'elview';
    dvPublicUpdate.style.display = 'none';  	  	  
    dvStandardHeader.className = 'elhide';
    flsSelects.className = 'elview'; 
    populateNeighborhoods(nids,neighborhood);
    populateCuisines(ddlCuisine, cuisines);
    
    if (ispublic==0) {notpublicview.className = 'elview'; voteview.className = 'elhide';}
    else {notpublicview.className = 'elhide'; voteview.className = 'elview';}
    }  	    	    
else if (ptype==3)
    {	    
    astreq.className = 'elhide';
    dvMemberYellowHeader.className = 'elhide';
    dvPublicUpdate.style.display = 'none'; 
    dvStandardHeader.className = 'elview';
    dvStandardSubHeader.className = 'elview';	  
    flsSelects.className = 'elhide';
    notpublicview.className = 'elhide';
    voteview.className = 'elview';   
    }
    																		
// Load the parameter into a string.
var holding = new String();
holding = json.toString();

// Convert to a JSON string.
holding = holding.replace(/\+/g, ' ');
holding = unescape(holding);
holding = toJsonString(holding);

// Replace the double escaped characters.
holding = holding.replace(/\\\\/g, '\\');
holding = holding.replace(/\\\\\"/g, '\\"');
				
// Trim the double quotes that are created by toJsonString
holding = holding.substring(1);
holding = holding.substring(0, holding.length - 1);

// Evaluate it.
var updateParam = eval('(' + holding + ')');

if (showParams[webId] == null){showParams[webId] = new Array();}
	
showParams[webId]['propertyName'] = updateParam.propertyName;
showParams[webId]['radioScores'] = updateParam.radioScores;
showParams[webId]['textScores'] = updateParam.textScores;
showParams[webId]['description'] = updateParam.description;
showParams[webId]['voteId'] = updateParam.voteId;
showParams[webId]['webId'] = updateParam.webId;
showParams[webId]['isEdit'] = updateParam.isEdit;
showParams[webId]['surveyTypeId'] = updateParam.surveyTypeId;
showParams[webId]['costCurrencyId'] = updateParam.costCurrencyId;
showParams[webId]['currencySymbol'] = updateParam.currencySymbol;
showParams[webId]['propertyLink'] = updateParam.propertyLink;
			
showReview(showParams[webId]['propertyName'], showParams[webId]['radioScores'], showParams[webId]['textScores'], showParams[webId]['description'], showParams[webId]['voteId'], webId, showParams[webId]['isEdit'], showParams[webId]['surveyTypeId'], showParams[webId]['costCurrencyId'], showParams[webId]['propertyLink'], showParams[webId]['currencySymbol']);									
}

function popReview(webId){showReview(showParams[webId]['propertyName'], showParams[webId]['radioScores'], showParams[webId]['textScores'], showParams[webId]['description'], showParams[webId]['voteId'], webId, showParams[webId]['isEdit'], showParams[webId]['surveyTypeId'], showParams[webId]['costCurrencyId'], showParams[webId]['propertyLink'], showParams[webId]['currencySymbol']);}

function showReview(propertyName, votes, costs, description, newVoteId, newWebId, newIsEdit, newSurveyTypeId, newCostCurrencyId, propertyLink, currencySymbol){
showError('');

var errorDiv = document.getElementsByTagName('div');

for (var x = 0; x < errorDiv.length; x++)
    {if (errorDiv[x].id == 'errors') 
		{errorDiv[x].innerHTML = ''; errorDiv[x].className = 'elhide';}		 	
	}

this.propertyName = propertyName;

populateName(propertyName, currencySymbol);	
populateVotes(votes);
populateCosts(costs);
populateDescription(description);	
populatePropertyLink(propertyLink);	
// Set the variables that are specific to this vote.
voteId = newVoteId;
webId = newWebId;
isEdit = newIsEdit;
surveyTypeId = newSurveyTypeId;
costCurrencyId = newCostCurrencyId;	
}

function PublicStatusSet(status){

ispublic = status;

if(ispublic==1)
	{
	 var notpublicview = document.getElementById('notpublicview');
	 var voteview = document.getElementById('vote_review');	
	 var dvPublicUpdate = document.getElementById('dvPublicUpdate');
	 /*
	 var dvStandardHeader = document.getElementById('ucUserReview_dvStandardHeader'); //VR: Id changed
	 var dvMemberYellowHeader= document.getElementById('ucUserReview_dvMemberYellowHeader'); //VR: Id changed
	 var flsSelects= document.getElementById('ucUserReview_flsSelects'); //VR: Id changed
     */	 
     //James Sang  
     // Note: ServerdvStandardHeader, ServerdvMemberYellowHeader, ServerflsSelects are created serverside in UserReview.ascx.vb
     
     var dvStandardHeader = document.getElementById(ServerdvStandardHeader);
	 var dvMemberYellowHeader= document.getElementById(ServerdvMemberYellowHeader);
	 var flsSelects= document.getElementById(ServerflsSelects);
	
	 notpublicview.className = 'elhide';
	 dvStandardHeader.className = 'elhide';	 
	 voteview.className = 'elview';	 
	 dvPublicUpdate.style.display = 'block';  	 
  	 dvMemberYellowHeader.className = 'elview';
  	 flsSelects.className = 'elview';  
  	 setFlyPos();

	}
else
    {window.location.href='/ErrorRequest.aspx'}	
}

function populatePropertyLink(propertyLink){		
var propertyAnchor = document.getElementById('readother');	// First, find the anchor.					
if (propertyAnchor) {
    if(ptype==2) {propertyAnchor.className = "elhide";}
    else {propertyAnchor.className = "readother"; propertyAnchor.href = propertyLink;}	    
   }	// Make sure it is there.			
}

function populateName(propertyName, currencySymbol){
var titleProperty = document.getElementById('titleProperty');	
if(titleProperty){titleProperty.innerHTML = propertyName;}
var titleCurrency = document.getElementById('currencySymbol');	
if(titleCurrency){titleCurrency.innerHTML = currencySymbol;}								
}

function populateNeighborhoods(infData,neighborhoodName){
var hasSelected = false;
//alert(infData);
//VR: id 'ucUserReview_ddlNeighborhood' changed that is why neighborhoods are not populating
//Has to be dynamically assigned.
var ddlNeighborhood = document.getElementById(ServerddlNeighborhood); //VR: Id changed
//alert(ddlNeighborhood);
if(ddlNeighborhood && infData.length > 0){    
   ddlNeighborhood.options.length = 0;   //clearing all options      
   //populating first element
   //var InitOptn = document.createElement("OPTION");
   //InitOptn.value = '0'; InitOptn.text = 'Select a Neighborhood';
   ddlNeighborhood.options.add(new Option('Select a Neighborhood','0')); //InitOptn
      
   //populating options from array         
   var objOptions = infData.split('|');
   var curneigh = neighborhood.replace(/\'/,"'").toLowerCase();
   for(i=0;i<objOptions.length; i++){
      newOptionData = objOptions[i];
      newOptionArray = newOptionData.split(':');                              
	  optext = newOptionArray[1].replace(/\\'/,"'")	  
	  opt = new Option(optext,newOptionArray[0]);	  	  
	  if(curneigh!=''){if(optext.toLowerCase().indexOf(curneigh) > -1){opt.selected = true; hasSelected = true;}}	  
	  ddlNeighborhood.options.add(opt);
      }
   if(!hasSelected){ddlNeighborhood.selectedIndex = 0;}
  } 
   //If no infData (neighborhood ids) nor other neighborhoods exist, display the current - James Sang 
  else 
  {    
    ddlNeighborhood.options.length = 0;   //clearing all options   
    ddlNeighborhood.options.add(new Option(neighborhoodName,''));
  }       
}

function populateCuisines(objCuisine,cuisines){	
if(ptype < 3 && cuisines!= ''){		        			
    var curcus = cuisines.replace(/\\'/g, "'").toLowerCase();	    
	for(var i=0;i<objCuisine.options.length; i++){						
	    if(objCuisine.options[i].text.toLowerCase().indexOf(curcus) > -1)
		    {objCuisine.options[i].selected=true; break;}
	    }
   }
else {objCuisine.selectedIndex = 0;} 
}

function clearDescription(){
// descs live in the revdesc div's.  They will be standard divs
// that have an assigned css class of "revdesc".
var descElements = document.getElementsByTagName('div');				
// Iterate through all of the divs.
for (var x = 0; x < descElements.length; x++)
    {									
	// Check the class name.
	if (descElements[x].className == 'revdesc')
	    {						
		// Pull back any inputs.
		var inputElements = descElements[x].getElementsByTagName('textarea');
		// Iterate through the inputs.
		for (var y = 0; y < inputElements.length; y++)
		    {inputElements[y].value = '';} // Clear the value.		
	    }
    }			
}

function clearCosts(){
// Costs live in the revcost div's.  They will be standard divs
// that have an assigned css class of "revcost".
var costElements = document.getElementsByTagName('div');	
// Iterate through all of the divs.
for (var x = 0; x < costElements.length; x++)
    {									
	// Check the class name.
	if (costElements[x].className == 'revcost')
	    {													
		var inputElements = costElements[x].getElementsByTagName('input'); // Pull back any inputs.						
		for (var y = 0; y < inputElements.length; y++) // Iterate through the inputs.
		    {inputElements[y].value = '';} // Clear the value.		    
	    }
    }			
}

function clearVotes(){
// Votes live in the revnum div's.  They will be standard divs
// that have an assigned css class of "revnum".
var voteElements = document.getElementsByTagName('div');
// Iterate through all of the divs.
for (var x = 0; x < voteElements.length; x++)
    {									
	// Check the class name.
	if (voteElements[x].className == 'revnum')
	    {											
		// Pull back any label.
		var labelElements = voteElements[x].getElementsByTagName('label');		
		// Iterate through the labels.
		for (var y = 0; y < labelElements.length; y++)
		    {
			// Clear the class name, which is used to indicate a
			// selection.						
			labelElements[y].className = '';
		    }
	    }
    }	
}

function populateDescription(description){			
// Clear any votes that might be from a previous session.
clearDescription();
// Iterate through the divs.
var allDivs = document.getElementsByTagName('div');
for (var x = 0; x < allDivs.length; x++)
    {									
	// Check for revdesc.
	if (allDivs[x].className == 'revdesc')
	    {	
									
		var allInputs = allDivs[x].getElementsByTagName('textarea');		
		// Iterate through the inputs.

		for (var y = 0; y < allInputs.length; y++)
		    {

			allInputs[y].value = cleanUnescape(description);	
					
			// Find the remaining character span.
			var remainChar = document.getElementById('remain');
            
                if (document.all) //IE
                {
			        remainChar.innerText = 450 - allInputs[y].value.length + ' ';
			    }
			    else
			    {
    			    remainChar.textContent = 450 - allInputs[y].value.length + ' ';
			    }    
		    }
	    }
    }								
}

function populateCosts(costs){			
// Clear any votes that might be from a previous session.
clearCosts();

if (costs.length == 0)
	{return false;}				
// First, split the costs.  The outer split will consist of
// double pipes, which enclose name value pairs.
var pairArray = new Array();
pairArray = costs.split('||');
	
// Iterate over the elements.
for (var x = 0; x < pairArray.length; x++)
    {
	// Next, split the name value pair.
	var nameValue = new Array();
	nameValue = pairArray[x].split('|');
	
	// Now, update them.
	var costItem = document.getElementsByName(nameValue[0])[0];
	costItem.value = nameValue[1];
    }				
}

function populateVotes(votes){			
// Clear any votes that might be from a previous session.
clearVotes();
				
// First, split the votes.  Each vote should be an element
// name that needs to be passed through the "updateVote"
// script provided by the usercontrol.
var elementArray = new Array();
elementArray = votes.split('|');
    				
// Iterate over the elements.
for (var x = 0; x < elementArray.length; x++)
    {					
    // The string here should represent the id of the item
    // that should be toggled on.  First, pull back the
    // item.
    var voteItem = document.getElementById(elementArray[x].replace(/^\s*|\s*$/g,""));										
    // Make sure that it exists.
    if (voteItem != null){updateVote(voteItem);} // Pass it through.        
    }				
}

function cleanUnescape(str){
	str = "" + str;
	while (true)
	{
		var i = str . indexOf ('+');
		if (i < 0)
			break;
		str = str . substring (0, i) + '%20' +
			str . substring (i + 1, str . length);
	}
	return unescape (str);
}	


function clearReviewConfirmation(){
var divConf = document.getElementById('divConf');
if(divConf){divConf.innerHTML = ''; divConf.className = 'elhide';}
}

function SetReviewConfirmation(msg)
{

    var divConf = document.getElementById('divConf');
    

    if(divConf) 
    {

        divConf.innerHTML = msg + '<br>'; 
        divConf.className = 'elview'; 
        window.scrollTo(0,findPosY(divConf) - 20); 
    }
    else
    {
        var resultsMsg = document.getElementById('resultsMsg');
        
        if(resultsMsg)
        {               
            resultsMsg.innerHTML = msg; 
            resultsMsg.style.display='block';
            window.scrollTo(0,findPosY(resultsMsg) - 20); 
        } 
        
    }
}

function SetReviewConfirmationNew(msg){
var divConf = document.getElementById('confirmMsg');
if(divConf) {divConf.innerHTML = msg + '<br>'; divConf.className = 'elview'; window.scrollTo(0,findPosY(divConf) - 20); }
}

// Create the initial array for holding the parameters.
var showParams = new Array();
var currentEndecaQuery = new String();
			
// This function allows us to append a breadcrumb to the url prior
// to navigation.  This will allow the property details page to be
// able to rebuild the breadcrumb.
function doEndecaNavigate(url){		        
// If the user has not made any refinements, the query will be blank.
// When this happens, just pull the query string from the window.
if (!currentEndecaQuery || currentEndecaQuery.length == 0) {currentEndecaQuery = window.location.search.substring(1);}
// Navigate to passthrough.	
document.location.href = url + '&AJX=' + escape(escape(currentEndecaQuery));	  
}

function clearDistanceSort(){
var distanceCheck = document.getElementById('chkDistance');
if (distanceCheck){distanceCheck.checked = false;}
try  {validateUrl();}
catch(ex) { }	
}

function setCheckSort(){
validateUrl();	
getResults(initUrl);
}
	
function validateUrl(){		
var localCheck = document.getElementById('chkDistance');
		
if (localCheck.checked)
    {
	// Should be SD=1
	if (currentEndecaQuery != '')
	    {
	    if (initUrl.indexOf('&Sd=0&') > 0)
		     {initUrl = initUrl.replace('&Sd=0&', '&Sd=1&');}
		else {initUrl = currentEndecaQuery + '&Sd=1';}
	    }
	else
	    {
		if (initUrl.indexOf('&Sd=0&') > 0){initUrl = initUrl.replace('&Sd=0&', '&Sd=1&');}
	    }
    }
else
    {
	// Should be SD=0
	if (currentEndecaQuery != '')
	    {
	    if (initUrl.indexOf('&Sd=1&') > 0)
		     {initUrl = initUrl.replace('&Sd=1&', '&Sd=0&');}
		else {initUrl = currentEndecaQuery + '&Sd=0';			}
	    }
	else
	    {
		if (initUrl.indexOf('&Sd=1&') > 0){initUrl = initUrl.replace('&Sd=1&', '&Sd=0&');}
	    }
    }	
}
	
function getProxListing(curVal){   
//var newUrl = proxUrl + '&RType=0&prox=' + curVal;
var newUrl = proxUrl + '&prox=' + curVal;
getResults(newUrl);
}


function checkYPBox(strUrl)
{
   
    var element = document.getElementById('chkYellow');
    var newUrl = strUrl;
    
    //alert(newUrl);
    
    if (element)
    {
        if(element.checked==true)
        {
           if (strUrl.toLowerCase().indexOf('&yp')>-1)
           {
                newUrl = strUrl.replace('&yp=false','&yp=true');
           }
           else
           { 
                newUrl = strUrl + '&yp=true';
           }
        }
        else if (element.checked==false)
        {

            if (strUrl.toLowerCase().indexOf('&yp')>-1)
            {   
                newUrl = strUrl.replace('&yp=true','&yp=false');
            } 
            else
            {
                newUrl = strUrl + '&yp=false';
            }
        }
    }
    
    getResults(newUrl);
}