var _requestQueue = new Array();
var PAGE_SIZE = 25;
var _customerId = -1;

function cancelRequests(){
    while(_requestQueue.length>0){
        _requestQueue.pop().abort();
    }

}
function getCategoryNameFromActivePane(){
        if(activePane ==-1){
            return "Media";
        }else if(activePane ==-2){
            return "travelpacks";
        }else{
        return _categoryList[activePane];
    }
}


var _currentCategory = "all";
/**
 *associative array that holds category name : categoryid key value pairs, used to get the id from the category name
 *when managing the sidebar state. see filterCategory() and each specific javascript file's updateSidebar methods for
 *implementation details 
 */
var _categoryLookup = new Array();


/**
 * Called when all sidebar updates via ajax are successful and complete.
 */
function sidebarComplete() {
    TravelPack_Attach_Events();
    attach_trusted_clicks();
    attach_paging_events();
    notez_attach_events();
}


function moveMap(clat,clon,zoom,count){
     var thecount = count;
     var fail = false;
     if (thecount == null){
        thecount = 0;
     }
     try{
     var map = document.getElementById('myflash');
     map.positionMap(clat,clon,zoom);
     }catch(e){
       if(thecount<200){
        fail = true;
       } 
        
     }
     
     if(fail){
        var c = thecount+1;
        var timeoutstr = "moveMap("+clat+","+clon+","+zoom+","+c+")";
        setTimeout(timeoutstr,50);
        
     }

}
function hideCategories(){
    var map = document.getElementById('myflash');
    //hide all other layers 
    map.HideAllCategories();

}
function showCategory(sectionId,isTPK){
   

    
        
    var map = document.getElementById('myflash');
    //hide all other layers 
    map.HideAllCategories();
    //turn on the layer on the map

    map.ShowCategory(sectionId);
}





//End code Added By Alan Hietala
//Helper to get an element by its className
function getElementByClassName(parent,element_name,class_name){
	var arr_temp = parent.getElementsByTagName(element_name);
	var element;
	for(i=0;i<arr_temp.length;i++){
		if(arr_temp[i].className == class_name) element = arr_temp[i];
	}
	return element;
}


function sendMessage(message){
    
    var m = $('#messages')
    m.html(message);
    m.css('display', 'block');
    setTimeout('hideMessage()', 10000);
    
}

function hideMessage(){
    $('#messages').css('display', 'none');
}


var _checkCount = 1; // photos box is checked to begin with

function ShowPlace(dotId,placeId,isTPK){
    var map = document.getElementById('myflash');
    map.ShowPlace(dotId,placeId,isTPK);
}
function ShowMedia(dotId,mediaId,isTPK){
   var map = document.getElementById('myflash');
    map.ShowMedia(dotId,mediaId,isTPK);

}

function toggleCategory(categoryId,boxId){
    var isChecked = document.getElementById(boxId).checked;
    var map = document.getElementById('myflash');
    if(isChecked){
        //turn on the layer on the map
         map.ShowCategory(categoryId);
        _checkCount ++;
        if(_checkCount>=2)
        {
            
             disableUncheckedBoxes();
        }
    }else{
        //turn off the layer
       map.HideCategory(categoryId);
         _checkCount --;
         if(_checkCount<2){
            enableUncheckedBoxes();
          }
    }
}


var activePane;
var _north = 89.0;
var _south = -89.0;
var _east = 179.0;
var _west = -179.0;
var _clat = 0;
var _clon = 0;
var _zoom = 2;
var _sidebartimer;
function BoundingBox(north,south,west,east,clat,clon,zoom){
    //alert("bounding box");
    clearTimeout(_sidebartimer);
    _north = north;
    _south = south;
    _east = east;
    _west = west;
    _zoom = zoom;
    _clat = clat;
    _clon = clon;
    _sidebartimer = setTimeout('updateSideBar()',500);
    
   // PlanetEye.WebSite.WebService.AjaxService.GetCityForMapPage(clat,clon,zoom,SucceededGetCityForMapPageCallback,FailGetCityForMapPageCallback,"");
}

function SucceededGetCityForMapPageCallback(result, userContext, methodName)
{
    try{
    document.getElementById("MapBreadCrump").innerHTML = result;
    }catch(df){
    
    }
}


function FailGetCityForMapPageCallback(error)
{
}
function disableUncheckedBoxes(){
    $('#categories input').each(function()
	{
	    if(!this.checked)
            this.disabled=true; 
    });
    
        
}

function enableUncheckedBoxes()
{

    $('#categories input').each(function()
	{
	
	    if(!this.checked){
            this.disabled=false; 
        }
    });
  
}

function buildMediaGridItem(media){
    return buildMediaItem(media,false);

}
function buildMediaItem(media,isFirst){
    var vcard = "";	
 
 // this stuff should only be applied to tpk-pics.. not normal pics
 // need a flag here to tell us where we are..       	
        	  
			    vcard +="<div class='exp-photo-element'>";
//			        vcard +="<div class='tpk-pic'>";
					    if(_isMap){vcard+="<a class='fn org' href='javascript:ShowMedia("+media.DotId+","+media.MediaId+",false)'>";}
						else{vcard+="<a class='fn org' href='"+media.PageUrl+"'>";}
				            vcard+="<img class='pic' src='"+media.Url+"' />";
				        vcard +="</a>";
				    
				vcard +="</div>";
							
							
			//vcard+=	"<p class='add_to_tpk'><img src='/i/tpk_plus.png' /></p>"

           //DISABLEDDDDDD vcard+="<p class='add'><a href='#media," + media.MediaId + "'></a></p>";

		
            return vcard;


}

function buildNoItem(sectionName,showSuggest){

  var noItem =  "<div class='exp-nothing-found'>"
+"<span class='exp-nothing-found-text'>No " +sectionName +" found.</span>";
if(showSuggest){noItem+="<a class='exp-nothing-found-suggest-link' href='javascript:show_litebox(feedbackliteboxid,255,10);'>Suggest some to us.</a>";}
noItem+="</div>";

return noItem ;

}
var _isMap = true;
var _useSidebarDesc = false;
function buildPlaceItem(place,isFirst,showIcon,showSources, rank, category){
        
        
        
    var vcard=   "<div class='exp-element'>"
                      + "<div class='exp-element-main'>"
                       +     "<div class='exp-element-title'>"
                       if(_isMap == true){
                        vcard+= "<a href='javascript:ShowPlace("+place.DotId+","+place.PlaceId+",false)'>"+place.Title+"</a>";
                        }else{
                            vcard+= "<a href='"+place.Url+"'>"+place.Title+"</a>";
                        }
                         vcard+=   "</div>" // exp-element-title
                          +  "<div class='exp-element-ranking-line'>"
                           if(_useSidebarDesc){
                            vcard+="<div class='exp-element-description'>"+place.Description+"</div>";
                           }else{
                           vcard+=     "<div class='exp-element-ranking-stars'>";
                                switch(place.Starrating){
			                    case 0:
			                        vcard+="<img src='/i/nostars-1.gif'/>";
			                        break;
			                    case 1:
			                        vcard+="<img src='/i/screen/w-smallstar1.gif'/>";
			                        break;
			                    case 2:
			                        vcard+="<img src='/i/screen/w-smallstar2.gif'/>";
			                        break;
			                    case 3:
			                        vcard+="<img src='/i/screen/w-smallstar3.gif'/>";
			                        break;
			                    case 4:
			                        vcard+="<img src='/i/screen/w-smallstar4.gif'/>";
			                        break;
			                    case 5:
			                        vcard+="<img src='/i/screen/w-smallstar5.gif'/>";
			                        break;
			                    }
                                vcard+="</div>"
                                }
                                if (_isMap && rank > 0 && rank <= 10) {
                                    var tmpRankingContextText = _isMap ? "in current map view" : "";
                                    vcard+="<div class='exp-element-ranking-number'><span class='exp-element-ranking-number-pound'># " + rank + "</span> " + place.CategoryName + " " + tmpRankingContextText + "</div>";
                                }
                                vcard+=  "<div class='clear'></div></div>" // exp-element-ranking-line
                        + "</div>" // exp-element-main
                        +" <!-- /exp-element-main -->";
                        var total = place.TUCount +place.ReviewedCount+place.BookableCount;
                        if(showSources && total>0){
                            var total = place.TUCount +place.ReviewedCount+place.BookableCount;
                            vcard+="<div class='exp-element-trusted'>"
                            +  "<!-- class gets added here by the js: 'trusted-is-active' -->"
                            +  "<span class='exp-trusted-count-wrap'><span class='exp-trusted-count'>"+total.toString()+"</span></span> <a class='exp-trusted-show' href='#'>Personalized Matches</a>"
                            +  "<a href='#' class='exp-trusted-handle exp-trusted-handle-plus'>handle</a></div>"
                       +"<!-- /exp-element-trusted -->"
                        +"<div class='exp-trusted-the-content'>"

                            +"<div class='exp-trusted-text-desc'>This destination matches your personal preferences:</div>"
                            +"<div class='exp-trusted-pref-type'><img src='/i/sidebar/endorse-1.gif' /><a href='"+place.Url+"' class='exp-trusted-pref-type-desc'>Reviews by your contacts</a> <span class='exp-trusted-pref-type-count'>"+place.TUCount+"</span></div>"
                            +"<div class='exp-trusted-pref-type'><img src='/i/sidebar/endorse-2.gif' /><a href='"+place.Url+"' class='exp-trusted-pref-type-desc'>Reviews by sites that you like</a> <span class='exp-trusted-pref-type-count'>"+place.ReviewedCount+"</span></div>"
                            +"<div class='exp-trusted-pref-type'><img src='/i/sidebar/endorse-3.gif' /><a href='"+place.Url+"' class='exp-trusted-pref-type-desc'>Your preferred booking services</a> <span class='exp-trusted-pref-type-count'>"+place.BookableCount+"</span></div>"
                            +"<div class='exp-trusted-better-results'>Get better results: <a href='/PesonalPreferences.aspx'>Personalize Preferences</a></div>"


                            +"<div class='exp-trusted-sources-heading'>"
                                +place.TrustedSources.length.toString()+" Trusted Sources, including:"
                            "</div>";
                            
                            if(place.TrustedSources!=null){
			                    for(x=0;x<place.TrustedSources.length&&x<5;x++){
			                        if(place.TrustedSources[x]!=null){
			                            vcard+="<div class='exp-trusted-source-line'>"+place.TrustedSources[x]+"</div>";
			                        }
			                    }
				    	    }
                            
                            vcard+=  "<div class='exp-trusted-sources-optionz'>"
                                +  "<a class='exp-trusted-source-op-view' href='#'>View All</a> <a class='exp-trusted-source-op-customize'"
                                +     "href='#'>Customize</a>"
                                + "</div>"
                        +"</div></div>"
                        +"<!-- /exp-trusted-the-content -->";
                        }
                    vcard += "</div>"; // exp-element-main
        
        
        
        
        
            return vcard;

}


/**
 * Creates a travelpack place item for the sidebar
 */
function buildTravelPackPlaceItem(place,isMyTPK){

           vcard="<div class='tpk-element-locale'><div class='tpk_spilled_guts_locale'>"
             + "<div class='tpk-icon'><img src='"+place.IconUrl+"' /></div>"
             + "<div class='tpk-text-wrap'>";
             if(_isMap == true){
                vcard += "<div class='tpk-locale'><a href='javascript:ShowPlace("+place.DotId+","+place.PlaceId+",true)'>"+place.Title+"</a></div>"
             } else if (_isExternalSidebar) {
                vcard += "<div class='tpk-locale'><a href='"+place.Url+"' target='_blank'>"+place.Title+"</a></div>"
             }else{
                vcard += "<div class='tpk-locale'><a href='"+place.Url+"'>"+place.Title+"</a></div>"
             }
//             + "<div class='tpk-locale'><a href='javascript:ShowPlace("+place.DotId+","+place.PlaceId+",true)'>"+place.Title+"</a></div>"
             vcard +=     "<div class='tpk-ranking-stars'>";
                                switch(place.Starrating){
			                    case 0:
			                        vcard+="<img src='/i/nostars-1.gif'/>";
			                        break;
			                    case 1:
			                        vcard+="<img src='/i/screen/w-smallstar1.gif'/>";
			                        break;
			                    case 2:
			                        vcard+="<img src='/i/screen/w-smallstar2.gif'/>";
			                        break;
			                    case 3:
			                        vcard+="<img src='/i/screen/w-smallstar3.gif'/>";
			                        break;
			                    case 4:
			                        vcard+="<img src='/i/screen/w-smallstar4.gif'/>";
			                        break;
			                    case 5:
			                        vcard+="<img src='/i/screen/w-smallstar5.gif'/>";
			                        break;
			                    }
                                vcard+="</div></div>";
              if(isMyTPK){  
                vcard+="<div class='tpk-x-button'><a href='javascript:removePlaceFromTravelPack("+place.PlaceId+")'><img src='/i/sidebar/x.gif'></a></div>";
              }
              vcard+="</div>";  // end of tpk_spilled_guts_locale
              if(place.Note!=null){
              vcard += add_notez(place.Note);
              }

            vcard+="</div>";  // end of tpk-element-locale


    
        
        
            return vcard;


}

function add_notez(note) {

  var x = "";

  x += "<div class='tpk_notez'>";

  x += "<a class='tpk_notez_clicker tpk_notez_clicker_collapsed' href='#'>x</a>";

  x += "<div class='tpk_notez_text'>";
  x += note;
  x += "</div>";  // end of tpk_notez_text


  x += "</div>";  // end of tpk_notez

  return x;
}

function buildTravelPackPhoto(media,isMyTPK){
    
    var vcard =    "<div class='tpk-element'><div class='tpk_spilled_guts'>"
          +"<div class='tpk-icon'><img src='/i/category_icons/icn-photos.gif'/></div>";
          if(_isMap == true){
            vcard += "<div class='tpk-pic'><a class='fn org' href='javascript:ShowMedia("+media.DotId+","+media.MediaId+",true)'><img src='"+media.Url+"' /></a></div>"
          }else if (_isExternalSidebar == true) {
            vcard += "<div class='tpk-pic'><a class='fn org' href='"+media.PageUrl+"' target='_blank'><img src='"+media.Url+"' /></a></div>"
          } else {
            vcard += "<div class='tpk-pic'><a class='fn org' href='"+media.PageUrl+"'><img src='"+media.Url+"' /></a></div>"
          }
          if(isMyTPK){
            vcard+="<div class='tpk-x-button'><a href='javascript:removeMediaFromTravelPack("+media.MediaId+");'><img src='/i/sidebar/x.gif'></a></div>";
          }
          vcard+="</div>";  // end of tpk_spilled_guts
          if(media.Note!=null){
            vcard += add_notez(media.Note);
          }

        vcard+="</div>";  // end of tpk-element
        
        return vcard;

}

/**
 * Add Uncheck All
 *
 * @created Thur Aug 20 12:54 EDT 2008
 * @return	void
 * @author	Adam Bullied
 **/
$(document).ready(function()
{
	$('.actions').prepend('<li><a href="#" class="uncheck-all">Uncheck All</a></li>');
	$('.uncheck-all').click(function()
	{
		$(this).parents('form').find('input[type="checkbox"]').attr('checked','');
		return false;
	});
});







//Start Code added By Alan hietala
function getSideBarPhotos(north,south,east,west,zoom,container,pageNum,pageSize){

/*var loc = window.location.href;
var hashIndex = loc.indexOf('#');
var url = "";
if(hashIndex>0){
 url  = loc.substring(0,hashIndex)+"/getSidebarMedia";
}else{
    url = loc+"/getSidebarMedia";
}*/

//clear the section 
container.html("<div class='loading'><img src='/images/ajax-loader.gif' />Loading...</div>");
_requestQueue.push(
$.ajax({

type: "POST",

url: "/DestinationMap.aspx/getSidebarMedia",

data: "{'north':'"+north.toString()+"',"
      +"'south':'"+south.toString()+"',"
      +"'east':'"+east.toString()+"',"
      +"'west':'"+west.toString()+"',"
      +"'pageNum':'"+pageNum.toString()+"',"
      +"'customerId':'"+_customerId.toString()+"',"
       +"'zoom':'"+zoom.toString()+"'}", 
        

contentType: "application/json; charset=utf-8", 

dataType: "json",

success: function(xhr, status) {
        
        var sb = "";
         if(xhr.length<1){
            sb+=buildNoItem("Photos",false);
            if(pageSize==1){
                if(container.find(".exp-photo-element").length>0){
    	            container.parent().find(".single-special-innard-topline").css("display","block");
    	        
	            }else{
	                container.parent().find(".single-special-innard-topline").css("display","none");
	                 
	            }
            
            }
        
        }
        var responseCount =xhr.length
        for (var i=0;i<responseCount;i++) {
          if(i<responseCount-1 || responseCount<pageSize+1)
                sb +=buildMediaGridItem(xhr[i]);
         

        }
        var isNext = false;
        if(xhr.length > pageSize){
            isNext = true;
        }
        if(pageNum>0)
            sb+=buildPaging(isNext);
        
        container.html(sb);
       
        container.parents('.exp-content').scrollTop(0);
        sidebarComplete();      
},

error: function(xhr, status, error) {

var err = JSON.parse(xhr.responseText);

$("#error").html("Error –> " + err.Message);

}

}));






}

//categoryid should be 0 for no category
function getSideBarPlaces(north,south,east,west,zoom,type,categoryid,container)
{
/*var loc = window.location.href;
var hashIndex = loc.indexOf('#');
var url = "";
if(hashIndex>0){
 url  = loc.substring(0,hashIndex)+"/getSidebarPlaces";
}else{
    url = loc+"/getSidebarPlaces";
}*/




}

function getTravelPackMedia(north,south,east,west,zoom,container,pageNum,pageSize){
       //clear the section 
container.html("<div class='loading'><img src='/images/ajax-loader.gif' />Loading...</div>");
        var tpid = $("#HiddenFieldTravelPackId").val();
_requestQueue.push($.ajax({

type: "POST",

url: "/ContentManagement/TravelPackMapView.aspx/getTravelPackMediaItems",

data: "{'north':'"+north.toString()+"',"
      +"'south':'"+south.toString()+"',"
      +"'east':'"+east.toString()+"',"
      +"'west':'"+west.toString()+"',"
      +"'zoom':'"+zoom.toString()+"',"
      +"'pageNum':'"+pageNum.toString()+"',"
      +"'travelPackId':'"+tpid.toString()+"'}",
       
              
   
contentType: "application/json; charset=utf-8", 

dataType: "json",

success: function(xhr, status) {

        var sb = " ";
         
        var responseCount =xhr.length
        for (var i in xhr) {
          if(i<xhr.length-1 || responseCount<pageSize+1)
                sb += buildTravelPackPhoto(xhr[i],_isMyProfile);
            
        }
        var isNext = false;
                if(xhr.length > pageSize){
                    isNext = true;
                }
        if(_otherTPKGetComplete){
            var result ="";
            if(_otherTPKGetResult!=null){
                result = sb+_otherTPKGetResult;
            }
            container.html(result);
            container.parents('.exp-content').scrollTop(0);
            sidebarComplete();
            //reset the threading management
             _otherTPKGetResult = null;
            _otherTPKGetComplete = false;
            
        }else{
            _otherTPKGetResult = sb;
            _otherTPKGetComplete = true;
        }    
        
       
   
},

error: function(xhr, status, error) {

var err = JSON.parse(xhr.responseText);

$("#mapview_data").html("Error –> " + err.Message);

}

}));





}



var _otherTPKGetComplete = false;
var _otherTPKGetResult = null;
function getTravelPackItems(north,south,east,west,zoom,container,pageNum,pageSize){
    
    var tpid = $("#HiddenFieldTravelPackId").val();
_requestQueue.push($.ajax({

type: "POST",

url: "/ContentManagement/TravelPackMapView.aspx/getTravelPackItems",

data: "{'north':'"+north.toString()+"',"
      +"'south':'"+south.toString()+"',"
      +"'east':'"+east.toString()+"',"
      +"'west':'"+west.toString()+"',"
      +"'zoom':'"+zoom.toString()+"',"
       +"'pageNum':'"+pageNum.toString()+"',"
      +"'travelPackId':'"+tpid.toString()+"'}",
       
              
   
contentType: "application/json; charset=utf-8", 

dataType: "json",

success: function(xhr, status) {

        var sb = "";
         if(xhr.length<1){
            if(container.find(".tpk-element").length<1){ //check if there are media items already there
                sb+=buildNoItem("Travel Pack Items",false);
            }
        
        }
        var responseCount =xhr.length;
        for (var i in xhr) {
          if(i<xhr.length-1 || responseCount<pageSize+1)
                sb += buildTravelPackPlaceItem(xhr[i],_isMyProfile);
            


        }
        var isNext = false;
                if(xhr.length > pageSize){
                    isNext = true;
                }
                if(pageNum>0)
                sb+=buildPaging(isNext); 
        if(_otherTPKGetComplete){
            var result ="";
            if(_otherTPKGetResult!=null){
                result = _otherTPKGetResult+sb;
            }
            container.html(result);
            sidebarComplete();
             container.parents('.exp-content').scrollTop(0);
            //reset the threading management
             _otherTPKGetResult = null;
            _otherTPKGetComplete = false;
            
        }else{
            _otherTPKGetResult = sb;
            _otherTPKGetComplete = true;
        }
        
   
},

error: function(xhr, status, error) {

var err = JSON.parse(xhr.responseText);

$("#mapview_data").html("Error –> " + err.Message);

}

}));





}
_isPersonalized = false;

function getSidebarRecommendations(north,south,east,west,zoom,categoryId,container,pageNum,pageSize,showSources){
//get the travelpackId from the hidden field
   //clear the section and add loading 
container.html("<div class='loading'><img src='/images/ajax-loader.gif' />Loading...</div>");
    if(_isPersonalized){
    var tpid = $("#HiddenFieldTravelPackId").val();

    if(tpid == null)
        tpid = 0;

        _requestQueue.push($.ajax({

        type: "POST",

        url: "/ContentManagement/TravelPackMapView.aspx/getRecommendedPlaces",

        data: "{'north':'"+north.toString()+"',"
              +"'south':'"+south.toString()+"',"
              +"'east':'"+east.toString()+"',"
              +"'west':'"+west.toString()+"',"
              +"'zoom':'"+zoom.toString()+"',"
              +"'travelPackId':'"+tpid.toString()+"',"
               +"'pageNum':'"+pageNum.toString()+"',"
                +"'customerId':'"+_customerId.toString()+"',"
              +"'categoryId':'"+categoryId.toString()+"'}",  
                      
           
        contentType: "application/json; charset=utf-8", 

        dataType: "json",

        success: function(xhr, status) {

                var sb = "";
                 if(xhr.length<1){
                        sb+=buildNoItem(categoryId.toString(),true);
                        if(pageSize==1){
                            if(container.find(".exp-element").length>0){
    	                        container.parent().find(".single-special-innard-topline").css("display","block");
                	        
	                        }else{
	                            container.parent().find(".single-special-innard-topline").css("display","none");
            	                 
	                        }
                        
                        }
                    }
                var responseCount =xhr.length
        for (var i in xhr) {
          if(i<xhr.length-1 || responseCount<pageSize+1)
                            sb += buildPlaceItem(xhr[i],false,true,showSources, (parseInt(i) + 1 + ((pageNum-1)*pageSize)), categoryId)
                        


                }
                var isNext = false;
                if(xhr.length > pageSize){
                    isNext = true;
                }
                if(pageNum>0)
                    sb+=buildPaging(isNext);
                container.html(sb);
                container.parents('.exp-content').scrollTop(0);
                        
                 
                
                sidebarComplete();
           
        },

        error: function(xhr, status, error) {

        var err = JSON.parse(xhr.responseText);

        $("#mapview_data").html("Error –> " + err.Message);

        }

        }));

    }else{
   
        _requestQueue.push($.ajax({

type: "POST",

url: "/DestinationMap.aspx/getSidebarPlaces",

data: "{'north':'"+north.toString()+"',"
      +"'south':'"+south.toString()+"',"
      +"'east':'"+east.toString()+"',"
      +"'west':'"+west.toString()+"',"
      +"'zoom':'"+zoom.toString()+"',"
       +"'pageNum':'"+pageNum.toString()+"',"
       +"'customerId':'"+_customerId.toString()+"',"
      +"'categoryId':'"+categoryId.toString()+"'}",  
              
   
contentType: "application/json; charset=utf-8", 

dataType: "json",

success: function(xhr, status) {
       
        var sb = "";
         if(xhr.length<1){
            sb+=buildNoItem(categoryId.toString(),true);
            if(pageSize==1){
                if(container.find(".exp-element").length>0){
                    container.parent().find(".single-special-innard-topline").css("display","block");
    	        
                }else{
                    container.parent().find(".single-special-innard-topline").css("display","none");
                     
                }
            
            }
        }
        var responseCount =xhr.length;
        for (var i=0;i<responseCount;i++) {
          if(i<responseCount-1 || responseCount<pageSize+1)
                sb += buildPlaceItem(xhr[i],false,false,showSources, (parseInt(i) + 1 + ((pageNum-1)*pageSize)), categoryId);
            


        }
       
        var isNext = false;
                if(xhr.length > pageSize){
                    isNext = true;
                }

                if(pageNum>0)
                    sb+=buildPaging(isNext);


                
        container.html(sb);
         container.parents('.exp-content').scrollTop(0);     
            
        sidebarComplete();
   
},

error: function(xhr, status, error) {

var err = JSON.parse(xhr.responseText);

$("#mapview_data").html("Error –> " + err.Message);

}

}));

}



    
    
    
    


}
var _currentPage = 1;
function buildPaging(isNext){
    var paging = "";
   
        paging+="<div class='paging'>";
       if(_currentPage>1){
            paging+="<a class='pageprev' href='#'>&lt; Previous</a> ";
        }
       paging += "<span class='paging-this-page'>Page " + _currentPage.toString() + "</span>";
       if(isNext){
       paging +="<a class='pagenext' href='#'>Next &gt;</a>";
       }
       paging+="</div>";
    return paging;
  

}

/**
*Updates the hash with a key value pair. will preserve existing keys and create a new key if it does
* not exist already.
*/
function updateHash(key,value){
   
//     var currentHash = document.location.hash;
     try{
     var currentHash = SWFAddress.getValue();
     
     var newHash = "";
     if(currentHash.length>0 && currentHash[0]=="#")
        currentHash = currentHash.substring(1);

     var multiPart = currentHash.indexOf('&') >0?true:false;
     var isEmpty = (currentHash=="" || currentHash=="#")?true:false;
     var foundMatch = false;
    
     if(multiPart){ //more than one key value pair
        
        keyvaluepairs = currentHash.split('&');
        
        for(var x = 0;x<keyvaluepairs.length;x++){
            thisKeyValue = keyvaluepairs[x].split('=');
            var addStr = x==0?"":"&";
          
            if(key==thisKeyValue[0]){//match
                addStr+=key+"="+value.toString();
                foundMatch = true;
            }else{
                addStr+=thisKeyValue[0]+"="+thisKeyValue[1];
            }
            newHash+=addStr;
        
        }
     
     
     
     }else if(!isEmpty){ //single key value pair
        addStr = "";
        thisKeyValue = currentHash.split('=');
        if(key==thisKeyValue[0]){//match
                addStr+=key+"="+value.toString();
                foundMatch = true;
        }else{
            addStr+=thisKeyValue[0]+"="+thisKeyValue[1];
        }
        newHash +=addStr;
     }
     
     if(!foundMatch){
        if(!isEmpty)
            newHash+="&";
        newHash+=key+"="+value;   
     
     
     }
    // this was causing issues in IE6, so we'll use SWFAddress instead.
    //document.location.hash = newHash;
    SWFAddress.setValue(newHash);
    }catch(ex){}
}
/**
*Gets the value of a hash key or returns null if the key does not exist
*/
function getHashValue(key){
     
    if(document.location.hash!="" && document.location.hash!="#"){
        
        var hash = location.hash.substring(1).split('&');
        var keyFound = false;
        
        for(x=0;x<hash.length;x++){
            var keyvalue = hash[x].split('=');
            if(keyvalue[0]==key){
                return keyvalue[1];
                
                
            }
        }
    }
    return null;

}
var _activeIndex = 0;
var _sectionIdLookup = new Array();
_sectionIdLookup[0] = "Media";
_sectionIdLookup[1] = "Lodging";
_sectionIdLookup[2] = "Dining";
_sectionIdLookup[3] = "Attractions";
_sectionIdLookup[4] = "Activities";


function removePlaceFromTravelPack(placeId){
      var deleteOk = confirm("Delete this place from travelpack?");
     if(deleteOk){
           
         $.ajax({
   
    type: "POST",

    url: "/ContentManagement/TravelPackMapView.aspx/removePlaceFromTravelPack",

    data: "{'placeId':'"+placeId.toString()+"'}",  
                  
       
    contentType: "application/json; charset=utf-8", 

    dataType: "json",

    success: function(xhr, status) {
           //refresh page
            window.location.reload();
       
    },

    error: function(xhr, status, error) {

    var err = JSON.parse(xhr.responseText);

    $("#mapview_data").html("Error –> " + err.Message);

    }

    });

}
}

function removeMediaFromTravelPack(mediaId){
     var deleteOk = confirm("Delete this photo from travelpack?");
     if(deleteOk){
     $.ajax({

    type: "POST",

    url: "/ContentManagement/TravelPackMapView.aspx/removeMediaFromTravelPack",

    data: "{'mediaId':'"+mediaId.toString()+"'}",  
                  
       
    contentType: "application/json; charset=utf-8", 

    dataType: "json",

    success: function(xhr, status) {
           //refresh page
           window.location.reload();
       
    },

    error: function(xhr, status, error) {

    var err = JSON.parse(xhr.responseText);

    $("#mapview_data").html("Error –> " + err.Message);

    }

    });
}

}

function removeLocationFromTravelPack(locationId, successFunction, successVariable){
    //removeLocationFromTravelPack locationId;
    var deleteOk = confirm("Delete this Location and all its contained items from travelpack?");
     if(deleteOk){
     $.ajax({

type: "POST",

url: "/ContentManagement/TravelPackMapView.aspx/removeLocationFromTravelPack",

data: "{'locationId':'"+locationId.toString()+"'}",  
              
   
contentType: "application/json; charset=utf-8", 

dataType: "json",

success: function(xhr, status) {
       //refresh page
       //window.location.reload();
       successFunction(successVariable);
},

error: function(xhr, status, error) {

var err = JSON.parse(xhr.responseText);

$("#mapview_data").html("Error –> " + err.Message);

}

});
}
}


function addLocationToTravelPack(travelPackId, locationId, successFunction, successVariable){
     $.ajax({
        type: "POST",
        url: "/ContentManagement/TravelPackMapView.aspx/addLocationToTravelPack",
        data: "{'travelPackId':'" + travelPackId.toString() + "','locationId':'" + locationId.toString() + "'}",  
        contentType: "application/json; charset=utf-8", 
        dataType: "json",
        
        success: function(xhr, status) {
            //refresh page
//            alert('returned successfully' + xhr);
            if(xhr > 0){
                successFunction(successVariable);
            }    
        },

        error: function(xhr, status, error) {
            alert('Location not found, please try again');
            var err = JSON.parse(xhr.responseText);
            $("#mapview_data").html("Error –> " + err.Message);
        }

    });
}

function getTravelPackItemsByLocation(travelPackId,locationId,handlerFunction,args){
    _requestQueue.push($.ajax({

type: "POST",

url: "/ContentManagement/TravelPackMapView.aspx/getTravelPackItemsByLocation",

data: "{'travelPackId':'"+travelPackId.toString()+"',"
      

      +"'locationId':'"+locationId.toString()+"'}",  
              
   
contentType: "application/json; charset=utf-8", 

dataType: "json",

success: function(xhr, status) {
        xhr.passedArgs = args;
        handlerFunction(xhr);
   
},

error: function(xhr, status, error) {

var err = JSON.parse(xhr.responseText);

$("#mapview_data").html("Error –> " + err.Message);

}

}));





}
