var ppcIE=((navigator.appName == "Microsoft Internet Explorer") || ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion)==5)));
var ppcNN6=((navigator.appName == "Netscape") && (parseInt(navigator.appVersion)==5));
//var ppcIE=(navigator.appName == "Microsoft Internet Explorer");
var ppcNN=((navigator.appName == "Netscape")&&(document.layers));
var ppcX = 4;
var ppcY = 4;
var IsCalendarVisible;
var calfrmName;
var maxYearList;
var minYearList;
var todayDate = new Date; 
var curDate = new Date; 
var curImg;
var curDateBox;
var minDate = new Date;
var maxDate = new Date;
var hideDropDowns;
var IsUsingMinMax;
var FuncsToRun;
var img_del;
var img_close;


var diasFestivos 	= new makeArray0('1/01','6/01','24/06','15/08','11/09','1/11','6/12','8/12','25/12','26/11')
var diaFiestaSemanal 	=-1 //lunes 0,martes 1,...etc
var diasFiesta	 	= new makeArray0('24/12')

var names     			= new makeArray0('01','02','03','04','05','06','07','08','09','10','11','12');
var names_sp     	= new makeArray0('Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre');
var names_cat     	= new makeArray0('Gener','Febrer','Març','Abril','Maig','Juny','Juliol','Agost','Setembre','Octubre','Novembre','Desembre');
var names_eng 		= new makeArray0('January','February','March','April','May','June','July','August','September','October','November','December');
var names_fr     		= new makeArray0('Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre');
var names_ger     	= new makeArray0('Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
var names_rus    	= new makeArray0('January','February','March','April','May','June','July','August','September','October','November','December');

var days     			 = new makeArray0(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

var dow       			= new makeArray0('D','L','M','X','J','V','S','D');
var dow_sp       		= new makeArray0('Do','Lu','Ma','Mi','Ju','Vi','Sa','Do');
var dow_cat      		= new makeArray0('Dm','Dll','Dt','Dc','Dj','Dv','Ds','Dm');
var dow_eng  			= new makeArray0('Su','Mo','Tu','We','Th','Fr','Sa','Su');
var dow_fr  			= new makeArray0('Di','Lu','Ma','Me','Je','Ve','Sa','Di');
var dow_ger  			= new makeArray0('So','Mo','Di','Mi','Do','Fr','Sa','So');
var dow_rus  			= new makeArray0('Su','Mo','Tu','We','Th','Fr','Sa','Su');




img_del=new Image();
img_del.src="/visualweb/calendario/btn_del_small.gif";
img_close=new Image();
img_close.src="/visualweb/calendario/btn_close_small.gif";


minYearList=todayDate.getFullYear()-1;
maxYearList=todayDate.getFullYear()+1;
IsCalendarVisible=false;



img_Date_UP=new Image();
img_Date_UP.src="/visualweb/calendario/btn_date2_over.gif";



img_Date_OVER=new Image();
img_Date_OVER.src="/visualweb/calendario/btn_date_over.gif";



img_Date_DOWN=new Image();
img_Date_DOWN.src="/visualweb/calendario/btn_date_down.gif";




function calSwapImg(whatID, NewImg,override) {
    if (document.images) {
     if (!( IsCalendarVisible && override )) {
        document.images[whatID].src = eval(NewImg + ".src");
     }
    }
    window.status=' ';
    return true;
}



function getOffsetLeft (el) {
    var ol = el.offsetLeft;
    while ((el = el.offsetParent) != null)
        ol += el.offsetLeft;
    return ol;
}



function getOffsetTop (el) {
    var ot = el.offsetTop;
    while((el = el.offsetParent) != null)
        ot += el.offsetTop;
    return ot;
}



function showCalendar(divName,frmName, dteBox,btnImg, hideDrops, MnDt, MnMo, MnYr, MxDt, MxMo, MxYr,runFuncs) {

    hideDropDowns = hideDrops;
    FuncsToRun = runFuncs;
    calfrmName = frmName;
    caldivName = divName;
    if (IsCalendarVisible) {
        hideCalendar();
    }
    else {
        if (document.images['calbtn1']!=null ) document.images['calbtn1'].src=img_del.src;
        if (document.images['calbtn2']!=null ) document.images['calbtn2'].src=img_close.src;
        
        if (hideDropDowns) {toggleDropDowns('hidden');}
        if ((MnDt!=null) && (MnMo!=null) && (MnYr!=null) && (MxDt!=null) && (MxMo!=null) && (MxYr!=null)) {
            IsUsingMinMax = true;
            minDate.setDate(MnDt);
            minDate.setMonth(MnMo-1);
            minDate.setFullYear(MnYr);
            maxDate.setDate(MxDt);
            maxDate.setMonth(MxMo-1);
            maxDate.setFullYear(MxYr);
        }
        else {
            IsUsingMinMax = false;
        }
        
        curImg = btnImg;
        curDateBox = dteBox;
        if ( ppcIE ) {
            ppcX = getOffsetLeft(document.images[btnImg]);
            ppcY = getOffsetTop(document.images[btnImg]) ;
        }
        else if (ppcNN){
            ppcX = document.images[btnImg].x; 
            ppcY = document.images[btnImg].y + document.images[btnImg].height;
        }


var myFecha=eval('document.' + calfrmName + '.' + curDateBox + '.value');        



if (myFecha=='') {
var dia=todayDate.getDate();
var mes=todayDate.getMonth();
var any=todayDate.getFullYear();
} 
else  {
ArrFecha=myFecha.split('/');
var dia=ArrFecha[0]*1;
var mes=(ArrFecha[1]*1)-1;
var any=ArrFecha[2];
}



domlay(caldivName,1,ppcX,ppcY,Calendar(mes,any));       
IsCalendarVisible = true;
        
    }
}



function toggleDropDowns(showHow){
    var i; var j;
    for (i=0;i<document.forms.length;i++) {
        for (j=0;j<document.forms[i].elements.length;j++) {
            if (document.forms[i].elements[j].tagName == "SELECT") {

if (document.forms[i].name != "Cal")

    document.forms[i].elements[j].style.visibility=showHow;
            }
        }
    }
}



function hideCalendar(){
    domlay(caldivName,0,ppcX,ppcY);
    calSwapImg(curImg, 'img_Date_UP');    
    IsCalendarVisible = false;
    if (hideDropDowns) {toggleDropDowns('visible');}
}



function calClick() {
        window.focus();
}



function domlay(id,trigger,lax,lay,content) {


    /*
     * Cross browser Layer visibility / Placement Routine
     * Done by Chris Heilmann (mail@ichwill.net)
     * Feel free to use with these lines included!
     * Created with help from Scott Andrews.
     * The marked part of the content change routine is taken
     * from a script by Reyn posted in the DHTML
     * Forum at Website Attraction and changed to work with
     * any layername. Cheers to that!
     * Welcome DOM-1, about time you got included... :)
     */
    // Layer visible
    if (trigger=="1"){
        if (document.layers) document.layers[''+id+''].visibility = "show"
        else if (document.all) document.all[''+id+''].style.visibility = "visible"
        else if (document.getElementById) document.getElementById(''+id+'').style.visibility = "visible"

        }
    // Layer hidden
    else if (trigger=="0"){
        if (document.layers) document.layers[''+id+''].visibility = "hide"
        else if (document.all) document.all[''+id+''].style.visibility = "hidden"
        else if (document.getElementById) document.getElementById(''+id+'').style.visibility = "hidden"             
        }
    // Set horizontal position  
    if (lax){
        if (document.layers){document.layers[''+id+''].left = lax}
        else if (document.all){document.all[''+id+''].style.left=lax}
        else if (document.getElementById){document.getElementById(''+id+'').style.left=lax+"px"}
        }
    // Set vertical position
    if (lay){
        if (document.layers){document.layers[''+id+''].top = lay}
        else if (document.all){document.all[''+id+''].style.top=lay}
        else if (document.getElementById){document.getElementById(''+id+'').style.top=lay+"px"}
        }
    // change content



    if (content){
    if (document.layers){
        sprite=document.layers[''+id+''].document;
        // add father layers if needed! document.layers[''+father+'']...
        sprite.open();
        sprite.write(content);
        sprite.close();
        }

else if (document.all) document.all[''+id+''].innerHTML = content;  
else if (document.getElementById){
//Thanx Reyn!
rng = document.createRange();
el = document.getElementById(''+id+'');
rng.setStartBefore(el);
htmlFrag = rng.createContextualFragment(content)

while(el.hasChildNodes()) el.removeChild(el.lastChild);
el.appendChild(htmlFrag);
// end of Reyn ;)

        }
    }
}



function Calendar(whatMonth,whatYear) {






    var output = '';
    var datecolwidth;
    var startMonth;
    var startYear;
    startMonth=whatMonth;
    startYear=whatYear;

    curDate.setMonth(whatMonth);
    curDate.setFullYear(whatYear);
    curDate.setDate(todayDate.getDate()+1);


output += '<table width="190" border="0" class="cal-Table" bgcolor=#fafafa cellspacing="0" cellpadding="1"><form name="Cal"><tr>';

output += '<td  colspan=3 align=right><a href="javascript:hideCalendar();"><img name="calbtn2" src="/visualweb/images/close.gif" border="0"></a></td></tr><tr>'
output += '<td  align="left"><img style="cursor:pointer;" onclick="javascript:scrollMonth('+ (whatMonth-1) +');" name="calbtn1" src="/visualweb/images/prev.gif" border="0"></td><td align="center" ><b><div id=mesiany>';        
output +=  eval('names_'+idioma)[startMonth] + '&nbsp;';
output += startYear;
output += '</div></b></td><td  align="right"><img style="cursor:pointer;" onclick="javascript:scrollMonth('+ (whatMonth+1) +');" name="calbtn1" src="/visualweb/images/next.gif" border="0" ></a></td></tr><tr><td º COLSPAN=3 width="100%" align="center">';


    firstDay = new Date(whatYear,whatMonth,0);
    startDay = firstDay.getDay();




    if (((whatYear % 4 == 0) && (whatYear % 100 != 0)) || (whatYear % 400 == 0))
         days[1] = 29;
    else
         days[1] = 28;



    output += '<table width="190" cellspacing="0" cellpadding="10" border="0"><tr>';



    for (i=1; i<8; i++) {
        if (i==1 || i==8) {
            datecolwidth="15%"
        }
        else
        {
            datecolwidth="14%"
        }
        output += '<td class="cal-HeadCell" width="' + datecolwidth + '" align="center" valign="middle">'+ eval('dow_'+idioma)[i] +'<\/td>';
    }
    
    output += '<\/tr><tr>';


    var column = 0;

    var lastMonth = whatMonth - 1;
    
    var lastYear = whatYear;
    if (lastMonth == -1) { lastMonth = 11; lastYear=lastYear-1;}

    for (i=0; i<startDay; i++, column++) {

        output += getDayLink(((days[lastMonth]+1)-startDay+i),true,lastMonth,lastYear,column);


if (column == 6) {
output += '<\/tr><tr><td colspan=7 height=1 bgcolor=blue><\/td><\/tr><tr>';
column = -1;
}



    }


    for (i=1; i<=days[whatMonth]; i++, column++) {

        output += getDayLink(i,false,whatMonth,whatYear,column);


       if (column == 6) {


            output += '<\/tr><tr><td colspan=7 height=1 bgcolor=#e5e5e5><\/td><\/tr><tr>';


            column = -1;


        }
    }
    
    var nextMonth = whatMonth+1;
    var nextYear = whatYear;
    if (nextMonth==12) { nextMonth=0; nextYear=nextYear+1;}
    
    if (column > 0) {
        for (i=1; column<7; i++, column++) {
            output +=  getDayLink(i,true,nextMonth,nextYear,column);
        }
        output += '<\/tr><\/table><\/td><\/tr>';
    }
    else {
        output = output.substr(0,output.length-4); // remove the <tr> from the end if there's no last row
        output += '<\/table><\/td><\/tr>';
    }
    
    if (ppcNN6) {
        output += '<\/table><\/form>';
    }
    else {
        output += '<\/form><\/table>';
    }



    curDate.setDate(1);


   curDate.setMonth(startMonth);

    curDate.setFullYear(startYear);
    
    return output;
    

}


function isFiesta(linkDay,linkMonth) {
var coincidencias=0
for (m = 0; m<10; m++) {
var FechaFiesta	=diasFestivos[m];
ArrFechas=FechaFiesta.split('/');
var diaFiesta	=(ArrFechas[0]*1);
var mesFiesta	=((ArrFechas[1]*1)-1);
//alert((linkDay==diaFiesta) && (linkMonth==mesFiesta))
	if ((linkDay==diaFiesta) && (linkMonth==mesFiesta)) { 
		coincidencias += 1
	}
}
if (coincidencias>0) {
return true; 
} else {
return false;
}
}


function isDiaFiesta(linkDay,linkMonth) {
var coincidencias=0
for (m = 0; m<1; m++) {
var DiaFiestaARR	=diasFiesta[m];
ArrFechas=DiaFiestaARR.split('/');
var diaFiesta	=(ArrFechas[0]*1);
var mesFiesta	=((ArrFechas[1]*1)-1);

	if ((linkDay==diaFiesta) && (linkMonth==mesFiesta)) { 
		coincidencias += 1
	}
}
if (coincidencias>0) {
return true; 
} else {
return false;
}
}


function getDayLink(linkDay,isGreyDate,linkMonth,linkYear,column) {
    var templink;
    
if (!(IsUsingMinMax)) {
    
 if (isGreyDate) {
 templink='<td align="center" class="cal-GreyDate">' + linkDay + '<\/td>';
} else {
 
		if ((column==6) || isFiesta(linkDay,linkMonth)) {
			templink='<td align="center" class="cal-DayCellFiesta" onclick="javascript:changeDay(' + linkDay + ');">' + linkDay +'<\/td>';
		} else  if ((isDayToday(linkDay)) && (column==diaFiestaSemanal)) {
			templink='<td align="center" class="cal-ToDayCell2">' + linkDay +'<\/td>';
		} else if ((column==diaFiestaSemanal) || (isDiaFiesta(linkDay,linkMonth))) {
			templink='<td align="center" class="cal-GreyDate">' + linkDay + '<\/td>';
		} else  if (isDayToday(linkDay)) {
			templink='<td align="center" class="cal-ToDayCell" onclick="javascript:changeDay(' + linkDay + ');">' + linkDay +'<\/td>';
		} else {
			templink='<td align="center" class="cal-DayCell" onclick="javascript:changeDay(' + linkDay + ');">' + linkDay +'<\/td>';
		}

	}
}
 return templink;
    
}



function isDayToday(isDay) {

var myFecha=eval('document.' + calfrmName + '.' + curDateBox + '.value');

if (myFecha=='') {
var dia=todayDate.getDate();
var mes=todayDate.getMonth();
var any=todayDate.getFullYear();
} 
else  {


ArrFecha=myFecha.split('/');
var dia=ArrFecha[0]*1;
var mes=(ArrFecha[1]*1)-1;
var any=ArrFecha[2];



}


    if ((curDate.getFullYear() == any) && (curDate.getMonth() == mes) && (isDay == dia)) {
        return true;
    }
    else {
        return false;
    }
}



function isDayValid(validDay, validMonth, validYear){
    
    curDate.setDate(validDay);
    curDate.setMonth(validMonth);
    curDate.setFullYear(validYear);
    
    if ((curDate>=minDate) && (curDate<=maxDate)) {
        return true;
    }
    else {
        return true;
    }
}



function padout(number) { return (number < 10) ? '0' + number : number; }



function clearDay() {
    eval('document.' + calfrmName + '.' + curDateBox + '.value = \'\'');
    hideCalendar();
    if (FuncsToRun!=null)
        eval(FuncsToRun); 
}



function changeDay(whatDay) {
    curDate.setDate(whatDay);
    eval('document.' + calfrmName + '.' + curDateBox + '.value = "'+ padout(curDate.getDate()) + '/' + names[curDate.getMonth()] + '/' + curDate.getFullYear() + '"');
    hideCalendar();
    if (FuncsToRun!=null)
        eval(FuncsToRun); 
}



function scrollMonth(amount) {
    var monthCheck;
    var yearCheck;
    
        monthCheck = amount
        
        
    if (monthCheck < 0) {
        yearCheck = curDate.getFullYear() - 1;
        monthCheck=11    
        curDate.setFullYear(yearCheck);
    }
    else if (monthCheck >11) {
        yearCheck = curDate.getFullYear() + 1;
        monthCheck=0
        curDate.setFullYear(yearCheck);
    }
  
    curDate.setMonth(monthCheck);
    

domlay(caldivName,1,ppcX,ppcY,Calendar(curDate.getMonth(),curDate.getFullYear()));
}



function changeMonth() {



    if (ppcIE) {        
        curDate.setMonth(document.forms["Cal"].cboMonth.options[document.forms["Cal"].cboMonth.selectedIndex].value);
        domlay(caldivName,1,ppcX,ppcY,Calendar(curDate.getMonth(),curDate.getFullYear()));
    }
    else if (ppcNN) {



        curDate.setMonth(document.popupcalendar.document.forms["Cal"].cboMonth.options[document.popupcalendar.document.forms["Cal"].cboMonth.selectedIndex].value);
        domlay(caldivName,1,ppcX,ppcY,Calendar(curDate.getMonth(),curDate.getFullYear()));
    }
}



function changeYear() {
    if (ppcIE) {
        curDate.setFullYear(document.forms["Cal"].cboYear.options[document.forms["Cal"].cboYear.selectedIndex].value);
        domlay(caldivName,1,ppcX,ppcY,Calendar(curDate.getMonth(),curDate.getFullYear()));
    }
    else if (ppcNN) {



        curDate.setFullYear(document.popupcalendar.document.forms["Cal"].cboYear.options[document.popupcalendar.document.forms["Cal"].cboYear.selectedIndex].value);
        domlay(caldivName,1,ppcX,ppcY,Calendar(curDate.getMonth(),curDate.getFullYear()));
    }



}



function makeArray0() {

    for (i = 0; i<makeArray0.arguments.length; i++)
        this[i] = makeArray0.arguments[i];
	}


