<!--
/*
 * Objeto calendario
 *
 */


/*
 * Para tocar a donde va la seleccion, hay que tocar la funcion this.sliceSelected
 */

function EPETTagCalendar(_callerElement, _calendarDiv, ParameterObj) {
    /* The ref to the caller element is a must */
    if ( !_callerElement )
        return false;

    /* The element used to draw the calendar is a must */
    if ( !_calendarDiv )
        return false;

    if ( typeof(ParameterObj) != 'object' ) {
        ParameterObj = 0;
    }

    /* Properties */
    var callerElement = _callerElement;
    var calendarDiv   = _calendarDiv;
    var first         = new Array ( 4, 5, 1976 );   // day, month, year
    var DateContainer;
    var DateContainerDate;
    var Slice;
    var CalContainer;
    var DropDownContainer;


    var sectionTitle  = null;
    if ( ParameterObj && ParameterObj['title'] ) {
        sectionTitle = ParameterObj['title'];
    }

    // If we don't trust local date, we set it from server
    var Today;
    if ( ParameterObj && ParameterObj['tsnow'] ) {
        Today = new Date(ParameterObj['tsnow']);
    } else {
        Today = new Date();
    }
    var today         = new Array ( Today.getDate(), Today.getMonth() + 1, Today.getYear() );
    if ( today[2] < 1000 ) {
        today[2] += 1900;
    }

    var currentDate;
    if ( ParameterObj &&  ParameterObj['currentDate'] ) {
        currentDate = ParameterObj['currentDate'];
    } else {
        currentDate = today.slice(0);
    }
    DateContainerDate = currentDate.slice(0);
//    var initialDate = currentDate.slice(0);

    var weekDaysNames     = new Array ("L", "M", "X", "J", "V", "S", "D");
    var weekDaysNamesLong = new Array ("Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sábado", "Domingo");
    var monthNames        = new Array("","Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
    var numDaysMonth      = new Array("","31","28","31","30","31","30","31","31","30","31","30","31");

    /* Methods */

    function changeDay(day) {
        if ( day == 0 ) {
            return true;
        }

        currentDate[0] = day;
        DateContainerDate       = currentDate.slice(0); 
    
		if ( DateContainerDate[1] < 10 )
			DateContainerDate[1] = '0' + DateContainerDate[1];

		if ( DateContainerDate[0] < 10 )
			DateContainerDate[0] = '0' + DateContainerDate[0];

		document.location.href = '/tag/fecha/' + DateContainerDate[2] + DateContainerDate[1] + DateContainerDate[0];

        /* Redraw calendar */
        var _CalContainer    = createCalContainer(currentDate[1], currentDate[2], currentDate[0]);
        var parentObj       = CalContainer.parentNode;
        parentObj.removeChild(CalContainer);
        parentObj.appendChild(_CalContainer);
        CalContainer = _CalContainer;

    } // changeDay

    function changeDaySelect(day) {
        if ( day == 0 ) {
            return true;
        }

        currentDate[2] = DropDownContainer.childNodes[1].value; // year
        currentDate[1] = DropDownContainer.childNodes[2].value; // month

        changeDay(day);

    } // changeDaySelect

    function changeMonth(month) {
        // This implies changes on the Calendar and the DropDown Menu
        if ( month == 0 ) {
            DropDownContainer.SelectDay.innerHTML = '<option selected="selected">Elige d&iacute;a</option>';
            DropDownContainer.SelectDay.className = 'inactivo';
            DropDownContainer.SelectDay.disabled  = true;
            return true;
        }

        currentDate[1] = month;
        currentDate[2] = DropDownContainer.childNodes[1].value; // year

        DropDownContainer.SelectDay.innerHTML = '';
        DropDownContainer.SelectDay.className = '';
        DropDownContainer.SelectDay.disabled  = false;
        fillDaySelect(DropDownContainer.SelectDay);

        var _CalContainer    = createCalContainer(currentDate[1], currentDate[2]);
        var parentObj       = CalContainer.parentNode;
        parentObj.removeChild(CalContainer);
        parentObj.appendChild(_CalContainer);
        CalContainer = _CalContainer;

    } // changeMonth

    function changeYear(year) {
        DropDownContainer.SelectDay.innerHTML = '<option selected="selected">Elige d&iacute;a</option>';
        DropDownContainer.SelectDay.className = 'inactivo';
        DropDownContainer.SelectDay.disabled  = true;

        // This implies changes on the Calendar and the DropDown Menu
        if ( year == 0 ) {
            DropDownContainer.SelectMonth.innerHTML = '<option value="0" selected="selected">Elige mes</option>';
            DropDownContainer.SelectMonth.className = 'inactivo';
            DropDownContainer.SelectMonth.disabled  = true;

            return true;
        }

        currentDate[2]  = year;
        numDaysMonth[2] = 28 + leapYear(currentDate[2]);

        DropDownContainer.SelectMonth.innerHTML = '';
        DropDownContainer.SelectMonth.className = '';
        DropDownContainer.SelectMonth.disabled  = false;
        fillMonthSelect(DropDownContainer.SelectMonth);

        var _CalContainer   = createCalContainer(currentDate[1], currentDate[2]);
        var parentObj       = CalContainer.parentNode;
        parentObj.removeChild(CalContainer);
        parentObj.appendChild(_CalContainer);
        CalContainer = _CalContainer;

    } // changeYear

    function createCalContainer(month, year, day) {

        //alert("Creando mes para "+month+" "+year+"  "+day);
        // create Navigate div
        NavDivElement           = document.createElement('DIV');
        NavDivElement.className = 'navegacion estirar';

            // month and year
            DivElement              = document.createElement('DIV');
            DivElement.className    = 'anyoymes';
            TextElement             = document.createTextNode(monthNames[month] + " " + year);
            DivElement.appendChild(TextElement);


            var TodayVal = (today[1] < 10)? '0' : '';
            TodayVal     = parseInt(today[2]+TodayVal+today[1]);
            var FirstVal = (first[1] < 10)? '0' : '';
            FirstVal     = parseInt(first[2]+FirstVal+first[1]);
            var CurVal   = (month<10)? '0' : '';
            CurVal       = parseInt(year+CurVal+month);

            // previous
            var PrevElement;
            if ( FirstVal < CurVal ) {
                PrevElement           = document.createElement('A');
                PrevElement.href      = "javascript:void(0)";
                PrevElement.onclick   = function() { prev(); };
                PrevElement.title     = "Mes anterior";
                PrevElement.className = "boton activo";
                PrevElement.innerHTML = '&lt;';
            } else {
                PrevElement           = document.createElement('SPAN');
                PrevElement.className = 'boton inactivo';
                PrevElement.innerHTML = '&lt;';
            }

            // next
            var NextElement;
            if ( TodayVal > CurVal ) {
                NextElement           = document.createElement('A');
                NextElement.href      = "javascript:void(0)";
                NextElement.onclick   = function() { next(); };
                NextElement.title     = "Mes siguiente";
                NextElement.className = "boton activo";
                NextElement.innerHTML = '&gt;';
            } else {
                NextElement           = document.createElement('SPAN');
                NextElement.className = 'boton inactivo';
                NextElement.innerHTML = '&gt;';
            }

        NavDivElement.appendChild(DivElement);
        NavDivElement.appendChild(PrevElement);
        NavDivElement.appendChild(NextElement);

        // create <TABLE> to place the days and numbers
        var TableElement = document.createElement('TABLE');

            var TBody = document.createElement('TBODY');

                // Weekdays names
                var HeaderTrElement = document.createElement('TR');

                    for(i=0; i<weekDaysNames.length; i++) {
                        var ThElement   = document.createElement('TH');
                        ThElement.scope = 'col';

                            var abbrElement = document.createElement('ABBR');
                            abbrElement.innerHTML = weekDaysNames[i];
                            abbrElement.title     = weekDaysNamesLong[i];

                        ThElement.appendChild(abbrElement);

                        HeaderTrElement.appendChild(ThElement);
                    }

            TBody.appendChild(HeaderTrElement);


                // Calculate when day 1 start for this month
                var startDay = new Date(year,(month-1),1).getDay(); // 0 Sunday - 6 Saturday
                if ( startDay === 0 ) startDay = 7; // We start on Monday

                var TodayVal = today[2];
                if ( today[1] < 10 )
                    TodayVal += '0';
                TodayVal += ''+today[1];
                if ( today[0] < 10 )
                     TodayVal += '0';
                TodayVal += ''+today[0];
                TodayVal = parseInt(TodayVal);

                var FirstVal = first[2];
                if ( first[1] < 10 )
                    FirstVal += '0';
                FirstVal += ''+first[1];
                if ( first[0] < 10 )
                    FirstVal += '0';
                FirstVal += ''+first[0];
                FirstVal = parseInt(FirstVal);

                var DateContainerVal = DateContainerDate[2];
                if ( DateContainerDate[1] < 10 )
                    DateContainerVal += '0';
                DateContainerVal += ''+DateContainerDate[1];
                if ( DateContainerDate[0] < 10 )
                    DateContainerVal += '0';
                DateContainerVal += ''+DateContainerDate[0];
                DateContainerVal = parseInt(DateContainerVal);

                // Let's create TR elements until there ara no more days
                var numDay = 1;
                while(1) {
                    var TrElement = document.createElement('TR');

                        var filledCols = 0;

                        // If day 1 is not monday, fill up with empty until day 1
                        while ( startDay > 1 ) {
                            var TdElement       = document.createElement('TD');
                            TdElement.className = 'vacio';
                            //TdElement.innerHTML = document.createTextNode('\u00a0'); 
                            TdElement.innerHTML = "&nbsp;"; 

                            startDay--;
                            TrElement.appendChild(TdElement);
                            filledCols++;
                        }

                        for ( numDay ; numDay <= numDaysMonth[month] && filledCols < 7; numDay++ && filledCols++) {
                            //var CurVal = parseInt( currentDate[2] + ('0' + currentDate[1]).substr(-2,2) + ('0' + numDay).substr(-2,2) );
                            var CurVal = parseInt( currentDate[2] + ( (currentDate[1] > 9)? ''+currentDate[1] : '0'+currentDate[1] ) + ( (numDay > 9)? ''+numDay : '0'+numDay ));
                            var TdElement       = document.createElement('TD');
                            
                            if ( ( TodayVal < CurVal ) || ( FirstVal > CurVal ) ) {
                                TdElement.className = 'vacio';
                                TdElement.innerHTML = (numDay > 9)? numDay : '0' + numDay;

                            } else {
                                var selectedDay       = numDay+0;
                                LinkElement           = document.createElement('A');
                                LinkElement.href      = "javascript:void(0);";
                                LinkElement.title     = "Seleccionar";
                                LinkElement.innerHTML = (numDay > 9)? numDay : '0' + numDay;
                                LinkElement.day       = numDay;
                                LinkElement.onclick   = function () { changeDay(this.day); };

                                if ( CurVal == DateContainerVal )
                                    LinkElement.className = 'activo';

                                TdElement.appendChild(LinkElement);
                            }

                            TrElement.appendChild(TdElement);

                        }

                        // Fill with empty
                        for ( filledCols; filledCols < 7; filledCols++) {
                            var TdElement       = document.createElement('TD');
                            TdElement.className = 'vacio';
                            TdElement.innerHTML = "&nbsp;";

                            TrElement.appendChild(TdElement);
                        }

                    TBody.appendChild(TrElement);
                    
                    if ( numDay > numDaysMonth[month] )
                        break;
                }

            TableElement.appendChild(TBody);

        var CalContainerElement       = document.createElement('div');
        CalContainerElement.className = "contenedor_calendario";

        CalContainerElement.appendChild(NavDivElement);
        CalContainerElement.appendChild(TableElement);

        return CalContainerElement;

    } // createCalContainer

    function create() {

        // place Feb num of days according to year
        numDaysMonth[2] = 28 + leapYear(currentDate[2]);

        /*
         * We create the HTML structure from here
         */

        /*
         *   The Header
         */

/*
       <div class="encabezado estirar">
            <a href="javascript:void(0);" onClick="javascript:f_cambiar_styles(document.getElementById('capaHemeroteca'), 'none',document.getElementById('botonMastemas'), 'block');" class="nombre" title="Cerrar">Hemeroteca</a>
            <a href="javascript:void(0);" onClick="javascript:f_cambiar_styles(document.getElementById('capaHemeroteca'), 'none',document.getElementById('botonMastemas'), 'block');" class="cerrar" title="Cerrar"></a>
       </div> <!-- === .encabezado === -->

Ó

       <div class="encabezado estirar">
            <a href="javascript:void(0);" onClick="javascript:f_cambiar_styles(document.getElementById('capaHemeroteca'), 'none',document.getElementById('botonMastemas'), 'block');" class="nombre" title="Cerrar">Hemeroteca</a>
            <div class="seccion">Pol&iacute;tica</div> <!-- === .seccion === -->
            <a href="javascript:void(0);" onClick="javascript:f_cambiar_styles(document.getElementById('capaHemeroteca'), 'none',document.getElementById('botonMastemas'), 'block');" class="cerrar" title="Cerrar"></a>
       </div> <!-- === .encabezado === -->
*/


        var HeaderElement       = document.createElement('DIV');
        HeaderElement.className = "encabezado estirar";

            var NameElement         = document.createElement('A');
            NameElement.className   = 'boton_cambiar_fecha';
            NameElement.href        = 'javascript:void(0);';
            NameElement.innerHTML   = 'Buscar otra fecha';
            NameElement.title       = 'Cerrar';
            NameElement.onclick     = function() { 
                                        calendarDiv.style.display = 'none';
                                      }

            if ( sectionTitle ) {
                var SectionElement       = document.createElement('DIV');
                SectionElement.innerHTML = sectionTitle
                SectionElement.className = "seccion";
            }

            var CloseElement         = document.createElement('a');
            CloseElement.className   = "cerrar";
            CloseElement.href        = "javascript:void(0);"
            CloseElement.title       = 'Cerrar';
            CloseElement.onclick     = function() { 
                                         calendarDiv.style.display = 'none';
                                       }

        HeaderElement.appendChild(NameElement);
        if ( sectionTitle )
            HeaderElement.appendChild(SectionElement);
        HeaderElement.appendChild(CloseElement);

        /*
         *   The Selection Container
         */

        var SelectionContainer       = document.createElement('DIV');
        SelectionContainer.className = "contenedor_eleccion estirar";

            // day selection
            var DaySelection       = document.createElement('DIV');
            DaySelection.className = "eleccion_dia estirar";

                // DropDown
                DropDownContainer  = createDropDownContainer();

                // Calendar
                CalContainer       = createCalContainer(currentDate[1], currentDate[2], currentDate[0]);

            DaySelection.appendChild(DropDownContainer);
            DaySelection.appendChild(CalContainer);

        SelectionContainer.appendChild(DaySelection);

        calendarDiv.appendChild(HeaderElement);
        calendarDiv.appendChild(SelectionContainer);
        
    } // create

    function createDropDownContainer() {

        var DropDownContainerElement            = document.createElement('div');
        DropDownContainerElement.className  = "contenedor_desplegables";
        DropDownContainerElement.CalObj     = this;

        // The text
        var ParagrapghElement                   = document.createElement('p');
        ParagrapghElement.innerHTML         = "Utiliza el calendario o los desplegables para seleccionar el d&iacute;a al que quieras acceder";
        DropDownContainerElement.appendChild(ParagrapghElement);

        // The year
        var SelectYearElement                   = document.createElement('select');
        SelectYearElement.onchange          = function () { changeYear(SelectYearElement.value) };
        fillYearSelect(SelectYearElement);
        DropDownContainerElement.SelectYear = SelectYearElement;
        DropDownContainerElement.appendChild(SelectYearElement);

        // The month
        var SelectMonthElement                    = document.createElement('select');
        SelectMonthElement.onchange           = function () { changeMonth(SelectMonthElement.value) };
        SelectMonthElement.innerHTML          = '<option value="0" selected="selected">Elige mes</option>';
        SelectMonthElement.className          = 'inactivo';
        SelectMonthElement.disabled           = true;
        DropDownContainerElement.SelectMonth  = SelectMonthElement;
        DropDownContainerElement.appendChild(SelectMonthElement);

        // The Day
        var SelectDayElement                      = document.createElement('select');
        SelectDayElement.onchange             = function () { changeDaySelect(SelectDayElement.value) };
        SelectDayElement.innerHTML            = '<option value="0" selected="selected">Elige d&iacute;a</option>';
        SelectDayElement.className            = 'inactivo';
        SelectDayElement.disabled             = true;
        DropDownContainerElement.SelectDay    = SelectDayElement;
        DropDownContainerElement.appendChild(SelectDayElement);

        return DropDownContainerElement;

    } // createDropDownContainer

    function fillDaySelect(obj) {

        OptionElement           = document.createElement('option');
        OptionElement.innerHTML = "Elige d&iacute;a";
        OptionElement.selected  = true;

        obj.appendChild(OptionElement);

        var TodayVal = parseInt( today[2] + ('0' + today[1]).substr(-2,2) + ('0'+today[0]).substr(-2,2) );

        var FirstVal = parseInt( first[2] + ('0' + first[1]).substr(-2,2) + ('0'+first[0]).substr(-2,2) );

        var day;
        for ( day = numDaysMonth[currentDate[1]]; day >= 1; day-- ) {
            var CurVal = parseInt( currentDate[2] + ('0' + currentDate[1]).substr(-2,2) + ('0' + day).substr(-2,2) );

            if ( TodayVal < CurVal ) continue;
            if ( FirstVal > CurVal ) continue;
            OptionElement           = document.createElement('option');
            OptionElement.value     = day;
            OptionElement.innerHTML = day;

            obj.appendChild(OptionElement);
        }

    } // fillDaySelect

    function fillMonthSelect(obj) {

        OptionElement           = document.createElement('option');
        OptionElement.innerHTML = "Elige mes";
        OptionElement.selected  = true;
        OptionElement.value     = 0;

        obj.appendChild(OptionElement);

        var TodayVal = parseInt( today[2] + ('0' + today[1]).substr(-2,2) );

        var FirstVal = parseInt( first[2] + ('0' + first[1]).substr(-2,2) );

        var month;
        for ( month = 12; month >= 1; month-- ) {
            var CurVal = (month < 10)? '0' : '';
            CurVal = parseInt(currentDate[2]+CurVal+month);

            if ( TodayVal < CurVal ) continue;
            if ( FirstVal > CurVal ) continue;
            OptionElement           = document.createElement('option');
            OptionElement.value     = month;
            OptionElement.innerHTML = monthNames[month];

            obj.appendChild(OptionElement);
        }

    } // fillMonthSelect

    function fillYearSelect(obj) {

        OptionElement           = document.createElement('option');
        OptionElement.innerHTML = "Elige a&ntilde;o";
        OptionElement.selected  = true;
        OptionElement.value     = 0;

        obj.appendChild(OptionElement);

        var year;
        for ( year = today[2]; year >= first[2]; year-- ) {
            OptionElement           = document.createElement('option');
            OptionElement.value     = year;
            OptionElement.innerHTML = year;

            obj.appendChild(OptionElement);
        }

    } // fillYearSelect

    function leapYear(year) {
        if ( ( year % 400 ) == 0 )
            return 1;
        if ( ( year % 100 ) == 0 )
            return 0;
        if ( ( year % 4 ) == 0 )
            return 1;
        return 0;
    } // leapYear

    function next() {

        if ( currentDate[1] == 12 ) {
            currentDate[1] = 1;
            currentDate[2]++;
            numDaysMonth[2] = 28 + leapYear(currentDate[2]);
        } else {
            currentDate[1]++;
        }

        var _CalContainer = createCalContainer(currentDate[1], currentDate[2]);
        var parentObj = CalContainer.parentNode;
        parentObj.removeChild(CalContainer);
        parentObj.appendChild(_CalContainer);
        CalContainer = _CalContainer;

    } // next

    function prev() {

        if ( currentDate[1] == 1 ) {
            currentDate[1] = 12;
            currentDate[2] -= 1;
            numDaysMonth[2] = 28 + leapYear(currentDate[2]);
        } else {
            currentDate[1] -= 1;
        }

        var _CalContainer = createCalContainer(currentDate[1], currentDate[2]);
        var parentObj = CalContainer.parentNode;
        parentObj.removeChild(CalContainer);
        parentObj.appendChild(_CalContainer);
        CalContainer = _CalContainer;

    } // prev


    /*
     *
     * Execute code 
     *
     */
    
    // Lets create the HTML for the calendarDiv
    create();
    callerElement.onclick = function() { calendarDiv.style.display = 'block'; };

} // EPETTagCalendar




-->

