	if (!placemarks) { var placemarks = ""; }
		window.listings = new Object();
		window.listings.data = new Array();
		window.listings.history = new Array();
		window.listings.isInDebugMode = false;
 		window.listings.data.placemarks = placemarks['listings'];

	window.listings.moveToNext = function(fn) {
		this.executeCallBack(fn);
	}

	window.listings.moveToPrevious = function(fn) {
		this.executeCallBack(fn);
	}
	
	window.listings.moveToPosition = function(postion,fn) {
		this.executeCallBack(fn);
	}
	
	window.listings.executeCallBack = function(fn){
		call = (typeof call == 'undefined') ? function(x){return x;} : fn;
		return fn;	 	
	}
	
	window.listings.size = function(){
		return this.collection.length;
	};

	 $(document).ready(function() {
 		//	logit('binding controls');
		$('a.firstArrow').click(function(e){
			$('#listing_pagination_container').html('<img class="loading" src="'+imgRoot+'shell/listings/loading.gif" />');
			var url = window.listings.buildURL('PREVIOUS-END');
			window.listings.paginate(url,e);
			if (window.listings.data.showMap) {
				placemarks['listings'] = eval(window.listings.data.placemarks);
				initWidgetMap();
			}
			$('#listing_pagination_container').fadeIn('slow');
			return false;
		});
		
		$('a.nextArrow').click(function(e){
			$('#listing_pagination_container').html('<img class="loading" src="'+imgRoot+'shell/listings/loading.gif" />');
			var url = window.listings.buildURL('NEXT');
			window.listings.paginate(url,e);
			if (window.listings.data.showMap) {
				placemarks['listings'] = eval(window.listings.data.placemarks);
				initWidgetMap();
			}
			$('#listing_pagination_container').fadeIn('slow');
			return false;
		});

		$('a.prevArrow').click(function(e){
			$('#listing_pagination_container').html('<img class="loading" src="'+imgRoot+'shell/listings/loading.gif" />');
			var url = window.listings.buildURL('PREVIOUS');
				window.listings.paginate(url,e);
				if (window.listings.data.showMap) {
					placemarks['listings'] = eval(window.listings.data.placemarks);
					initWidgetMap();
				}
			$('#listing_pagination_container').fadeIn('slow');
			return false;
		});
		
		$('a.lastArrow').click(function(e){
			$('#listing_pagination_container').html('<img class="loading" src="'+imgRoot+'shell/listings/loading.gif" />');
			var url = window.listings.buildURL('NEXT-END');
			window.listings.paginate(url,e);
			if (window.listings.data.showMap) {
				placemarks['listings'] = eval(window.listings.data.placemarks);
				initWidgetMap();
			}
			$('#listing_pagination_container').fadeIn('slow');
			return false;
		});
		
		/*
	 	$('a.nxt-end').click(function(e){
			var url = window.listings.buildURL('NEXT-END');
			window.listings.paginate(url,e);
			if (window.listings.data.showMap) {
				placemarks['listings'] = eval(window.listings.data.placemarks);
				initWidgetMap();
			}
			return false;
		});

		$('a.prv-end').click(function(e){
			var url = window.listings.buildURL('PREVIOUS-END');
			window.listings.paginate(url,e);
			if (window.listings.data.showMap) {
				placemarks['listings'] = eval(window.listings.data.placemarks);
				initWidgetMap();
			}
			return false;
		});
		*/
	});
		
	window.listings.buildURL = function(action){
		var baseURL = siteURL + 'includes/cfcs/listings/listings_ajax.cfm';
		var urlParams = '?catid=' + window.listings.data.catid 
						+ '&subcatid=' + window.listings.data.subcatid 
						+ '&regionid=' + window.listings.data.regionid 
						+ '&sFilter=' + window.listings.data.sFilter 
						+ '&eFilter=' + window.listings.data.eFilter 
						+ '&listing_keyword=' + window.listings.data.listing_keyword
						//advanced Search
						+ '&advSearch=' + window.listings.data.advSearch
						//lodging
						+ '&shuttle=' + window.listings.data.shuttle
						+ '&breakfast=' + window.listings.data.breakfast
						+ '&pets=' + window.listings.data.pets
						+ '&fitness=' + window.listings.data.fitness
						+ '&fit32=' + window.listings.data.fit32
						+ '&fit33=' + window.listings.data.fit33
						+ '&fit34=' + window.listings.data.fit34
						+ '&fit35=' + window.listings.data.fit35
						+ '&fit36=' + window.listings.data.fit36
						+ '&lodgeada=' + window.listings.data.lodgeada
						+ '&price=' + window.listings.data.price
						//restaurants
						+ '&foodType=' + window.listings.data.foodType
						+ '&meals=' + window.listings.data.meals
						+ '&restaurantada=' + window.listings.data.restaurantada
						//rv parks
						+ '&hookups=' + window.listings.data.hookups
						+ '&yearRound=' + window.listings.data.yearRound
						+ '&reservations=' + window.listings.data.reservations
						//meeting facilities
						+ '&TotalSqFt=' + window.listings.data.TotalSqFt
						+ '&Fld_RoomsTotalNumber=' + window.listings.data.Fld_RoomsTotalNumber
						+ '&meetingsqfeet=' + window.listings.data.meetingsqfeet
						//sports venues
						+ '&sportsAccommodated=' + window.listings.data.sportsAccommodated
						+ '&actn=' + window.listings.data.actn;
		var url = baseURL + urlParams;
		
		if (action == 'NEXT') {
			if (window.listings.data.isLessThenMax()) {
				window.listings.data.nextPosition = (window.listings.data.currStartRow + window.listings.data.maxShow);
			} 
		}
		
		if (action == 'PREVIOUS') {
			if (window.listings.data.isMoreThenMin()) {
				window.listings.data.nextPosition = (window.listings.data.currStartRow - window.listings.data.maxShow);
			} 
		}
		
		if (action == 'NEXT-END') {
			if (window.listings.data.isLessThenMax()) {
				window.listings.data.nextPosition = (window.listings.data.totalResults - window.listings.data.maxShow + 1);
			}
		}
		
		if (action == 'PREVIOUS-END') {
			if (window.listings.data.isMoreThenMin()) {
				window.listings.data.nextPosition = 1;
			}
		}
		url = url + '&startRow=' + window.listings.data.nextPosition;

		return url;
	}
		
	window.listings.data.isLessThenMax = function(){
		if ((window.listings.data.currStartRow + (window.listings.data.maxShow-1)) < window.listings.data.totalResults) {
			return true;
		}
		else {
			return false;
		}
	}
	
	window.listings.data.isMoreThenMin = function(){
		if ((window.listings.data.currStartRow - window.listings.data.maxShow) > 0) {
			return true;
		}
		else {
			return false;
		}
	}
	
	window.listings.paginate = function(url, e){
		if(window.listings.data.useMap) {
			window.maps.listings.removePlacemarks(window.maps.listings.defaultCollection,false);
		}
		$.getJSON(url,
		function(data){
			window.listings.refreshVars();
			$('.paginationResultText').html(window.listings.data.currStartRow + '-' +window.listings.calculateNextUpperBound() + ' of ' + window.listings.data.totalResults);
			$('div#listing_pagination_container').get(0).innerHTML = data.CONTENT;
			if(window.listings.data.useMap)
				window.listings.data.placemarks = data.PLACEMARKS;
			window.listings.finalize();
		});

	}

	window.listings.refreshVars	= function(){
		window.listings.data.currStartRow = window.listings.data.nextPosition;
		window.listings.data.currentUpperBound = window.listings.calculateNextUpperBound();
	}
	window.listings.calculateNextUpperBound = function(){
		if(window.listings.data.totalResults >= (window.listings.data.currStartRow + window.listings.data.maxShow-1)){
			return window.listings.data.nextPosition+window.listings.data.maxShow-1;

		}else{
			return window.listings.data.totalResults;
		}
		
	}

		
	window.listings.finalize = function(){
		//if maps exists replace overlays
		//if(window.listings.data.showMap){
		//}
		//update the controls depending
		
		if(window.listings.data.currStartRow > 1){
			$('a.firstArrow').removeClass('disabled');
			$('a.prevArrow').removeClass('disabled');
		} else {
			$('a.firstArrow').addClass('disabled');
			$('a.prevArrow').addClass('disabled');
		}
		// next
		
		if (window.listings.data.currentUpperBound >= window.listings.data.totalResults) {
			$('a.nextArrow').addClass('disabled');
			$('a.lastArrow').addClass('disabled');
		} else {
			$('a.nextArrow').removeClass('disabled');
			$('a.lastArrow').removeClass('disabled');
		}
		if(window.listings.data.useMap){
			placemarks['listings'] = eval(window.listings.data.placemarks);
			preparePlacemarks();
			updatedFilters(placemarks.listings);
		}
		//	alert('unbound');		
		//$('a.disabled').unbind('click');
		//$('a.disabled').removeAttr('href');
		
		//This calls the itnierary.js file to bind the ctrls
		//it requeires interary.js to be present
		if (typeof bindCtrls != 'undefined') {
		bindCtrls();
		}
		return true;			
	}

	window.listings.getNewPlaceMarks = function(url, e){
		url = url + '&getJson=1';
		var j ='';
		 $.ajax({
			type: "GET",
			url: url,
			async: false,
			success: function(response){
				j = eval('('+response+')')
			},
			failure: window.listings.handleFailuer()
		});
		return j;
	}
	
	window.listings.handleFailuer = function(response){
		//alert(response);
	}

	window.listings.myTimestamp = function(){
	    tstmp = new Date();    
	    return tstmp.getTime();
	} 

	 	
	function logit(str){
		//if (sv.devserver) {
			if (typeof(console) !== 'undefined' && console != null) {
				var outstr = str;
				if (str.indexOf('End') == 0) {
					tabdepth -= 1;
				}
				for (var i = 0; i < tabdepth; i++) {
					outstr = '--' + outstr;
				}
					console.log(outstr);
				if (str.indexOf('Called') == 0) {
					tabdepth += 1;
				}
			}
		//}
	}


$(document).ready(function(){
	$("input.clearInput").bind("focus",function(e){
			this.value ='';
	});
	$("input.clearInput").bind("blur",function(e){
		if (this.value.length == 0) {
			this.value = 'Keyword Search';
		}
	});	
});



