var calendar_tracker = {};
var calendar_tracking = {};
var calendar_widget = '/cgi-bin/infxwidgets/widget-calendar.pl';

function calendar_control(scripturl,params){
	//alert("function calendar_control("+scripturl+","+params+");");
	ajax_post_request(scripturl,params,"calendar_callback(http_request.responseText);");
}


function calendar_callback(jsonstr){
	var json;
	eval("json = " + jsonstr + ";");
	var target = rtnEl(json.target);
	//alert("target: "+json.target+" obj: "+target);
	if(json.mode == 'control'){
		if(!target){
			target = document.createElement('div');
			target.id = json.target;
			target.className = 'infxcalendar'
			target.style.background = '#eeeeee';
			
			document.body.appendChild(target);
		}
		target.style.position = 'absolute';

		var pos = findPos(calendar_tracker.trigger);
		target.style.left = (pos[0])+'px';	//+parseInt(calendar_tracker.trigger.width)
		target.style.top = (pos[1]+parseInt(calendar_tracker.trigger.height)+2)+'px';
		target.style.display = 'block';
		
		//_infx.popup.fadeUp(target.id,0,90,10);
		target.innerHTML = json.content;
		
		if (document.all){
			if(rtnEl("adultSelector")) rtnEl("adultSelector").style.visibility = 'hidden';
			if(rtnEl("childSelector")) rtnEl("childSelector").style.visibility = 'hidden';
			if(rtnEl("infantSelector")) rtnEl("infantSelector").style.visibility = 'hidden';
		}

	}else{
		if(target) target.innerHTML = json.content;
		else alert("Could not find the calendar target div!");
	}
}

function calendar_mouse_event(obj,type){
	if(type == 'click') obj.className += /with-events/.test(obj.className)?' locked':'';
	else if(type == 'select') obj.className += /selected/.test(obj.className)?' selected':'';
	else if(type == 'over') obj.className += ' highlight';
	else obj.className = obj.className.replace(/ highlight/,'');
}

function calendar_input_control(trigger,fieldid,limit_json,callback){

	var fieldObj = rtnEl(fieldid);
	
	var validate = {};
	validate[fieldObj.name] = 'date';
	if(!calendar_tracking[fieldid]) calendar_tracking[fieldid] = {'trigger':trigger,'field':fieldObj,'active':false,'target':'infx_calendar_control'};
	calendar_tracker = calendar_tracking[fieldid];
	calendar_tracker.callback = callback;
	//alert(calendar_tracker.active);
	if(validate_single_field(fieldObj,validate)){
		if(calendar_tracker.active == false){
			var jparams = {'mode':'control','type':'ultracompact','ajax':1,'input':fieldid,'target':calendar_tracker.target,'view_date':fieldObj.value};
			for(var p in limit_json){
				jparams[p] = limit_json[p];
			}
			
			calendar_control(calendar_widget,jparams);
			for(var p in calendar_tracking){
				calendar_tracking[p].active = (p == fieldid)?true:false;
			}
		}else{
			close_calendar_input();
		}
	}
	
	if(window.attachEvent){ window.attachEvent('onload',load_calendar_input); }
	else{ window.addEventListener('load',load_calendar_input,false); }
}

var cl=-1;
function show_calendar_events(obj,dt,sh){
	if(rtnEl('event_text')){
		rtnEl('event_text').innerHTML = "";//BC_getevents(Number(year),Number(month),dt,0);

		if (cl>-1){ 
			var obj = rtnEl('day'+cl);																		// clear last selection locked class (might be letting them open lots??)
			obj.className = obj.className.replace(/ locked/,'');
			if (cl==dt){
				cl=-1;
				return; // you have clicked the same date twice
			}else{
				cl=-1;
			}
		}
		
		calendar_mouse_event(rtnEl('day'+dt),'click');
		cl=dt; // store latest selection
	}
}

function select_date(date,dt){
	calendar_tracker.field.value = date;
	if (calendar_tracker.callback){
		calendar_tracker.callback(calendar_tracker.field);
	}
	close_calendar_input();
}


function close_calendar_input(){
	calendar_tracker.active = false;
	//_infx.popup.fadeDown(calendar_tracker.target,90,0,10);
	if(rtnEl(calendar_tracker.target)) rtnEl(calendar_tracker.target).style.display = 'none';
	
	if (document.all){
		if(rtnEl("adultSelector")) rtnEl("adultSelector").style.visibility = 'visible';
		if(rtnEl("childSelector")) rtnEl("childSelector").style.visibility = 'visible';
		if(rtnEl("infantSelector")) rtnEl("infantSelector").style.visibility = 'visible';
	}
		
	
}

function load_calendar_input(){
	if(calendar_tracker){
		calendar_tracker.active = false;
	}	
}