

var isNetscape = (navigator.appName == "Netscape");
var browserVersion = parseInt(navigator.appVersion);
var isNN6Comp = (isNetscape && (browserVersion >= 5));
var isOldNN = (isNetscape && (browserVersion < 5));
var isIEComp = ((navigator.appName == "Microsoft Internet Explorer")
        || isNN6Comp);
var isNN = (isNetscape && (document.layers));
var isValidBrowser = (isIEComp || isNN);
var ppcX = 4;
var ppcY = 4;
var isCVisible;
var calfrmName;
var howManyDigits;
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 m_names = new makeArray0('Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dec');
var days  = new makeArray0(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var dow   = new makeArray0('Do','Lu','Ma','Mi','Ju','Vi','Sa');
var img_calendar_src = 'IMAGES/calendario_seleccionar.gif';
var img_prev_src = '/tiendas_c/administracion/graficas/calendario_atras.gif';
var img_next_src = '/tiendas_c/administracion/graficas/calendario_adelante.gif';
var img_close_src = '/tiendas_c/administracion/graficas/calendario_cerrar.gif';
var str_img_prev = '<IMG SRC="/tiendas_c/administracion/graficas/calendario_atras.gif" NAME="prev" WIDTH="22" HEIGHT="22" BORDER="0">';
var str_img_next = '<IMG SRC="/tiendas_c/administracion/graficas/calendario_adelante.gif" NAME="next" WIDTH="22" HEIGHT="22" BORDER="0">';
var str_img_close = '<IMG SRC="/tiendas_c/administracion/graficas/calendario_cerrar.gif" NAME="close" WIDTH="15" HEIGHT="14" BORDER="0">';
var day_cell_bg = '#E6E6E6';
var cell_border = '#B6B196';
var header_bg = '#D3D3D3';
var header_text = '#000000';
var grey_date_style =
        'font-family:Verdana,Arial,sans-serif; font-size:8pt; color:#999999;';
var base_link_style = 'font-family:Verdana,Arial,sans-serif; font-size:8pt;'
        + 'text-decoration:none; color:#000000;';
var important_link_style =
        'font-family:Verdana,Arial,sans-serif; font-size:8pt;'
        + ' text-decoration:none; color:#FF0000;';
var header_style = 'font-family:Verdana,Arial,sans-serif; font-size:8pt;'
        + ' font-weight:bold; color:' + header_text;
var select_style = ' color: #000000;'
        + ' font-family: Verdana,  Arial, sans-serif;'
        + ' font-size: 8pt;'
        + ' font-weight: normal;'
        + ' background-color: #E8E8D8;';
var minYearList = todayDate.getFullYear() - 80;
var maxYearList = todayDate.getFullYear() + 10;
var isCVisible = false;

function calSwapImg(whatID) {
    if (document.images && !isCVisible) {
        document.images[whatID].src = img_calendar_src;
    }
    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(frmName,dteBox,btnImg,posX,posY,hmd,hideDrops,
                        MnDt, MnMo, MnYr, MxDt, MxMo, MxYr,runFuncs)
{
    hideDropDowns = hideDrops;
    howManyDigits = hmd;
    FuncsToRun = runFuncs;
    calfrmName = frmName;
    if (isCVisible) {
        hideCalendar();
    }
    else {
        if (document.images['close'] != null )
            document.images['close'].src = img_close_src;
        if (document.images['prev'] != null )
            document.images['prev'].src = img_prev_src;
        if (document.images['next'] != null )
            document.images['next'].src = img_next_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 ( isIEComp ) {
            ppcX = getOffsetLeft(document.images[btnImg]) + posX;
            ppcY = getOffsetTop(document.images[btnImg])
                        + document.images[btnImg].height + posY;
        }
        else if (isNN){
            ppcX = document.images[btnImg].x + posX;
            ppcY = document.images[btnImg].y + document.images[btnImg].height
                                                + posY;
        }
        domlay('popupcalendar',1,ppcX,ppcY,Calendar(todayDate.getMonth(),
                                                todayDate.getFullYear()));
//domlay('popupcalendar',1,ppcX,ppcY,Calendar(curDate.getMonth(),curDate.getFullYear()));
        isCVisible = 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 != "f_Calendar")
                    document.forms[i].elements[j].style.visibility=showHow;
            }
        }
    }
}

function hideCalendar(){
    domlay('popupcalendar',0,ppcX,ppcY);
    calSwapImg(curImg);
    isCVisible = false;
    if (hideDropDowns) {
        toggleDropDowns('visible');
    }
}

function calClick() {
        window.focus();
}

function domlay(id,trigger,lax,lay,content) {
    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";
    } 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";
    }
    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";
        }
    }
    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";
        }
    }
    if (content){
        if (document.layers) {
            sprite=document.layers[''+id+''].document;
                sprite.open();
            sprite.writeln(content);
            document.close();
        } else if (document.all) {
                document.all[''+id+''].innerHTML = content;
        } else if (document.getElementById) {
            rng = document.createRange();
            el = document.getElementById(''+id+'');
            rng.setStartBefore(el);
            htmlFrag = rng.createContextualFragment(content)
            while(el.hasChildNodes()) el.removeChild(el.lastChild);
            el.appendChild(htmlFrag);
        }
    }
}

function Calendar(whatMonth,whatYear) {
    var datecolwidth;
    var startMonth;
    var startYear;
    startMonth=whatMonth;
    startYear=whatYear;
    curDate.setMonth(whatMonth);
    curDate.setFullYear(whatYear);
    curDate.setDate(todayDate.getDate());
    var mainCForm = '<form name="f_Calendar">';
    var mainCTable = '<table border="3"'
        + ' bgcolor="#E6E6E6"'
        + ' class="cal-Table" cellspacing="0" cellpadding="0">';
    var output;
    if (isNN6Comp) {
        output = mainCForm + mainCTable;
    } else {
        output = mainCTable + mainCForm;
    }

    output += '<tr><td width="185"' + 'bgcolor="' + header_bg
        + '"><table width=\"100%\"'
        + ' cellspacing="1" cellpadding="1" border="0"><tr valign="middle">'
        + '<td width="15%" align="right">';
    output += isOldNN ? '&nbsp;'
        : '<a href="#" onClick="javascript:scrollMonth(-1); return false;">'
                + str_img_prev + '</a>';
    output += '</td><td width="15%" style=" ' + header_style
        + ' ">'        + '<SELECT style="' + select_style
        + '" name="cboMonth" onChange="changeMonth();">';
    for (month=0; month<12; month++) {
        if (month == whatMonth) {
            output += '<OPTION VALUE="' + month + '" SELECTED>'
                        + m_names[month] + '</OPTION>';
        } else {
            output += '<OPTION VALUE="' + month + '">'
                        + m_names[month] + '</OPTION>';
        }
    }
    output += '</SELECT></td><td width="15%"  style=" ' + header_style
        + ' ">'        + '<SELECT style="' + select_style
        + '" name="cboYear" onChange="changeYear();">';
    for (year=minYearList; year<maxYearList; year++) {
        if (year == whatYear) {
            output += '<OPTION VALUE="' + year
                + '" SELECTED>' + year + '</OPTION>';
        } else {
             output += '<OPTION VALUE="' + year
                + '">'          + year + '</OPTION>';
        }
    }
    output += '</SELECT></td><td align="left" width="15%">'
    output += isOldNN ? '&nbsp;'
        : '<a href="#" onClick="javascript:scrollMonth(1); return false;">'
                + str_img_next + '</a>';
    output += '</td><td align="right" valign="top">'
        + '<a href="#" onClick="javascript:hideCalendar(); return false;">'
        + str_img_close + '</a></td></tr></table></td></tr>'
        + '<tr><td width="185" align="center" bgcolor="' + cell_border + '">';
    firstDay = new Date(whatYear,whatMonth,1);
    startDay = firstDay.getDay();
    if (((whatYear % 4 == 0) && (whatYear % 100 != 0)) || (whatYear % 400 == 0)) {
         days[1] = 29;
    } else {
         days[1] = 28;
    }
    output += '<table width="100%" cellspacing="1" cellpadding="2" border="0"><tr>';
    for (i=0; i<7; i++) {
        if (i == 0 || i == 6) {
            datecolwidth = "15%";
        } else {
            datecolwidth = "14%";
        }
        output += '<td width="' + datecolwidth + '" bgcolor="' + header_bg
                + '" align="center" valign="middle"><span style="'
                + header_style +'">' + dow[i] +'</span></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]-startDay+i+1),true,lastMonth,lastYear);
    }
    for (i = 1; i <= days[whatMonth]; i++, column++) {
        output += getDayLink(i,false,whatMonth,whatYear);
        if (column == 6) {
            output += '</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);
        }
        output += '</tr></table></td></tr>';
    }
    else {
        output = output.substr(0,output.length-4);
        output += '</table></td></tr>';
    }

    if (isNN6Comp) {
        output += '</table></form>';
    }
    else {
        output += '</form></table>';
    }
    curDate.setDate(1);
    curDate.setMonth(startMonth);
    curDate.setFullYear(startYear);
    return output;
}

function getDayLink(linkDay,isGreyDate,linkMonth,linkYear) {
    var templink;
    if (!(IsUsingMinMax)) {
        if (isGreyDate) {
            templink = '<td align="center" bgcolor="' + day_cell_bg
                + '" class="cal-DayCell">' + '<span style="'
                + grey_date_style +'" class="cal-GreyDate">'
                + linkDay+'</span></td>';
        }
        else {
            if (isDayToday(linkDay)) {
                templink='<td align="center" bgcolor="' + day_cell_bg
                    + '" class="cal-DayCell">'+'<a style="'+important_link_style
                    + '" class="cal-TodayLink" onmouseover="self.status=\' \';'
                    + ' return true;" href="#" onclick="javascript:changeDay('
                    + linkDay + '); return false;">' + linkDay + '</a>' +'</td>';
            }
            else {
                templink='<td align="center" bgcolor="' + day_cell_bg
                    + '" class="cal-DayCell">' + '<a style="' + base_link_style
                    + '" class="cal-DayLink" onmouseover="self.status=\' \';'
                    + ' return true;" href="#" onclick="javascript:changeDay('
                    + linkDay + '); return false;">' + linkDay + '</a>' +'</td>';
            }
        }
    }
    else {
        if (isDayValid(linkDay,linkMonth,linkYear)) {
            if (isGreyDate){
                    templink = '<td align="center" bgcolor="' + day_cell_bg
                    + '" class="cal-DayCell">' + '<span style="'
                    + grey_date_style +'" class="cal-GreyDate">'
                    +linkDay+'</span></td>';
            }
            else {
                if (isDayToday(linkDay)) {
                     templink='<td align="center" bgcolor="' + day_cell_bg
                        + '" class="cal-DayCell">'+'<a style="'+important_link_style
                        + '" class="cal-TodayLink" onmouseover="self.status=\' \';'
                        + ' return true;" href="#" onclick="javascript:changeDay('
                        + linkDay + '); return false;">' + linkDay + '</a>' +'</td>';
                }
                else {
                    templink='<td align="center" bgcolor="' + day_cell_bg
                        + '" class="cal-DayCell">' + '<a style="' + base_link_style
                        + '" class="cal-DayLink" onmouseover="self.status=\' \';'
                        + ' return true;" href="#" onclick="javascript:changeDay('
                        + linkDay + '); return false;">' + linkDay + '</a>' +'</td>';
                }
            }
        }
        else {
            templink = '<td align="center" bgcolor="' + day_cell_bg
                + '" class="cal-DayCell">' + '<span style="'
                + grey_date_style + '" class="cal-GreyDate">'
                + linkDay + '</span></td>';
        }
    }
    return templink;
}

function isDayToday(isDay) {
    return ((curDate.getFullYear() == todayDate.getFullYear())
                && (curDate.getMonth() == todayDate.getMonth())
                && (isDay == todayDate.getDate())) ;
}

function isDayValid(validDay, validMonth, validYear) {

    curDate.setDate(validDay);
    curDate.setMonth(validMonth);
    curDate.setFullYear(validYear);

    if ((curDate >= minDate) && (curDate <= maxDate)) {
        return true;
    }
    else {
        return false;
    }
}

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);
    var year;
    if(howManyDigits==4){
      year = curDate.getFullYear();
    }
    else{
      year = (""+curDate.getFullYear()).substring(2,4);

    }

   if (formato_fecha_aplicacion==1)  // dd/mm/aaaa
    {
     eval('document.' + calfrmName + '.' + curDateBox + '.value = "'
        + padout(curDate.getDate()) + "/"
        + padout(curDate.getMonth()+1)+ '/' + year + '"');
    }
   else
    {
      if (formato_fecha_aplicacion==2)  // mm/dd/aaaa
        {
          eval('document.' + calfrmName + '.' + curDateBox + '.value = "'
          + padout(curDate.getMonth()+1) + "/"
          + padout(curDate.getDate())+ '/' + year + '"');
        }
      else
       {
         if (formato_fecha_aplicacion==3)  // aaaa/mm/dd
           {
             eval('document.' + calfrmName + '.' + curDateBox + '.value = "'
             + year + "/"
             + padout(curDate.getMonth()+1)+ '/' + padout(curDate.getDate()) + '"');
           }
         else // ninguno por defecto dd/mm/aaaa
           {
             eval('document.' + calfrmName + '.' + curDateBox + '.value = "'
             + padout(curDate.getDate()) + "/"
             + padout(curDate.getMonth()+1)+ '/' + year + '"');


           }

       }


    }

    hideCalendar();
    if (FuncsToRun!=null)
        eval(FuncsToRun);
}

function scrollMonth(amount) {
    var monthCheck;
    var yearCheck;
    if (isIEComp) {
        monthCheck = document.forms["f_Calendar"].cboMonth.selectedIndex + amount;
    } else if (isNN) {
        monthCheck = document.popupcalendar.document.forms["f_Calendar"].cboMonth.selectedIndex
                        + amount;
    }
    if (monthCheck < 0) {
        yearCheck = curDate.getFullYear() - 1;
        if ( yearCheck < minYearList ) {
            yearCheck = minYearList;
            monthCheck = 0;
        }
        else {
            monthCheck = 11;
        }
        curDate.setFullYear(yearCheck);
    }
    else if (monthCheck >11) {
        yearCheck = curDate.getFullYear() + 1;
        if ( yearCheck > maxYearList-1 ) {
            yearCheck = maxYearList-1;
            monthCheck = 11;
        }
        else {
            monthCheck = 0;
        }
        curDate.setFullYear(yearCheck);
    }

    if (isIEComp) {
        curDate.setMonth(document.forms["f_Calendar"].cboMonth.options[monthCheck].value);
    }
    else if (isNN) {
        curDate.setMonth (document.popupcalendar.document.forms["f_Calendar"].cboMonth
                                .options[monthCheck].value);
    }
    domlay('popupcalendar',1,ppcX,ppcY,
                Calendar(curDate.getMonth(),curDate.getFullYear()));
}

function changeMonth() {
    if (isIEComp) {
        curDate.setMonth (document.forms["f_Calendar"].cboMonth
                .options[document.forms["f_Calendar"].cboMonth.selectedIndex].value);
        domlay('popupcalendar',1,ppcX,ppcY,
                Calendar(curDate.getMonth(),curDate.getFullYear()));
    }
    else if (isNN) {
        curDate.setMonth(document.popupcalendar.document.forms["f_Calendar"].cboMonth
                .options[document.popupcalendar.document.forms["f_Calendar"].cboMonth.selectedIndex]
                .value);
        domlay('popupcalendar',1,ppcX,ppcY,Calendar(curDate.getMonth(),curDate.getFullYear()));
    }
}

function changeYear() {
    if (isIEComp) {
        curDate.setFullYear(document.forms["f_Calendar"].cboYear
                .options[document.forms["f_Calendar"].cboYear.selectedIndex].value);
        domlay('popupcalendar',1,ppcX,ppcY,
                Calendar(curDate.getMonth(),curDate.getFullYear()));
    }
    else if (isNN) {
        curDate.setFullYear(document.popupcalendar.document.forms["f_Calendar"].cboYear
                .options[document.popupcalendar.document.forms["f_Calendar"].cboYear.selectedIndex]
                .value);
        domlay('popupcalendar',1,ppcX,ppcY,
                Calendar(curDate.getMonth(),curDate.getFullYear()));
    }
}

function makeArray0() {
    for (i = 0; i<makeArray0.arguments.length; i++)
        this[i] = makeArray0.arguments[i];
}
