var hbgcolor = '#004080';//'#cb833d';
var hfgcolor = '#ffffff';
var bgcolor = '#ffffff';
var fgcolor = '#b0b0b0';
var nowcolor = '#800000';
var datcolor = '#1187e7';
var bdrcolor = '#808080';
var selcolor = '#000000';//'#004080';
var imgFile='/styles/images/delete.gif';

function showCalendar(shift){
	//check if calendar forward shift limit is set and if it is then prevent month shifting beyond that value
	try{
		if(maxCalendarShift!=null){
			if(shift > maxCalendarShift){
				shift = maxCalendarShift;
			}
		}
	}catch(e){
		//if limit is not defined do nothing
	}
	//
	var now=new Date();
	var d=new Date(now.getFullYear(),now.getMonth(),now.getDate());
	var wd=new Date(d.getFullYear(),d.getMonth()+shift,1);
	var month = wd.getMonth();
	var cal="";
	var value="";
	//cal+=('<script language="JavaScript" src="jslib/callib.js" type="text/javascript"></script>');
	//cal+=('<script language="JavaScript" src="jslib/scriptaculous-js-1.7.0/lib/prototype.js" type="text/javascript"></script>');
	//cal+=('<script language="JavaScript" src="jslib/scriptaculous-js-1.7.0/src/scriptaculous.js" type="text/javascript"></script>');
	cal+=('<center>');
	cal+=('<div id="DayCal">');
	cal+=('<table border=0 cellspacing=0 cellpadding=1>');
	cal+=('<tr>');
	cal+=('<td valign=top>');
	cal+=('<div id="dayTable" style="width:15em; height:13em; overflow:auto; border: 1px solid '+bdrcolor+';">');
	cal+=('<table border=0 cellspacing=0 cellpadding=1>');
	cal+=('<tr>');
	cal+=('<td width="14%" align=center bgcolor="'+hbgcolor+'"><font color="'+hfgcolor+'">Sun</font></td>');
	cal+=('<td width="14%" align=center bgcolor="'+hbgcolor+'"><font color="'+hfgcolor+'">Mon</font></td>');
	cal+=('<td width="14%" align=center bgcolor="'+hbgcolor+'"><font color="'+hfgcolor+'">Tue</font></td>');
	cal+=('<td width="14%" align=center bgcolor="'+hbgcolor+'"><font color="'+hfgcolor+'">Wed</font></td>');
	cal+=('<td width="14%" align=center bgcolor="'+hbgcolor+'"><font color="'+hfgcolor+'">Thu</font></td>');
	cal+=('<td width="14%" align=center bgcolor="'+hbgcolor+'"><font color="'+hfgcolor+'">Fri</font></td>');
	cal+=('<td width="14%" align=center bgcolor="'+hbgcolor+'"><font color="'+hfgcolor+'">Sat</font></td>');					
	cal+=('</tr>');
	for(var j=0;j<6;j++){
		cal+=('<tr>');
		for(var i=0;i<7;i++){
			if(wd.getDay()==i && month==wd.getMonth()){
				value=wd.getFullYear()+zeropad(wd.getMonth()+1)+zeropad(wd.getDate());
				cal+=('<td align=center bgcolor="'+bgcolor+'"><div id="'+value+'"><a href="javascript:addDate(\''+value+'\')"><font color="'+(sameDates(d,wd)?nowcolor:datcolor)+'">'+wd.getDate()+'</font></a></div></td>');
				wd=new Date(wd.getFullYear(),wd.getMonth(),wd.getDate()+1);
			}else{
				cal+=('<td bgcolor="'+bgcolor+'">&nbsp;</td>');
			}
		}
		cal+=('</tr>')
	}
	wd=new Date(wd.getFullYear(),wd.getMonth(),wd.getDate()-1);
	cal+=('<tr>');
	//Prevent from going back beyond Jan 2000
	if((zeropad(wd.getMonth())+""+wd.getFullYear())=="002000"){
		cal+=('<td align=center bgcolor="'+hbgcolor+'"><font color="'+hfgcolor+'">&nbsp;</font></td>');
	}else{
		cal+=('<td align=center bgcolor="'+hbgcolor+'"><a href="javascript:shiftMonth('+(shift-1)+');"><font color="'+hfgcolor+'">&lt;&lt;</font></a></td>');
	}
	cal+=('<td align=center colspan=5 bgcolor="'+hbgcolor+'"><font color="'+hfgcolor+'">'+moy(wd.getMonth())+' '+wd.getFullYear()+'</font></td>');
	cal+=('<td align=center bgcolor="'+hbgcolor+'"><a href="javascript:shiftMonth('+(shift+1)+');"><font color="'+hfgcolor+'">&gt;&gt;</font></a></td>');
	cal+=('</tr>');
	cal+=('</table>');
	cal+=('</div>');
	cal+=('</td>');
	cal+=('<td valign=top bgcolor="'+bgcolor+'">');
	cal+=('<div style="width:10em; height:13em; overflow:auto; border: 1px solid '+bdrcolor+';">');
	cal+=('<div id="pickedDaysHolder" align="center"><font class=normal><br>Please select<br>date</font></div>');
	cal+=('<ul id="pickedDays"></ul>');
	cal+=('</div>');
	cal+=('</td>');
	cal+=('</tr>');
	cal+=('<tr>');
	cal+=('<td align=center><a href="javascript:addAll()"><font color="'+datcolor+'">Add All</font></a>');
	cal+=('</td>');
	cal+=('<td align=center><a href="javascript:removeAll()"><font color="'+datcolor+'">Remove All</font></a>');
	cal+=('</td>');
	cal+=('</tr>');
	cal+=('</table>');
	cal+=('</div>');
	return cal;

}
//
function moy(n){
	switch(n){
		case 0:return "January";
		case 1:return "February";
		case 2:return "March";
		case 3:return "April";
		case 4:return "May";
		case 5:return "June"
		case 6:return "July";
		case 7:return "August";
		case 8:return "September";
		case 9:return "October";
		case 10:return "November";
		case 11:return "December";
	}
}
//
function sameDates(d1,d2){
	if(d1.getFullYear()==d2.getFullYear() &&
	   d1.getMonth()==d2.getMonth() &&
	   d1.getDate()==d2.getDate())
	   return true;
	else
	   return false;
}
//
function zeropad(n){
	if((n+"").length==1)
		return "0"+n;
	else
		return n+"";
}
//
function shiftMonth(n){
	if (!$('DailyCalendar').empty()){
		//var IDs = $('pickedDays').immediateDescendants().collect(function (li) {return li.id.match(/\d+$/)[0];}).reverse();
		var IDs = $('pickedDays').immediateDescendants().collect(function (li) {return li.id.match(/\d+$/)[0];});
		Element.remove('DayCal');
	}
	$('DailyCalendar').innerHTML=showCalendar(n);	
	if(IDs!=null){
		IDs.each(addDate);
	}
}
//
function transform(d){
	return (d.substring(4,6)+'/'+ d.substring(6,8)+'/'+d.substring(0,4));
}
//
function addDate(dvalue) {
	Element.hide('pickedDaysHolder');
	var date = transform(dvalue);
	//var html = '<li id="day'+dvalue+'"><span><font color="'+selcolor+'">'+date+'</span> <a href="javascript:void(0);" onclick="removeDate(\''+dvalue+'\')">remove</a></font></li>';
	var html = '<li id="day'+dvalue+'"><span><font color="'+selcolor+'">'+date+'</font></span> <a href="javascript:void(0);" onclick="removeDate(\''+dvalue+'\')"><img src="'+imgFile+'" alt="Remove" border=0></a></li>';
	var inserted = false, skip=false;
	
	$('pickedDays').immediateDescendants().each(function(li) {
		if ($(li).firstChild.innerHTML.toLowerCase().indexOf(date.toLowerCase())>=0){
			skip=true;
			throw $break;
		}
	});

	if(!skip){
		/*
		$('pickedDays').immediateDescendants().each(function(li) {
			if ($(li).firstChild.innerHTML.toLowerCase()>date.toLowerCase()){
				new Insertion.Before(li.id, html);
				inserted=true;
				throw $break;
			}
		});
		*/
		if (!inserted){
			new Insertion.Bottom('pickedDays', html);
		}
	}
}
//
function removeDate(dvalue) {
	Element.remove("day"+dvalue);
	if ($('pickedDays').empty()){
		Element.show('pickedDaysHolder');
	}
}
//
function removeAll() {
	var IDs = $('pickedDays').immediateDescendants().collect(function (li) {return li.id.match(/\d+$/)[0];});
	IDs.each(removeDate);
}
//
function addAll() {
	//var IDs = $('dayTable').descendants().findAll(function(div){return parseInt(div.id)>0;}).collect(function (div) {return div.id.match(/\d+$/)[0];}).reverse();
	var IDs = $('dayTable').descendants().findAll(function(div){return parseInt(div.id)>0;}).collect(function (div) {return div.id.match(/\d+$/)[0];});
	IDs.each(addDate);
}
//
function showQuickCalendar(shift,x,y,tgt){
	var now=new Date();
	var d=new Date(now.getFullYear(),now.getMonth(),now.getDate());
	var wd=new Date(d.getFullYear(),d.getMonth()+shift,1);
	var month = wd.getMonth();
	var cal="";
	var value="";
	cal+=('<div id="QCal" style="border: 1px solid '+bdrcolor+';">');
	cal+=('<table border=0 cellspacing=0 cellpadding=1>');
	cal+=('<tr>');
	cal+=('<td width="14%" align=center bgcolor="'+hbgcolor+'"><font color="'+hfgcolor+'">Sun</font></td>');
	cal+=('<td width="14%" align=center bgcolor="'+hbgcolor+'"><font color="'+hfgcolor+'">Mon</font></td>');
	cal+=('<td width="14%" align=center bgcolor="'+hbgcolor+'"><font color="'+hfgcolor+'">Tue</font></td>');
	cal+=('<td width="14%" align=center bgcolor="'+hbgcolor+'"><font color="'+hfgcolor+'">Wed</font></td>');
	cal+=('<td width="14%" align=center bgcolor="'+hbgcolor+'"><font color="'+hfgcolor+'">Thu</font></td>');
	cal+=('<td width="14%" align=center bgcolor="'+hbgcolor+'"><font color="'+hfgcolor+'">Fri</font></td>');
	cal+=('<td width="14%" align=center bgcolor="'+hbgcolor+'"><font color="'+hfgcolor+'">Sat</font></td>');					
	cal+=('</tr>');
	for(var j=0;j<6;j++){
		cal+=('<tr>');
		for(var i=0;i<7;i++){
			if(wd.getDay()==i && month==wd.getMonth()){
				value=wd.getFullYear()+zeropad(wd.getMonth()+1)+zeropad(wd.getDate());
				cal+=('<td align=center bgcolor="'+bgcolor+'"><div id="'+value+'"><a href="javascript:setQDate(\''+value+'\',\''+tgt+'\')"><font color="'+(sameDates(d,wd)?nowcolor:datcolor)+'">'+wd.getDate()+'</font></a></div></td>');
				wd=new Date(wd.getFullYear(),wd.getMonth(),wd.getDate()+1);
			}else{
				cal+=('<td bgcolor="'+bgcolor+'">&nbsp;</td>');
			}
		}
		cal+=('</tr>')
	}
	wd=new Date(wd.getFullYear(),wd.getMonth(),wd.getDate()-1);
	cal+=('<tr>');
	//Prevent from going back beyond Jan 2000
	if((zeropad(wd.getMonth())+""+wd.getFullYear())=="002000"){
		cal+=('<td align=center bgcolor="'+hbgcolor+'"><font color="'+hfgcolor+'">&nbsp;</font></td>');
	}else{
		cal+=('<td align=center bgcolor="'+hbgcolor+'"><a href="javascript:shiftQCal('+(shift-1)+','+x+','+y+',\''+tgt+'\');"><font color="'+hfgcolor+'">&lt;&lt;</font></a></td>');
	}
	cal+=('<td align=center colspan=5 bgcolor="'+hbgcolor+'"><font color="'+hfgcolor+'">'+moy(wd.getMonth())+' '+wd.getFullYear()+'</font></td>');
	cal+=('<td align=center bgcolor="'+hbgcolor+'"><a href="javascript:shiftQCal('+(shift+1)+','+x+','+y+',\''+tgt+'\');"><font color="'+hfgcolor+'">&gt;&gt;</font></a></td>');
	cal+=('</tr>');
	cal+=('</table>');
	cal+=('</div>');
	return cal;

}
//
function shiftQCal(n,x,y,t){
	$('helperCalendar').setStyle({top : y, left : x});
	if($('helperCalendar')!=null){
		$('helperCalendar').innerHTML=showQuickCalendar(n,x,y,t);
		$('helperCalendar').show();
	}
}
//
function setQDate(v,t){
	var y=t+'y_r';
	var m=t+'m_r';
	var d=t+'d_r';
	if($('helperCalendar')!=null){
		setFormSelect(y,v.substring(0,4));
		setFormSelect(m,v.substring(4,6));
		setFormSelect(d,v.substring(6,8));
		$('helperCalendar').hide();
		$('helperCalendar').setStyle({top : 0, left : 0});
	}
}
//
function setFormSelect(s,v){
	var obj=eval('document.mainForm.'+s);
	for(var j=0; j<obj.options.length; j++){
		if(obj.options[j].value==v){
			obj.selectedIndex=j;
			break;
		}
	}
}
