

//THESE VARIABLES NEED TO BE SET SERVER SIDE AND ARE DECLARED IN THE LISTING_LAYOUT CFC
//window.listings.data.currStartRow
//window.listings.data.maxShow
//window.listings.data.totalResults
//window.listings.nextPosition = 0;
	window.listings = new Object();
	window.listings.data = new Array();
	window.listings.history = new Array();
			
	if (window.listings.data.useMap) {
		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.nxt').click(function(e){
			if (!$(this).hasClass('disabled')) {
				var url = window.listings.buildURL('NEXT');
				window.listings.paginate(url,e);
			}
			return false;
		});
		
		$('a.prv').click(function(e) {
			if (!$(this).hasClass('disabled')) {
				var url = window.listings.buildURL('PREVIOUS');
				window.listings.paginate(url,e);
			}
			return false;
		});
		
		
	 	$('a.nxt-end').click(function(e) {
			if (!$(this).hasClass('disabled')) {
				var url = window.listings.buildURL('NEXT-END');
				window.listings.paginate(url,e);
			}
			return false;
		});

		$('a.prv-end').click(function(e){
			if (!$(this).hasClass('disabled')) {
				var url = window.listings.buildURL('PREVIOUS-END');
				window.listings.paginate(url,e);
			}
			return false;
		});
	});

	window.listings.buildURL = function(action){
		var baseURL = siteURL + 'includes/cfcs/listings/listings_ajax.cfm';
		var urlParams = '?menuid=' + window.listings.data.menuid
						+'&' + window.listings.data.urlparams;
		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);
				window.listings.data.nextPosition = (Math.ceil(window.listings.data.totalResults / window.listings.data.maxShow) - 1) * 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;
		
		/*
		if (action == 'NEXT') {
			if (window.listings.data.isLessThenMax) {
				window.listings.data.nextPosition = (window.listings.data.currStartRow + window.listings.data.maxShow);
			}
			else {
				window.listings.data.nextPosition = window.listings.data.currStartRow;
				
			}
		}
		
		if (action == 'PREVIOUS') {
			if (window.listings.data.isMoreThenMin) {
				window.listings.data.nextPosition = (window.listings.data.currStartRow - window.listings.data.maxShow);
			}
			else {
				window.listings.data.nextPosition = window.listings.data.currStartRow;
			}
		}
		url = url + '&startRow=' + window.listings.data.nextPosition;
		*/
		
		//logit('Url is'+ url);
		return url;
	}
		
	window.listings.data.isLessThenMax = function(){
		if ((window.listings.data.currStartRow + window.listings.data.maxShow) <= 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){
		$('#l-mainContent').html('<div class="loading"></div>');
		if(window.listings.data.useMap) {
			window.maps.listings.removePlacemarks(window.maps.listings.defaultCollection,false);
		}
		
		$.getJSON(url,
		function(data){
			window.listings.refreshVars();
			$('.filter-showing').html('Showing ' + window.listings.data.currStartRow + '-' +window.listings.calculateNextUpperBound() + ' of ' + window.listings.data.totalResults);
			$('div#listing_pagination_container').get(0).innerHTML = data.CONTENT;
			if ($('div#listing_dtn_container').length > 0) {
				$('div#listing_dtn_container').get(0).innerHTML = data.DTNCONTENT; // if you don't want dtn on other pages, ajust logic on the listings_ajax.cfm
			}
			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)){
			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.prv-end').removeClass('disabled');
			$('a.prv').removeClass('disabled');

		} else {
			$('a.prv-end').addClass('disabled');
			$('a.prv').addClass('disabled');
		}
		// next
		
		if (window.listings.data.currentUpperBound >= window.listings.data.totalResults) {
			$('a.nxt').addClass('disabled');
			$('a.nxt-end').addClass('disabled');
		} else {
			$('a.nxt').removeClass('disabled');
			$('a.nxt-end').removeClass('disabled');

		}
//			initWidgetMap();

		if(window.listings.data.useMap){
			placemarks['listings'] = eval(window.listings.data.placemarks);
			preparePlacemarks();
			updatedFilters(placemarks.listings);
			
		}
		//	alert('unbound');		
		//$('a.disabled').unbind('click');
	//			$('a.disabled').attr('href',$('a.disabled').get(0).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';
		}
	});	
});


