//====================================================================================
//====================================================================================    

var nameCalendar	= "";  
var fontFace		= "verdana";
var fontSize		= 9;
var titleWidth		= 90;
var dayWidth		= 12;
var dayDigits		= 1;
var titleColor		= "#FFFFFF";

var daysColor			= "#E9E1CA";
//var bodyColor			= "#ffffff";
var bodyColor2			= "#D6F2F8";
var dayColor			= "#D6F2F8";
var dayColorExp			= "#E9E9E9";
var currentDayColor		= "#8CDBEC";

var footColor			= "#E9E1CA";
var borderColor			= "#E9E1CA";
var titleFontColor 		= "#333333";
var daysFontColor 		= "#000000";
var dayFontColor 		= "#999999";
var currentDayFontColor	= "#000000";
var footFontColor 		= "#333333";
var calFormat 			= "dd-mm-yyyy";
var weekDay 			= 0;

// codes
var calWidth	= 170; 
var calHeight	= 190;
var calOffsetX	= -10;
var calOffsetY	= 0;
var calWin		= null;
var winX		= 0;
var winY		= 0;
var cal			= "cal";
var cals		= new Array();
var currentCal	= null;

var isOpera		= (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
var isOpera5	= (navigator.appVersion.indexOf("MSIE 5") != -1 && navigator.userAgent.indexOf("Opera 5") != -1) ? true : false;
var isOpera6	= (navigator.appVersion.indexOf("MSIE 5") != -1 && navigator.userAgent.indexOf("Opera 6") != -1) ? true : false;
var isN6		= (navigator.userAgent.indexOf("Gecko") != -1);
var isN4		= (document.layers) ? true : false;
var isMac		= (navigator.userAgent.indexOf("Mac") != -1);
var isIE		= (document.all && !isOpera && (!isMac || navigator.appVersion.indexOf("MSIE 4") == -1)) ? true : false;
var isIE7		= (navigator.appVersion.indexOf("MSIE 7") > -1) ? true : false;

if (isN4) 
{
	fontSize += 2;
}

/* hides <select> and <applet> objects (for IE only) */
function hideElement(elmID, overDiv)
{
    if(isIE && !isIE7)
    {
		for(i = 0; i < document.all.tags(elmID).length; i++)
		{
			obj = document.all.tags(elmID)[i];
			if(!obj || !obj.offsetParent)
			{
				continue;
			}
	    
			// Find the element's offsetTop and offsetLeft relative to the BODY tag.
			objLeft   = obj.offsetLeft;
			objTop    = obj.offsetTop;
			objParent = obj.offsetParent;
	        
			while(objParent.tagName.toUpperCase() != "BODY")
			{
				objLeft  += objParent.offsetLeft;
				objTop   += objParent.offsetTop;
				objParent = objParent.offsetParent;
			}
	    
			objHeight = obj.offsetHeight;
			objWidth = obj.offsetWidth;
	    
			if((overDiv.offsetLeft + overDiv.offsetWidth) <= objLeft);
			else if((overDiv.offsetTop + overDiv.offsetHeight) <= objTop);
			else if(overDiv.offsetTop >= (objTop + objHeight));
			else if(overDiv.offsetLeft >= (objLeft + objWidth));
			else
			{
				obj.style.visibility = "hidden";
			}
		}
    }
}
    
/*
* unhides <select> and <applet> objects (for IE only)
*/
function showElement(elmID)
{
    if(isIE && !isIE7)
    {
		for(i = 0; i < document.all.tags(elmID).length; i++)
		{
			obj = document.all.tags(elmID)[i];
	        
			if(!obj || !obj.offsetParent)
			{
				continue;
			}
	    
			obj.style.visibility = "";
		}
    }
}

function setWidth(tWidth, dWidth, dDigits) 
{
  	if (tWidth > 0) 
  	{
  		titleWidth = tWidth;
  	}
  	if (dWidth > 0) 
  	{
  		dayWidth = dWidth;
  	}
  	if (dDigits > 0) 
  	{
  		dayDigits = dDigits;
  	}
}

/**
* 
*
* @param 
*/  
function addCalendar(name, title, fieldYear, fieldDay, form, capa) 
{
  	cals[cals.length] = new calOBJ(name, title, fieldYear, fieldDay, form);
}

/**
* calOBJ: Crea el objeto calendario
*
* @param name: Nombre del calendario
* @param title: Titulo del calendario
* @param fieldYear: Campo de anos y mes del calendario
* @param fieldDay: campos del dia del calendario
* @param form: 
* @param capa:   
*/  
function calOBJ(name, title, fieldYear, fieldDay, form) 
{
  	this.name 		= name;
  	this.title 		= title;
  	this.field 		= fieldYear;
  	this.field_d 	= fieldDay;
  	this.formName 	= form;
  	this.form 		= null;
}

/**
* findCalendar: recupera el objeto calendario 
* del array de calendarios
*
* @param name: Nombre del calendario
*/  
function findCalendar(name) 
{
  	for (var i = 0; i < cals.length; i++) 
  	{
  		if (cals[i].name == name) 
  		{
  			if (cals[i].form == null) 
  			{
  				if (cals[i].formName == "") 
  				{
  					if (document.forms[0]) 
  					{
  						cals[i].form = document.forms[0];
  					}
  				}
  				else if (document.forms[cals[i].formName]) 
  				{
  					cals[i].form = document.forms[cals[i].formName];
  				}
  			}
  			
  			return cals[i];
  		}
  	}	
  	
  	return null;
}

/**
* getDayName: Retorna el nombre del dia
*
* @param y: Ano
* @param m: Mes
* @param d: dia  
*/  
function getDayName(y, m, d) 
{
  	var wd	= new Date(y, m, d);
  	return yxDays[wd.getDay()].substring(0,3);
}

/**
* 
*
* @param 
*/  
function getMonthFromName(m3)
{
  	for (var i = 0; i < yxMonthsLarge.length; i++) 
  	{
  		if (yxMonthsLarge[i].toLowerCase().substring(0,3) == m3.toLowerCase()) 
  		{
  			return i;
  		}
  	}	
  	
  	return 0;
}

/**
* getFormat
*
* @param 
*/  
function getFormat() 
{
  	var calF = calFormat;	
  	calF 	= calF.replace(/\\/g, '\\\\');
  	calF 	= calF.replace(/\\/g, '\\\/');
  	calF 	= calF.replace(/\[/g, '\\\[');
  	calF 	= calF.replace(/\]/g, '\\\]');
  	calF 	= calF.replace(/\(/g, '\\\(');
  	calF 	= calF.replace(/\)/g, '\\\)');
  	calF 	= calF.replace(/\{/g, '\\\{');
  	calF 	= calF.replace(/\}/g, '\\\}');
  	calF 	= calF.replace(/\</g, '\\\<');
  	calF 	= calF.replace(/\>/g, '\\\>');
  	calF 	= calF.replace(/\|/g, '\\\|');
  	calF 	= calF.replace(/\*/g, '\\\*');
  	calF 	= calF.replace(/\?/g, '\\\?');
  	calF 	= calF.replace(/\+/g, '\\\+');
  	calF 	= calF.replace(/\^/g, '\\\^');
  	calF 	= calF.replace(/\$/g, '\\\$');
  	calF 	= calF.replace(/dd/i, '\\d\\d');
  	calF 	= calF.replace(/mm/i, '\\d\\d');
  	calF 	= calF.replace(/yyyy/i, '\\d\\d\\d\\d');
  	calF 	= calF.replace(/day/i, '\\w\\w\\w');
  	calF 	= calF.replace(/mon/i, '\\w\\w\\w');	

  	return new RegExp(calF);
}

function getDateNumbers(date) 
{
  	var y, m, d;
  	var yIdx 	= calFormat.search(/yyyy/i);
  	var mIdx 	= calFormat.search(/mm/i);
  	var m3Idx 	= calFormat.search(/mon/i);
  	var dIdx 	= calFormat.search(/dd/i);
  	y		= date.substring(yIdx,yIdx+4)-0;
  	if (mIdx != -1) 
  	{
  		m = date.substring(mIdx, mIdx + 2) - 1;
  	}
  	else 
  	{
  		var m = getMonthFromName(date.substring(m3Idx, m3Idx + 3));
  	}
  	d = date.substring(dIdx, dIdx + 2) - 0;  
  	return new Array(y, m, d);
}

function hideCal() 
{
  	//calWin.close();
  	//calWin 		= null;
  	calWin.style.visibility = "hidden";
  	window.status 	= "";

	showElement("SELECT");
	showElement("APPLET");
}

function lastDay(d) 
{
  	var yy = d.getFullYear();
  	var mm = d.getMonth();
  	for (var i = 31; i >= 28; i--) 
  	{
  		var nd = new Date(yy, mm, i);
		if (mm == nd.getMonth()) 
		{
			return i;
		}
  	}
}

function firstDay(d) 
{
  	var yy = d.getFullYear();
  	var mm = d.getMonth();
  	var fd	= new Date(yy, mm, 0);
  	return fd.getDay();
}

function dayDisplay(i) 
{
  	if (dayDigits == 0) 
  	{
  		return yxDays[i];
	}
  	else 
  	{
  		return yxDays[i].substring(0, dayDigits);
  	}
}

/**
* get2Digits: Retorna el digito en formato de dos digitos
*
* @param n: numero 
*/
function get2Digits(n) 
{
	return ((n < 10) ? "0" : "") + n;
}

/**
* clearDate: Borra calendario
*/
function clearDate() 
{
  	currentCal.form[currentCal.field].value = "";
  	hideCal();
}

/**
* actualday
*/
function actualday() 
{  	
  	var today 	= new Date();
  	var day   	= today.getDate();
  	var month 	= today.getMonth();
  	var year  	= today.getFullYear();
  	
  	var actualdate 	= day + "-" + month + "-" + year;
  	return actualdate;
}

/**
* checkDate: 
*
* @param name: 
*/
function checkDate(name) 
{
  	var thisCal = findCalendar(name);
  	if (thisCal != null && thisCal.form != null && thisCal.form[thisCal.field]) 
  	{
  		var calRE = getFormat();
  		if (calRE.test(thisCal.form[thisCal.field].value)) 
  		{
  			return 0;
  		}
  		else 
  		{
  			return 1;
  		}
  	}
  	else 
  	{
  		return 2;
  	}
}

/**
* getCurrentDate: 
*/
function getCurrentDate() 
{
  	var date = calFormat;
  	var d = new Date();
  	date = date.replace(/yyyy/i, d.getFullYear());
  	date = date.replace(/mm/i, get2Digits(d.getMonth() + 1));
  	date = date.replace(/dd/i, get2Digits(d.getDate()));	
  	return date;
}
	
/**
* compareDates: 
*
* @param date1: 
* @param date2:  
*/
function compareDates(date1, date2) 
{
  	var calRE = getFormat();
  	var d1, d2;	
  	if (calRE.test(date1)) 
  	{
  		d1 = getNumbers(date1);
  	}
  	else 
  	{
  		d1 = getNumbers(getCurrentDate());
  	}	
  	if (calRE.test(date2)) 
  	{
  		d2 = getNumbers(date2);
  	}
  	else 
  	{
  		d2 = getNumbers(getCurrentDate());
  	}	
  	var dStr1 = d1[0] + "" + d1[1] + "" + d1[2];
  	var dStr2 = d2[0] + "" + d2[1] + "" + d2[2];	
  	if (dStr1 == dStr2) 
  	{
  		return 0;
  	}
  	else if (dStr1 > dStr2) 
  	{
  		return 1;
  	}
  	else 
  	{
  		return -1;
  	}
}

/**
* getNumbers: 
*
* @param date: 
*/
function getNumbers(date) 
{
  	var calRE = getFormat();
  	var y, m, d;	
  	if (calRE.test(date)) 
  	{
  		var yIdx = calFormat.search(/yyyy/i);
  		var mIdx = calFormat.search(/mm/i);
  		var m3Idx = calFormat.search(/mon/i);
  		var dIdx = calFormat.search(/dd/i);	
  		y = date.substring(yIdx, yIdx + 4);
  		if (mIdx != -1) {
  			m = date.substring(mIdx, mIdx + 2);
  		}
  		else 
  		{
  			var mm = getMonthFromName(date.substring(m3Idx, m3Idx + 3)) + 1;
  			m = (mm < 10) ? ("0" + mm) : ("" + mm);
  		}
  		d = date.substring(dIdx, dIdx + 2);	
  		return new Array(y, m, d);
  	}
  	else 
  	{
  		return new Array("", "", "");
  	}
}  

///====================================================================================

function calBody(d, day, name) 
{
  	var s = "<table class='calendar' border='0' cellspacing='2' cellpadding='3'>\n";
  	s += "  <tr>\n";
  	s += "	  <td colspan='7' class='calendartop'>\n";
  	s += "      <table width='100%' cellspacing='0' cellpadding='0' border='0'>\n";  	

	// Render month controls
  	var yy		= d.getFullYear();
  	var mm		= yxMonthsLarge[d.getMonth()];  	  		
	s += "        <tr>\n";
	if (yy == yearmore && d.getMonth() == 11)
	{
		s += "          <td width='25%' class='calendartitle strong'><a class='calendartitlea' href='javascript:prepMonth(" + d.getMonth() + ",\"" + name + "\")'>&#139;&#139;</a></td>\n";
		s += "          <td width='50%' class='calendartitle strong'><nobr>" + mm + " " + yy + "</nobr></td>\n";
		s += "          <td width='25%' class='calendartitle'>&nbsp;</span></td>\n";
	} 
	else
	{ 
		var today 	= new Date();				
		var month 	= today.getMonth(); 
		if (d.getMonth() == month && yy == yearmore - 1)
		{			
			s += "          <td width='25%' class='calendartitle'>&nbsp;</td>\n";
		} 
		else 
		{
			s += "          <td width='25%' class='calendartitle strong'><a class='calendartitlea' href='javascript:prepMonth(" + d.getMonth() + ",\"" + name + "\")'>&#139;&#139;</a></td>\n";		
		}
		s += "          <td width='50%' class='calendartitle strong'><nobr>" + mm + " " + yy + "</nobr></td>\n";
		s += "          <td width='25%' class='calendartitle strong'><a class='calendartitlea' href='javascript:nextMonth(" + d.getMonth() + ",\"" + name + "\")'>&#155;&#155;</a></td>\n";		
	}
	s += "        </tr>\n";
	s += "      </table>\n";
	s += "    </td>\n";
	s += "	</tr>\n";
	
	// Render week day names
	s += "	<tr>";	
  	for (var i = weekDay; i < weekDay + 7; i++) 
  	{
  		s += "    <td class='calendardays'>" + dayDisplay(i) + "</td>\n";
  	}	
  	s += "	</tr>\n";
	
	// Render days
  	var dayCount	= 1;
  	var fd		= firstDay(d);
  	var ld		= lastDay(d);	
  	if (weekDay > 0 && fd == 0) 
  	{
  		fd = 7;
  	}
  	for (var i = 0; i < 6; i++) 
  	{
      	s += "	<tr>\n";
      	for (var j = weekDay; j < weekDay + 7; j++) 
      	{
        	if (i * 7 + j < fd || dayCount > ld) 
        	{
          		s += "    <td class='calendarday'>&nbsp;</td>\n";
        	}
        	else 
        	{
				var myDate	= calFormat;
				myDate 		= myDate.replace(/yyyy/i, cY);
				myDate 		= myDate.replace(/mm/i, get2Digits(cM + 1));
				myDate 		= myDate.replace(/MON/, yxMonths[cM].substring(0,3).toUpperCase());
				myDate 		= myDate.replace(/Mon/i, yxMonths[cM].substring(0,3));
				myDate 		= myDate.replace(/dd/i, get2Digits(dayCount));
				myDate 		= myDate.replace(/DAY/, getDayName(cY,cM,dayCount).toUpperCase());
				myDate 		= myDate.replace(/day/i, getDayName(cY,cM,dayCount));
				valueDate	= compareDates(myDate, actualday());            			

          		var bgColor	= dayColor;
          		var fgTag	= "calendarday";
          		var fgTagA	= "calendardaya";
          		if (dayCount==day) 
          		{ 
            		bgColor	= currentDayColor; 
            		fgTag	= "calendarcurrentDay";
            		fgTagA	= "calendarcurrenta";	
          		}	
          		if (valueDate != -1) 
          		{
					s += "    <td class='" + fgTag + "'><a class='" + fgTagA + "' href='javascript:pickDate(" + dayCount + ")'>" + (dayCount++) + "</a></td>\n";
				} 
				else 
				{
					s += "    <td class='" + fgTag + "'>" + (dayCount++) + "</td>\n";
				} 
       		}
      	}
      	s += "  </tr>\n";
	}
	s += "  <tr>\n";
	s += "    <td colspan='7' align='left' valign='baseline' class='calendarfoot'>\n";
	s += "      <a class='calendarfoota' href='javascript:hideCal()'>" + yxLinks[0] +"</a>&nbsp;<a class='calendarfoota' href='javascript:hideCal()'>" + yxLinks[1] + "</a></td>\n";
	s += "	</tr>\n";
	s += "</table>\n";
	
	return s;
}

/**
* prepMonth: Decrementa un mes 
*
* @param m: mes 
* @param name: Nombre del calendario
*/ 
function prepMonth(m, name) 
{
  	cM = m - 1;
  	if (cM < 0)
  	{ 
  		cM = 11; 
  		cY--; 
  	}
  	var nd	= new Date(cY, cM, 1);
  	changeCal(nd, name);
}

/**
* nextMonth: Incrementa un mes 
*
* @param m: mes 
* @param name: Nombre del calendario
*/   
function nextMonth(m, name) 
{
  	cM = m + 1;
  	if (cM > 11) 
  	{ 
  		cM = 0;
  		cY++;
  	}
  	var nd	= new Date(cY, cM, 1);
  	changeCal(nd, name);
}
  
/**
* changeCal: Cambio el calendario
*
* @param d: dia
* @param name: Nombre del calendario
*/     
function changeCal(d, name) 
{
  	var dd = 0;	
  	if (currentCal != null) 
  	{
  		var calRE = getFormat();	
  		if (currentCal.form[currentCal.field].value!="" && calRE.test(currentCal.form[currentCal.field].value)) 
  		{
  			var cd = getDateNumbers(currentCal.form[currentCal.field].value);
  			if (cd[0] == d.getFullYear() && cd[1] == d.getMonth()) 
  			{
  				dd = cd[2];
  			}
  		}
  		else 
  		{
  			var cd = new Date();
  			if (cd.getFullYear() == d.getFullYear() && cd.getMonth() == d.getMonth()) 
  			{
  				dd = cd.getDate();
  			}
  		}
  	}	
  	var myCalendar = calBody(d, dd, name);
  	calWin.innerHTML = myCalendar;
  	calWin.style.visibility = "visible";

  	//calWin.document.open();
  	//calWin.document.write(myCalendar);
  	//calWin.document.close();
}

/**
* pickDate: 
*
* @param d: Dia pulsado
*/  
function pickDate(d) 
{ 
  	hideCal();	
  	var myDate	= calFormat;
  	myDate 		= myDate.replace(/yyyy/i, cY);
  	myDate 		= myDate.replace(/mm/i, get2Digits(cM + 1));
  	myDate 		= myDate.replace(/MON/, yxMonths[cM].substring(0,3).toUpperCase());
  	myDate 		= myDate.replace(/Mon/i, yxMonths[cM].substring(0,3));
  	myDate 		= myDate.replace(/dd/i, get2Digits(d));
  	myDate 		= myDate.replace(/DAY/, getDayName(cY,cM,d).toUpperCase());
  	myDate 		= myDate.replace(/day/i, getDayName(cY,cM,d));
  	var arr_fecha	= myDate.split("-");		
  	currentCal.form[currentCal.field_d].value	= arr_fecha[0];
  	currentCal.form[currentCal.field].value		= arr_fecha[1] + "-" + arr_fecha[2];	  			  	 
  	currentCal.form[currentCal.field].focus();
}  

/**
* markClick: 
*
* @param e:
*/   
function markClick(e) 
{
	var srcEl = null;
  	if (isIE || isOpera6) 
  	{
  		winX = event.screenX;
  		winY = event.screenY;
		srcEl = event.srcElement;
  	}
  	else if (isN4 || isN6) 
  	{
  		winX = e.screenX;
  		winY = e.screenY;	
  		document.routeEvent(e);
  		srcEl = e.target;
  	}	

	var leftpos	= 0;
	var toppos = 0;
	var tag = srcEl;

	if(tag.offsetParent)
	{
		leftpos = tag.offsetLeft;
		toppos = tag.offsetTop;
		while(tag = tag.offsetParent)
		{
			leftpos += tag.offsetLeft;
			toppos += tag.offsetTop;
		}
	}
	winX = leftpos;
	winY = toppos + srcEl.offsetHeight + 4;

  	return true;
}

function showCal(name, dia, mes, ano)
{
  	showCal(name);
}

/**
* showCal: Muestra el calendario
*
* @param name: Nombre del calendario
*/
function showCal(name, container) 
{
  	nameCalendar 	= name;
  	var lastCal	= currentCal;
  	var d		= new Date()
  	var hasCal	= false;	
  	currentCal 	= findCalendar(name);	
  	if (currentCal != null && currentCal.form != null && currentCal.form[currentCal.field]) 
  	{
  		var calRE = getFormat();

		if (currentCal.form[currentCal.field].value != "" ) 
		{
  			var cd = getDateNumbers(currentCal.form[currentCal.field_d].value + "-" + currentCal.form[currentCal.field].value);

  			d = new Date(cd[0],cd[1],cd[2]);	
  			cY = cd[0];
  			cM = cd[1];
  			dd = cd[2];
  		}
  		else 
  		{
  			cY = d.getFullYear();
  			cM = d.getMonth();
  			dd = d.getDate();
  		}	
  		var myCalendar = calBody(d,dd, name);	
  		if (calWin != null && calWin.style.visibility == "visible") //!calWin.closed) 
  		{
  			//hasCal = true;
  			//calWin.moveTo(winX + calOffsetX,winY + calOffsetY);
  			hideCal();
  			return;
  		}	
  		//if (!hasCal) 
  		//{
  		//	if (isIE || isOpera6) 
  		//	{
  		//		calWin = window.open("", "cal", "toolbar=0,width=" + calWidth + ",height=" + calHeight + ",left=" + (winX + calOffsetX) + ",top=" + (winY + calOffsetY));
  		//	}
  		//	else 
  		//	{
  		//		calWin = window.open("","cal","toolbar=0,width=" + calWidth + ",height=" + calHeight + ",screenx=" + (winX + calOffsetX) + ",screeny=" + (winY + calOffsetY));
  		//	}
  		//}	
  		//calWin.document.open();
  		//calWin.document.write(myCalendar);
  		//calWin.document.close();	
  		//calWin.focus();
//document.write(myCalendar);
	  	calWin.innerHTML = myCalendar;
  		calWin.style.visibility = "visible";
		calWin.style.left = winX + "px"; //winX + calOffsetX; //imgCal.offsetLeft + leftpos - imgCal.width;
		calWin.style.top = winY + "px"; //winY + calOffsetY; //imgCal.offsetTop + toppos + imgCal.offsetHeight + 2;

		hideElement("SELECT", calWin); //document.getElementById("calendar"));
		hideElement("APPLET", calWin); //document.getElementById("calendar"));
  	}
  	else 
  	{
  		if (currentCal == null) 
  		{
  			window.status = "Calendar [" + name + "] not found.";
  		}
  		else if (!currentCal.form) 
  		{
  			window.status = "Form [" + currentCal.formName + "] not found.";
  		}
  		else if (!currentCal.form[currentCal.field]) 
  		{
  			window.status = "Form Field [" + currentCal.formName + "." + currentCal.field + "] not found.";
  		}	
  		if (lastCal != null) 
  		{
  			currentCal = lastCal;
  		}
  	}
}

// ------

if (isN4 || isN6) 
{
    document.captureEvents(Event.CLICK);
}
document.onclick = markClick;

function printLayerWeekDay(layer, form, month, day) 
{
	var objMes 	= eval("document." + form + "." + month);
	var objDia 	= eval("document." + form + "." + day);
	if (objDia.value != "" && objMes.value != ""){
		var ent_mesano	= objMes.value.split("-");
		var diasem2 	= new Date(parseInt(ent_mesano[1]) + "/" + ent_mesano[0] + "/" + objDia.value);
		var diasemana2 	= diasem2.getDay();	
		if(diasemana2 == 0)
			diasemana2 = 6;
		else
			diasemana2--;
		document.getElementById(layer).innerHTML = yxDays[diasemana2];
	} 
	else 
	{
		document.getElementById(layer).innerHTML = "&nbsp;";
	}
}		

function validate() 
{
	today = new Date();
	if(validateDate(today))
	{
		document.searchForm.submit();
	}
	else
		return;
}

function validateDate(today)
{	
  	var arrivalday		= eval("document.getElementById(cals[0].field_d)"); //document.searchForm.en_dia.value;
	var arrivalmnthyr	= eval("document.getElementById(cals[0].field)"); //document.searchForm.en_mesano.value;	

	if(!arrivalday || !arrivalmnthyr)
		return false;
		
	var departureday	= eval("document.getElementById(cals[1].field_d)"); //document.searchForm.sa_dia.value;
	var departuremnthyr	= eval("document.getElementById(cals[1].field)"); //document.searchForm.sa_mesano.value;			
	
	if(!departureday && !departuremnthyr)
		return false;

	var txtArrival		= arrivalday.value + "-" + arrivalmnthyr.value;	
	var txtDepature		= departureday.value + "-" + departuremnthyr.value;							
	
	var spl_arrival		= txtArrival.split("-");	
	var spl_departure	= txtDepature.split("-");			
	var dateArrival 	= new Date(new Number(spl_arrival[2]), new Number(spl_arrival[1]) - 1, new Number(spl_arrival[0]), 0, 0, 0);
	var dateDeparture 	= new Date(new Number(spl_departure[2]), new Number(spl_departure[1]) - 1, new Number(spl_departure[0]), 0, 0, 0);

	if(dateArrival.getTime() < today.getTime())
	{
		alert(Calendar_errors[1]);	
		return false;		
	}
	if(dateDeparture.getTime() < today.getTime())
	{
		alert(Calendar_errors[2]);	
		return false;		
	}
	if((dateArrival.getTime() >= dateDeparture.getTime()))
	{
		alert(Calendar_errors[3]);	
		return false;		
	}
	var dateArrival2 = dateArrival.getTime() + 63*24*60*60*1000;			
	if(dateDeparture.getTime() >= dateArrival2)
	{
		alert(Calendar_errors[5]);
		return false;		
	}
	
	return true;
}

//=========================================
// day = 1,2,3,4,...31
// month = 0,1,2,3, ...11
// year = 2005,2006 ...
// incDays, Days increment 0,1,2,..
// incMonths, Months increment 0,1,2,..
// incYears, Years increment 0,1,2,..
//=========================================
function DateAdd(day, month, year, incDays, incMonths, incYears)
{
	var sAux 	= "";
	var startDate 	= new Date(year, month, day, 0, 0, 0);	   			
	var returnDate 	= new Date(startDate.getTime());   	
	var yearsToAdd 	= incYears;  	   	
	var month 	= returnDate.getMonth() + incMonths;
	if (month > 11)
	{
		yearsToAdd 	= Math.floor((month + 1) / 12);
		month 		-= 12 * yearsToAdd;
		yearsToAdd 	+= incYears;
	}
	returnDate.setMonth(month);
	returnDate.setFullYear(returnDate.getFullYear()	+ yearsToAdd);	
	//returnDate.setTime(returnDate.getTime()+60000*60*24*incDays);	
	returnDate.setDate(returnDate.getDate() + incDays);
	if(returnDate.getDate() < 10) 
		sAux += "0"
	sAux += returnDate.getDate() + "/";
	if((returnDate.getMonth() + 1) < 10)
		sAux += "0";
	sAux += (returnDate.getMonth() + 1) + "/" + returnDate.getFullYear();  	
	
	return sAux;
}