

//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();

	window.listings.isInDebugMode = false;
	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 = '?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
						+ '&menuid=' + window.listings.data.menuid
						+ '&layout=' + window.listings.data.layout
						+ window.listings.data.advancedSearch
						+ window.listings.data.meetingSearch;
		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;
				window.listings.data.nextPosition = (window.listings.data.currStartRow + window.listings.data.maxShow) + '&maxShow=999';
			}
		}
		
		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) <= 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){
		$('#listing_pagination_container').append('<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(1 + '-' +window.listings.calculateNextUpperBound() + ' of ' + window.listings.data.totalResults);
			$('div#listing_pagination_container').append(data.CONTENT);
			//$('div#listing_dtn_container').append(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 = eval(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(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');

		}
		
		$('#listing_pagination_container .loading').remove();
		$('#listing_pagination_container').data('loading','false');
		
		if(window.listings.data.useMap){
			mapOptions['listings'].maxShow = placemarks['listings'].length;
			for (var i=0; i < window.listings.data.placemarks.length; i++) {
				placemarks.listings.push(window.listings.data.placemarks[i]);
			}
			//placemarks['listings'] = eval(window.listings.data.placemarks);
			//console.log(eval(window.listings.data.placemarks));
			
			preparePlacemarks();
			updatedFilters(placemarks.listings);
		}

		// rebind itinerary controls
		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(){
	$('.clearInput').each(function() {
		$(this).data('initial_value',$(this).val());
		$(this).focus(function() {
			if ($(this).val() == $(this).data('initial_value')) {
			this.value ='';
			}
		});
		$(this).blur(function() {
			if (this.value.length == 0)
				this.value = $(this).data('initial_value');
		});
	});
	
	$('#listing_pagination_container').data('loading','false');
	
	$(window).scroll(function () {
   	 if ($(window).height() + $(window).scrollTop() >= $(document).height() - 150) {
			if (!$('a.nxt').hasClass('disabled') && $('#listing_pagination_container').data('loading') == 'false') {
				$('a.nxt:first').click();
				$('#listing_pagination_container').data('loading','true');
			}
		}
	});
});


