//THESE VARIABLES NEED TO BE SET SERVER SIDE AND ARE DECLARED IN THE EVENT_LAYOUT CFC
//window.cal.data.currStartRow
//window.cal.data.currentUpperBound
//window.cal.data.totalResults
//window.cal.data.nextPosition
	window.cal = new Object();
	window.cal.data = new Array();
	window.cal.history = new Array();
	window.cal.isInDebugMode = true;
	
	if (window.cal.data.useMap) {
		window.cal.data.placemarks = placemarks['events'];
	}
	
	window.cal.moveToNext = function(fn) {
		this.executeCallBack(fn);
	}

	window.cal.moveToPrevious = function(fn) {
		this.executeCallBack(fn);
	}
	
	window.cal.moveToPosition = function(postion,fn) {
		this.executeCallBack(fn);
	}
	
	window.cal.executeCallBack = function(fn){
		call = (typeof call == 'undefined') ? function(x){return x;} : fn;
		return fn;	 	
	}
	
	window.cal.size = function(){
		return this.collection.length;
	};
	
	$(document).ready(function() {
 		//	logit('binding controls');
		$('.filterOptions .submitBtn').hide();
		
	 	$('a.nxt').click(function(e){
			if (!$(this).hasClass('disabled')) {
				var url = window.cal.buildURL('NEXT');
				window.cal.paginate(url,e);
			}
			return false;
		});

		$('a.prv').click(function(e){
			if (!$(this).hasClass('disabled')) {
				var url = window.cal.buildURL('PREVIOUS');
				window.cal.paginate(url,e);
			}
			return false;
		});
		
		
	 	$('a.nxt-end').click(function(e){
			if (!$(this).hasClass('disabled')) {
				var url = window.cal.buildURL('NEXT-END');
				window.cal.paginate(url,e);
			}
			return false;
		});

		$('a.prv-end').click(function(e){
			if (!$(this).hasClass('disabled')) {
				var url = window.cal.buildURL('PREVIOUS-END');
				window.cal.paginate(url,e);
			}
			return false;
		});
	});

	window.cal.buildURL = function(action){
		var baseURL = siteURL + 'includes/cfcs/events/event_ajax.cfm';
		var urlParams = '?e_viewBy='+window.cal.data.e_ViewBy
						+'&e_sDate='+window.cal.data.e_sDate
						+'&e_eDate='+window.cal.data.e_eDate
						+'&e_catID='+window.cal.data.e_catID
						+'&e_keyword='+window.cal.data.e_keyword
						+'&e_pageSize='+window.cal.data.e_pageSize
						+'&e_sortBy='+window.cal.data.e_sortBy
						+'&e_snapshot='+window.cal.data.e_snapshot
						+'&eventIDs='+window.cal.data.eventIDs;
						+'&viewmode='+window.cal.data.viewmode;
		var url = baseURL + urlParams;
		
		if (action == 'NEXT') {
			if (window.cal.data.isNotLastPage()) {
				window.cal.data.nextPosition = (window.cal.data.currStartRow + window.cal.data.e_pageSize);
				window.cal.data.e_pageNum++;
			} else {
				window.cal.data.nextPosition = window.cal.data.currStartRow;
			}
		}
		
		if (action == 'PREVIOUS') {
			if (window.cal.data.isNotFirstPage()) {
				window.cal.data.nextPosition = (window.cal.data.currStartRow - window.cal.data.e_pageSize);
				window.cal.data.e_pageNum--;
			} else {
				window.cal.data.nextPosition = window.cal.data.currStartRow;
			}
		}
		
		if (action == 'NEXT-END') {
			if (window.cal.data.isNotLastPage()) {
				window.cal.data.e_pageNum = Math.ceil(window.cal.data.totalResults / window.cal.data.e_pageSize);
				window.cal.data.nextPosition = ((window.cal.data.e_pageNum-1) * window.cal.data.e_pageSize) + 1;
			}
		}
		
		if (action == 'PREVIOUS-END') {
			if (window.cal.data.isNotFirstPage()) {
				window.cal.data.nextPosition = 1;
				window.cal.data.e_pageNum = 1;
			}
		}
		
		url = url + '&e_pageNum=' + window.cal.data.e_pageNum;
		url = url + '&startRow=' + window.cal.data.nextPosition;
		//logit('Url is'+ url);
		return url;
	}
		
	window.cal.data.isNotLastPage = function(){
		if ((window.cal.data.currStartRow + window.cal.data.e_pageSize) <= window.cal.data.totalResults) {
			return true;
		} else {
			return false;
		}
	}
	
	window.cal.data.isNotFirstPage = function(){
		if ((window.cal.data.currStartRow - window.cal.data.e_pageSize) > 0) {
			return true;
		} else {
			return false;
		}
	}
	
	window.cal.paginate = function(url, e) {
		
		$('#evntResultsHolder').html('<img class="loading" src="'+imgRoot+'shell/listings/loading.gif" />');
		$.getJSON(url,
		function(data){
			window.cal.refreshVars();
			$('.filter-showing').html('Showing ' + window.cal.data.currStartRow + '-' +window.cal.calculateNextUpperBound() + ' of ' + window.cal.data.totalResults);
			$('div#evntResultsHolder').get(0).innerHTML = data.CONTENT;
			if(window.cal.data.useMap)
				window.cal.data.placemarks = data.PLACEMARKS;
			window.cal.finalize();
		});
	}
	
	window.cal.refreshVars	= function(){
		window.cal.data.currStartRow = window.cal.data.nextPosition;
		window.cal.data.currentUpperBound = window.cal.calculateNextUpperBound();
	}
	
	window.cal.calculateNextUpperBound = function(){
		if((window.cal.data.currStartRow + window.cal.data.e_pageSize - 1) <= window.cal.data.totalResults){
			return (window.cal.data.nextPosition + window.cal.data.e_pageSize - 1);
		} else {
			return window.cal.data.totalResults;
		}
	}
	
	// update the paging controls
	window.cal.finalize = function(){
		// previous
		if(window.cal.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.cal.data.currentUpperBound >= window.cal.data.totalResults) {
			$('a.nxt').addClass('disabled');
			$('a.nxt-end').addClass('disabled');
		} else {
			$('a.nxt').removeClass('disabled');
			$('a.nxt-end').removeClass('disabled');
		}
			/*
			for(var i = 0; i < placemarks.events.length; i++){
				maps.events.addPlacemark(placemarks.events[i],overlays,false);
			}
			*/
			if(window.cal.data.useMap){
				placemarks['events'] = eval(window.cal.data.placemarks);
				preparePlacemarks();
				updatedFilters(placemarks.events);

		}
	
			//This calls the itnierary.js file to bind the ctrls
			//it requeires interary.js to be present
			bindCtrls();
			return true;			
	}


	
	
	window.cal.handleFailuer = function(response){
		//alert(response);
	}

	window.cal.myTimestamp = function(){
	    tstmp = new Date();    
	    return tstmp.getTime();
	} 
	 	
	function logit(str){
		if (sv.devserver) {
			var outstr = str;
			if (str.indexOf('End') == 0) {
				tabdepth -= 1;
			}
			for (var i = 0; i < tabdepth; i++) {
				outstr = '--' + outstr;
			}
			if (console) 
				console.log(outstr);
			if (str.indexOf('Called') == 0) {
				tabdepth += 1;
			}
		}
	}
