// JavaScript Document

function Overlays() {
	//General Overlay Collection
	var ov = new OverlayCollection('overlays', 20);
	
	//Settings
	ov.useLabels = true;
	ov.labelType= 'Numeric';
	ov.even = false;
	ov.catIcons = false;
	
	ov.getIconStyle = function(placemark) {
		var iconstyle = 'other';
		if(this.catIcons == false)
			return 'default';
		switch (parseInt(placemark.catid)){
			case 1:
	
				iconstyle = 'hotel';
				break;
			case 3: 
				iconstyle = 'dining';
				break;
			case 5:
				iconstyle = 'shopping';
				break;
			case 7:
			case 136:
				iconstyle = 'trans';
				break;
			case 10: 
			case 0:
				iconstyle = 'nightlife';
				break;
			default:
				iconstyle = 'other';
				break;
		}
		return iconstyle;
	}
	
	ov.hidePlacemarkListingsContainer = function(){
		$svGM = jQuery.fn.svGoogleMaps;
		
		jQuery($svGM.args.pContain).hide();
	}
	
	ov.showPlacemarkListingsContainer = function(){
		$svGM = jQuery.fn.svGoogleMaps;
		
		jQuery($svGM.args.pContain).show();
	}
	
	//Clear Placemarks
	ov.clearPlacemarkListings = function(){
		$svGM = jQuery.fn.svGoogleMaps;
		
		this.hidePlacemarkListingsContainer();	
		jQuery($svGM.args.pContain + ' .gContent').html('');
	}
	
	//Show Placemarks
	ov.showPlacemarkListings = function(){
		$svGM = jQuery.fn.svGoogleMaps;
		
		this.clearPlacemarkListings();
	
		if(this.length > 0){
			var t = document.createElement('TABLE');
			t.id = 'gPlacemarkTable';
			t.cellPadding = '0';
			t.cellSpacing = '0';
			t.border = '0';
			t.width='500';
			var tb = document.createElement('TBODY');
			tb.id = 'gPlacemarkTBody';
			t.appendChild(tb);
			var placemarks = this.getPage(this.currPage);
			var tr = null;
			for (var i = 0; i < placemarks.length; i++){
				if(i % 2 == 0){
					tr = document.createElement('TR');
				}
				var td = document.createElement('TD');
				td.vAlign = 'top';
				td.align='';
				td.width='50%';
				var str = this.addToList(placemarks[i]);
				td.innerHTML = str;
				tr.appendChild(td);
				if(i %2 == 1){
					tb.appendChild(tr);
					tr = null;
				}
			}
			if (tr != null)
				tb.appendChild(tr);
			jQuery($svGM.args.pContain+' .gContent').append(t);
			this.showPlacemarkListingsContainer();
		}
		/*
		if(jQuery("#leftCont .bodyCont").innerHeight() > jQuery("#rightCont .bodyRight").innerHeight())
			jQuery("#rightCont .bodyRight").css({height:jQuery("#leftCont .bodyCont").innerHeight()});
		else
			jQuery("#rightCont .bodyRight").css({height:""});
		*/
	
		this.showPaging();
	}
	
	//Show Placemarks
	ov.markPlacemarkListings = function(){
		$svGM = jQuery.fn.svGoogleMaps;
		this.unmarkPlacemarkListings();
		if(this.length > 0){
			var placemarks = this.getPage(this.currPage);
			var self = this;
			for (var i = 0; i < placemarks.length; i++)
			{
				var placemark = placemarks[i];
				html = parsePlacemarkData($svGM.args.listingPlacemarkHTML, placemarks[i]);
				if (jQuery('#webURL_' + placemarks[i].prikey).length) {
					//html = '&nbsp;|&nbsp;' + html;
				}
				placemarkHolder = jQuery($svGM.args.listingPlacemarkSelector + placemarks[i].prikey);
				placemarkHolder.html(html);
				jQuery("a", placemarkHolder).click(function(){self.execHandler("gotoplacemark",jQuery(this).data("placemark"));return false}).data("placemark",placemark);
			}
		}
	}
	
	//Clear Placemarks
	ov.unmarkPlacemarkListings = function(){
		if(this.length > 0){
			var placemarks = this.getPage(this.currPage);
			for (var i = 0; i < placemarks.length; i++)
				jQuery('.placemark_' + placemarks[i].prikey).html("");
		}
	}
	
	ov.addToList = function(placemark){
		$svGM = jQuery.fn.svGoogleMaps;
		
		var list = jQuery($svGM.args.pContain).get(0);
		var str = '';
		if (list != null) {
			var d= document.createElement('div');
			str = parsePlacemarkData('<div class="Explorer_Listing"><div class="mapListingTop"></div><div class="extraholder2"><a href="#" onclick="return jQuery.fn.svGoogleMaps.goToPlacemark(placemark:prikey);"><img src="placemark:sm_iconimage" align="left" border="0"></a></div><div class="extraholder3"><a href="#" onclick="return jQuery.fn.svGoogleMaps.goToPlacemark(placemark:prikey);" class="explorerListingTitle">placemark:name</a><br><div class="explorerListingAddress">placemark:address</div></div><br><div class=\"explorerListingDescription\"></div><div class="Explorer_ListingLinks"><a title="View On Map" href="#" onclick="return jQuery.fn.svGoogleMaps.goToPlacemark(placemark:prikey);">View On Map</a><a title="More Information"  href="' + $svGM.args.fuse_root + $svGM.args.listingURL + '">More Info</a>placemark:itineraryExplorer</div><div class="mapListingBottom"></div></div>',placemark);
			ov.even = !ov.even;
		}
		return str;
	}

	ov.showPaging = function(){
		var page = this.currPage;
		var numPages = this.numPages();
		var overlayCollection = this;
		var totalCount = overlayCollection.length;
		var fromCount = (page -1) * 20 + 1;		
		var toCount = fromCount + 19;
		
        if (toCount > totalCount) toCount = totalCount;
		
		var pagingstr = '<div>';
		pagingstr += '<div class="pageCnt">Showing Results ' + fromCount + '-' + toCount + ' of ' + totalCount +  '</div>';
		pagingstr += '<div style="text-align: right">';
		
		//if (numPages > 1) {
			pagingstr += '<ul id="gPagination">';
			
			if (page != 1)
				pagingstr += '<li class="previous page_previous"><a href="#">&laquo; Previous</a></li>';
			else
				pagingstr += '<li class="previous-off">&laquo; Previous</li>';
			
			if (page == 1)
				pagingstr += '<li class="active page_first">1</li>';
			else
				pagingstr += '<li class="page_first"><a href="#">1</li></a>';
			
			if (page > 3)
				pagingstr += '<li class="dots">...</li>';
		
			if (page > 2)
				pagingstr += '<li class="page_previous"><a href="#">' + (page - 1) + '</a></li>';
			
			if (page != 1 && page != numPages)
				pagingstr += '<li class="active">' + page + '</li>';
			
			if (page != numPages && page != (numPages - 1))
				pagingstr += '<li class="page_next"><a href="#">' + (page + 1) + '</a></li>';
				
			if (page != numPages && page < (numPages - 2))
				pagingstr += '<li class="dots">...</li>';
			
			if (page != numPages)
				pagingstr += '<li class="page_last"><a href="#">'+numPages+'</a></li>';
			else if (page > 1)
				pagingstr += '<li class="active page_last">'+numPages+'</li>';
			
			if (page != numPages)
				pagingstr += '<li class="next page_next"><a href="#">Next &raquo;</a></li>';
			else
				pagingstr += '<li class="next-off">Next &raquo;</li>';
			
			pagingstr += '</ul>';
		//}
		pagingstr += '</div>';
		pagingstr += '<div style="clear:both;"></div>';
		pagingstr += '</div>';
		
		jQuery($svGM.args.pContain + ' .gTop, ' + $svGM.args.pContain + ' .gBottom').html(pagingstr);
		jQuery($svGM.args.pContain + ' .gTop, ' + $svGM.args.pContain + ' .gBottom').show();
		
		/*
		if(numPages > 1)
			jQuery($svGM.args.pContain+' .gTop, '+$svGM.args.pContain+' .gBottom').show();
		else
			jQuery($svGM.args.pContain+' .gTop, '+$svGM.args.pContain+' .gBottom').hide();
		*/
		
	
		if(page > 1) {
			jQuery('.page_first').click(function(){ overlayCollection.showPlacemarks(1); return false; });
			jQuery('.page_previous').click(function(){ overlayCollection.showPlacemarks(overlayCollection.currPage - 1); return false; });
		}
		if(page < numPages) {
			jQuery('.page_next').click(function(){ overlayCollection.showPlacemarks(overlayCollection.currPage + 1); return false; });
			jQuery('.page_last').click(function(){ overlayCollection.showPlacemarks(overlayCollection.numPages()); return false; });
		}
	}
	
	return ov;
}
