var FitnessCal = {
	cacheLength:20,
	cache:{},
	page:1,
	currentPage:1,
	pagelength:15,
	init:function(){

		var d = new Date();
		var day = d.getDay()+ 1;
		var time = d.getHours() < 12 ? 1 :
					d.getHours() < 17 ? 2 : 3 ;
		
		Select.setByValue({day:day,time:time});
		$('time').onchange = FitnessCal.update;
		$('day').onchange = FitnessCal.update;
		$('location').onchange = FitnessCal.update;
		$('level').onchange = FitnessCal.update;
		$('reset').onclick = FitnessCal.update;
		$('type').onclick = FitnessCal.update;
		$('reset').onclick = FitnessCal.resetSort;
		
		try {
		if( initialType ) {
			Select.setByValue({type:initialType,day:0,time:0});	
		}
		} catch(e) {}
		
		
		FitnessCal.update();
	},
	update: function() {

		Element.update('calContainer','<img src="/images/loader_white.gif"> Loading Fitness Classes ...');
		var _q =    "action=getClasses" +
				 	"&sort[day]=" + $F('day') +
					"&sort[location_id]="+$F('location') +
					"&sort[classtype_id]="+$F('type') +
					"&sort[level]="+ $F('level') +
					/*"&sort[trainer_id]="+$F('trainer') +*/
					"&sort[time]=" + $F('time')+
					"&sort[page]="+FitnessCal.page +
					"&sort[pagelength]="+FitnessCal.pagelength;
					
		if( !FitnessCal.cache[_q] ) {
			var ajax = new Ajax.Updater('calContainer','ajax',{
			onComplete:function(){
				if( FitnessCal.cache.length > FitnessCal.cacheLength ) { FitnessCal.cache.shift } 
				FitnessCal.cache[_q] = $('calContainer').innerHTML;
				FitnessCal.setup();
				FitnessCal.currentpage = FitnessCal.page;
				FitnessCal.page=1;
			},
			postBody:_q,
			method:'post',
			evalScripts:true});
		} else {
			Element.update('calContainer',FitnessCal.cache[_q]);
			FitnessCal.setup();	
			FitnessCal.currentpage = FitnessCal.page;
			FitnessCal.page=1;
		}
	},
	setPage:function(p){
		System.debug("setpage:"+p);
		FitnessCal.page = p;
		FitnessCal.update();
	},
	prevPage:function(){
		FitnessCal.setPage( ( FitnessCal.currentpage > 1 ? FitnessCal.currentpage-1 : 1 ))
	},
	nextPage:function(max){
		if(FitnessCal.currentpage+1 <= max){
			FitnessCal.setPage(FitnessCal.currentpage+1);
		}
	},
	loadClass: function(obj){
		var id = obj.id.split("_")[1];
		if( id > 0 ) {
			location.href= "/fitness_classes/class/"+id;
		}
	},
	setup:function(){

		var nodes = $A( $('cal').getElementsByTagName('tr') );
		nodes.each(function(node){

			if(node.id!="row_head"){
				node.onmouseover = function(){
					Element.addClassName(this,'cal_over');
				}
				node.onmouseout =  function(){
					Element.removeClassName(this,'cal_over');
				}

				node.onclick = function () {
					FitnessCal.loadClass(this);
				}
			}
		});

	},
	resetSort:function()
	{
		Select.setByValue({day:0,time:0,type:0,location:0,type:0});
		FitnessCal.update();
	}
	
}