﻿// Archivo JScript
/* */

var gClientIsGecko = (window.controllers) ? true : false;
var gClientIsOpera = (window.opera) ? true : false;
var gClientIsIE    = (document.all && !gClientIsOpera) ? true : false;
var gClientIsIE5   = (gClientIsIE && /MSIE 5\.0/.test(navigator.appVersion)) ? true : false;
var gClientIsMac   = (/Mac/.test(navigator.appVersion)) ? true : false;

calendar = new Object();

var months=['enero','febrero','marzo','abril','mayo','junio','julio','agosto','septiembre','octubre','noviembre','diciembre'];
var days=['lu','ma','mi','ju','vi','sa','do'];
var days3=['lun','mar','mié','jue','vie','sáb','dom'];

function showCalendar(me, calId, dt, year_month, month_day, year_month2, month_day2){
        var c = document.getElementById(calId);
        calendar.cal = c;
        calendar.caldt = dt;
        calendar.calf = document.forms[0];
        
        calendar.c1 = document.getElementById(month_day);
        calendar.c2 = document.getElementById(year_month);
        calendar.c3 = document.getElementById(month_day2);
        calendar.c4 = document.getElementById(year_month2);
        
        var my;
        var v;
        if(dt=='checkin'){
            my = calendar.c2.value.split("-");
            v = calendar.c1.value;
        }else{
            my = calendar.c4.value.split("-");
            v = calendar.c3.value;
        }

        buildCal(my[0],my[1],v);

              
        c.style.top = getAbsoluteTop(me) + 19 + 'px';
        c.style.left = getAbsoluteLeft(me) + 19 + 'px';
        muestraCapa(calId);
        
}

function closeCal() {
    calendar.cal.style.display='none';
}

function buildCal(y,m,d){
    var daysInMonth=[31,0,31,30,31,30,31,31,30,31,30,31];
    td=new Date();
    if (!y) y = td.getFullYear();
    if (!m) m = td.getMonth()+1;
    if (!d) d = td.getDate;
	
	var dt = calendar.caldt;

    var mDate = new Date(y, m-1, 1);
    var firstMonthDay = mDate.getDay();
    daysInMonth[1]=(((mDate.getFullYear()%100!=0)
        &&(mDate.getFullYear()%4==0)) || (mDate.getFullYear()%400==0))?29:28;

    var t='<table class="caltable" cellspacing="0"><tr>';
    t+='<td class="calheader" colspan="7" class="monthYear">';
    if (y==td.getFullYear() && m==td.getMonth()+1) {
        t+='<a href="#" onclick="return false;"><img src="/App_Themes/mai/img/calendario/atras_f2.gif" alt="atras"></a>';
    }
    else {
        t+='<a href="#" onclick="prevMonth('+y+','+m+'); return false;" title="atrás"><img src="/App_Themes/mai/img/calendario/atras_f1.gif" alt="atras"></a>';
    }
    t+='&nbsp;<select name="ym" onchange="goYearMonth(this.options[this.selectedIndex].value)">';
    var mn=td.getMonth()+1;var yr=td.getFullYear();
    var last_month=0;
    for(n=0;n<=11;n++){
        t+='<option value="' + yr + '-' + mn + '"';
        if (mn == m && yr == y) {
            t+=' selected="selected"';
            last_month=1;
        } else {
            last_month=0;
        }
        t+='>' + months[mn-1] + ' ' + yr +'</option>';
        mn++; if (mn>12) { mn=1;yr++ }
    }
    t+= ' </select>&nbsp;';
    if (last_month==1) {
        t+='<a href="#" onclick="return false;"><img src="/App_Themes/mai/img/calendario/adelante_f2.gif" alt="siguiente"></a>';
    }
    else {
        t+='<a href="#" onclick="nextMonth('+y+','+m+'); return false;" title="siguiente"><img src="/App_Themes/mai/img/calendario/adelante_f1.gif" alt="Siguiente"></a>';
    }
    t+='</td></tr>';
    t+='<tr class="dayNames">';
    for(dn=0;dn<7;dn++){
        var cl = '';
        if ((dn%7==5) || (dn%7 == 6)) cl += ' weekend';
        t+='<td class="'+cl+'">'+days[dn]+'</td>';
    }
    t+='</tr><tr class="days">';
    for(i=1;i<=42;i++){
        var x = i - (firstMonthDay+6)%7;
        if (x > daysInMonth[m-1] || x <1) x = '&nbsp;';
        var cl = '';
        var href = 0;
        if ((i%7==0) || (i%7 == 6)) cl += ' weekend';
        if (x>0){
            var xDay = new Date(y, m-1, x);
            if ((xDay.getFullYear() == y) && (xDay.getMonth()+1 == m)
                && (xDay.getDate() == d))
                { cl += ' selected' ; href=1}
            if ((xDay.getFullYear() == td.getFullYear())
                && (xDay.getMonth() == td.getMonth())
                && (xDay.getDate() == td.getDate()))
                { cl += ' today'; href=1;}
            else {
                if (xDay > td){ cl += ' future'; href=1; }
                else {
                    if (xDay < td) { cl += ' past'}
                }
            }
        };
        t+='<td class="'+cl+'">';
        if (href){
            t+='<a href="#" onclick="pickDate('+y+','+m+','+x+',\''+dt+'\'); return false;">'+x+'</a>';
        } else {
            t+=x;
        }
        t+='</td>';
        if(((i)%7==0)&&(i<36)) {
            t+='</tr><tr class="days">';
        }
    }
    t+='</tr><tr><td colspan="7"><a href="#" onclick="closeCal();return false;">cerrar calendario</a></td></tr></table>';
    calendar.cal.innerHTML= t;
}

function prevMonth(y,m) {
    if (new Date(y,m-1,1) < td) return;
    if (m > 1) {m--} else {m = 12; y--};
    buildCal(y,m);
}

//does this finction need to check for max month/year?
function nextMonth(y,m) {
    if (m<12){m++;} else {m=1;y++;}
    buildCal(y,m);
}

function goYearMonth(ym){
	var ymlist = ym.split("-");
    buildCal(ymlist[0],ymlist[1]);
}

function pickDate(y,m,d){
    var dt = calendar.caldt;
    if (dt == "checkin"){
        calendar.c2.value = y + "-" + m;
        calendar.c1.value = d;
	    checkDateOrder(calendar.c1.id, calendar.c2.id, calendar.c3.id, calendar.c4.id);
	}
	else{
        calendar.c4.value = y + "-" + m;
        calendar.c3.value = d;
	    //updateDaySelect(calendar.c1.id, calendar.c2.id, calendar.c3.id, calendar.c4.id)
	}
    closeCal();
}

function updateDaySelect(ci_month_year,ci_day,co_month_year,co_day) {
	// 1-2 testing
	if(!days3) return;
	
	// IE5/Mac not supported
	if(gClientIsIE5 && gClientIsMac)
		return;
	
	var ci_my = document.getElementById(ci_month_year).value.split("-");
    var ci_d = document.getElementById(ci_day);
	var co_my = document.getElementById(co_month_year).value.split("-");
	var co_d = document.getElementById(co_day);
	
	var ci_sel = ci_d.selectedIndex;
	var co_sel = co_d.selectedIndex;

	var monthDays = [], opt;
	
	// Checkin month
	monthDays = buildDaysForMonth(ci_my[0], ci_my[1]);
	ci_d.innerHTML = '';
	for(var i = 0; i < monthDays.length; i++) {
		opt = document.createElement('option');
		opt.innerHTML = (monthDays[i] + ' ' + (i+1));
		opt.value = (i+1);
		ci_d.appendChild(opt);
	}
	ci_d.options[ci_sel].defaultSelected = ci_d.options[ci_sel].selected = true;

	// Checkout month
	monthDays = buildDaysForMonth(co_my[0], co_my[1]);
	co_d.innerHTML = '';
	for(var i = 0; i < monthDays.length; i++) {
		opt = document.createElement('option');
		opt.innerHTML = (monthDays[i] + ' ' + (i+1));
		opt.value = (i+1);
		co_d.appendChild(opt);
	}
	co_d.options[co_sel].defaultSelected = co_d.options[co_sel].selected = true;
}

function buildDaysForMonth( year, month ) {
	// Month index starts on 0(-11) in Date()-object
	var monthDate = new Date(year, month-1);
	var orgMonth = monthDate.getMonth();
	var dayArray = [], weekDay;
	while(monthDate.getMonth() == orgMonth) {
		// Week starts on Sunday in Date()-object
		weekDay = (monthDate.getDay() == 0) ? 6 : (monthDate.getDay()-1);
		dayArray.push(days3[weekDay]);
		monthDate.setDate(monthDate.getDate()+1);
	}
	return dayArray;
}

function checkDateOrder(ci_day, ci_month_year, co_day, co_month_year) {
	var f1 = document.getElementById(ci_month_year)
	var f2 = document.getElementById(ci_day)
	var f3 = document.getElementById(co_month_year)
	var f4 = document.getElementById(co_day)
			
	var my = f1.value.split("-");
    var ci = new Date (my[0], my[1]-1, f2.value, 12, 0, 0, 0);

    my = f3.value.split("-");
    var co = new Date (my[0], my[1]-1, f4.value, 12, 0, 0, 0);

    if (ci >= co){
	    co.setTime(ci.getTime() + 1000 * 60 * 60 * 24);
        f4.value =  co.getDate();
	    var com = co.getMonth()+1;
        f3.value = co.getFullYear() + "-" + com;
	}
}


