﻿
function $get(itemId) {
    return document.getElementById(itemId);
}

function getElementPosition(theElement) {

    var posX = 0;
    var posY = 0;

    while (theElement != null) {
        posX += theElement.offsetLeft;
        posY += theElement.offsetTop;
        theElement = theElement.offsetParent;
    }

    return { x: posX, y: posY };
}

//function decodeUrl(url) {
//    url = url.replace(/&amp;/gi, '&');
//    url = url.replace(/\+/gi, ' ');
//    url = url.replace(/%C2%BA/gi, 'º');
//    
//    return url;
//}

function ajustarColumnas() {
    if ($get('columna-B') == null) return;

    var heightBody = $get('columna-B').clientHeight;
    if ($get('columna-A').clientHeight > heightBody) {
        $get('columna-A').style.height = heightBody + 'px';
        if ($get('columna-C') != null)
            $get('columna-C').style.height = heightBody + 'px';
    }    
}


function selectedTabChanged2(id) {
    var unselected = '';
    $get('seccion-noticias').className = unselected;
    $get('seccion-agenda').className = unselected;
    $get(id).className = 'selected';
}

function dropDownMenuShow(source, menuId)
{
    var menu = $get(menuId);

    var pos = getElementPosition(source);
    menu.style.left = (pos.x - 122) + 'px';

    if (menu.style.display == '' || menu.style.display == 'none') {
        menu.style.display = 'block';
        menu.focus();
        
    }
    else
        menu.style.display = 'none';
}

function dropDownMenuHidden(menu)
{
    menu.style.display = 'none';
}

$(document).ready(function() {

    document.body.style.fontsize = '10px'; // Por compatibilidad

    // Menu agenda y noticias
    if ($get('seccion-noticias') != null) {
        $get('seccion-noticias').getElementsByTagName('a')[0].onclick = function() { selectedTabChanged2('seccion-noticias'); return false; }
        $get('seccion-agenda').getElementsByTagName('a')[0].onclick = function() { selectedTabChanged2('seccion-agenda'); return false; }
    }

    // Cuadro de texto buscar
    SearchBox.configure('ctl00_tbConsulta', 'buscar', 'ctl00_btBuscar');

    // Formulario
    SearchBox.configure('ctl00_mainBody_marcadores1_tbUsuario', 'usuario', null);
    SearchBox.configure('ctl00_mainBody_marcadores1_tbClave', 'clave de acceso', null);

    // Menu desplegable RSS
    if ($get('ctl00_hyperLinkRss') != null) {
        $get('ctl00_hyperLinkRss').onclick = function() { dropDownMenuShow(this, 'rss-menu'); return false; }
    }
    if ($get('rss-menu') != null) {
        $get('rss-menu').onmouseover = function() { clearTimeout(this.timeout); this.timeout = setTimeout(function() { dropDownMenuHidden($get('rss-menu')); }, 2000); }
        //$get('rss-menu').onblur = function() { DropDownMenuHidden(this); }
    }

    //    // Menu online
    //    function updateInfoState(newPosition) {
    //        $get('menuonline-info1').innerHTML = -1 * newPosition + 1 + " a " + (-1 * newPosition + ScrollMenu.VisibleItems['menuonline']);
    //    }
    //    $get('ctl00_menuOnline1_btShow1').onclick = function() { updateInfoState(ScrollMenu.scroll('menuonline', 5)); return false; }
    //    $get('ctl00_menuOnline1_btShow2').onclick = function() { updateInfoState(ScrollMenu.scroll('menuonline', -5)); return false; }

    //    // Barra cifras
    //    $get('ctl00_barraCifras1_btShow1').onclick = function() { ScrollMenu.scrollDinamic('barracifras', 1); return false; }
    //    $get('ctl00_barraCifras1_btShow2').onclick = function() { ScrollMenu.scrollDinamic('barracifras', -1); return false; }
    //    var timeoutBarracifras = null;
    //    function scrollAuto() {
    //        ScrollMenu.scrollDinamic('barracifras', -1);
    //        timeoutBarracifras = setTimeout(scrollAuto, 4000);
    //    }
    //    timeoutBarracifras = setTimeout(scrollAuto, 4000);
    //    $("#barracifras").hover(function() { clearTimeout(timeoutBarracifras); }, function() { timeoutBarracifras = setTimeout(scrollAuto, 4000); ; });

    //    // Menu portales
    //    function updateBotonState(newPosition) {
    //        if (newPosition == 0)
    //            $get('ctl00_portales1_btShow1').style.visibility = 'hidden';
    //        else {
    //            $get('ctl00_portales1_btShow1').style.visibility = 'visible';
    //        }

    //        if (ScrollMenu.NumItems['portales'] - (-1 * newPosition + ScrollMenu.VisibleItems['portales']) == 0)
    //            $get('ctl00_portales1_btShow2').style.visibility = 'hidden';
    //        else
    //            $get('ctl00_portales1_btShow2').style.visibility = 'visible';
    //    }
    //    $get('ctl00_portales1_btShow1').style.visibility = 'hidden';
    //    $get('ctl00_portales1_btShow2').style.visibility = 'hidden'; // modificable
    //    $get('ctl00_portales1_btShow1').onclick = function() { updateBotonState(ScrollMenu.scroll('portales', 4)); return false; }
    //    $get('ctl00_portales1_btShow2').onclick = function() { updateBotonState(ScrollMenu.scroll('portales', -4)); return false; }
    //    $get('ctl00_portales1_btContraer').onclick = function() { $get('portales').style.display = 'none'; $get('portales-boton').style.display = 'block'; return false; }
    //    $get('ctl00_portales1_btExpandir').onclick = function() { $get('portales').style.display = 'block'; $get('portales-boton').style.display = 'none'; return false; }

    //    BotonPaneles.configure($get('ctl00_portales1_btExpandir'));
    //    if (!BotonPaneles.Iex)
    //        BotonPaneles.showEfectOpacity(2);



    ajustarColumnas();
});

var BotonPaneles = new Object;

BotonPaneles.Iex = new Object();
BotonPaneles.Filter = new Object();
BotonPaneles.ActOpacidad = new Object();
BotonPaneles.MaxOpacidad = new Object();
BotonPaneles.MinOpacidad = new Object();
BotonPaneles.Boton = new Object();

BotonPaneles.configure = function(item) {
    BotonPaneles.Boton = item;
    BotonPaneles.Iex = navigator.appName == 'Microsoft Internet Explorer' ? true : false;
    BotonPaneles.Filter = BotonPaneles.Iex ? 'filters.alpha.opacity' : 'style.opacity';
    BotonPaneles.ActOpacidad = BotonPaneles.Iex ? 100 : 1;
    BotonPaneles.MaxOpacidad = BotonPaneles.Iex ? 100 : 1;
    BotonPaneles.MinOpacidad = BotonPaneles.Iex ? 30 : 0.3;
}
BotonPaneles.showEfectOpacity = function(option) {

    if (option == 0) {
        if (BotonPaneles.ActOpacidad > BotonPaneles.MinOpacidad)
            BotonPaneles.ActOpacidad -= BotonPaneles.Iex ? 10 : 0.1;
        else
            option = 1;

    }

    if (option == 1) {

        if (BotonPaneles.ActOpacidad < BotonPaneles.MaxOpacidad)
            BotonPaneles.ActOpacidad += BotonPaneles.Iex ? 10 : 0.1;
        else
            option = 2;
    }

    if (option == 2) {
        setTimeout(function() { BotonPaneles.showEfectOpacity(0); }, 2000);
        return;
    }

    eval('BotonPaneles.Boton.' + BotonPaneles.Filter + ' = BotonPaneles.ActOpacidad;');
    setTimeout(function() { BotonPaneles.showEfectOpacity(option); }, 60);
}

/* SEARCH BOX CLASS */

var SearchBox = new Object;
SearchBox.WaterMarks = new Object();

SearchBox.configure = function(textBoxId, watermarkText, buttonId) {

    if ($get(textBoxId) != null) {
        $get(textBoxId).onfocus = function() { SearchBox.focus(textBoxId); }
        $get(textBoxId).onblur = function() { SearchBox.blur(textBoxId); }
        if (buttonId)
            $get(textBoxId).onkeypress = function(e) { return SearchBox.pressEnterToGo(buttonId, e); }

        SearchBox.setWatermarkText(textBoxId, watermarkText)
        SearchBox.blur(textBoxId);
    }
}

SearchBox.setWatermarkText = function(textBoxId, watermarkText) {

    SearchBox.WaterMarks[textBoxId] = watermarkText;
}

SearchBox.blur = function(textBoxId) {
    if (!textBoxId)
        textBoxId = 'q';
    var t = $get(textBoxId);
    var inputDefText = SearchBox.WaterMarks[textBoxId];

    if (t.value == '' || t.value == inputDefText) {
        t.style.color = '#aaa';
        t.value = inputDefText;
    }
}

SearchBox.focus = function(textBoxId) {
    if (!textBoxId)
        textBoxId = 'q';
    var t = $get(textBoxId);
    var inputDefText = SearchBox.WaterMarks[textBoxId];

    if (t.value == inputDefText)
        t.value = '';

    t.style.color = 'black';
}

SearchBox.value = function(textBoxId) {
    if (!textBoxId)
        textBoxId = 'q';
    var t = $get(textBoxId);
    return t.value;
}

SearchBox.pressEnterToGo = function(buttonId, event) {
    event = event || window.event;
    var keyCode = null;

    if (event.which)
        keyCode = event.which;
    else if (event.keyCode)
        keyCode = event.keyCode;

    if (keyCode == 13) {
        $get(buttonId).click();
        return false;
    }

    return true;
}

/* SCROLL MENU */

var ScrollMenu = new Object;
ScrollMenu.ScrollPosition = new Object();
ScrollMenu.NumItems = new Object();
ScrollMenu.VisibleItems = new Object();
ScrollMenu.WidthItem = new Object();

ScrollMenu.scroll = function(controlId, numScroll) {
    var ul = $get(controlId).getElementsByTagName('ul')[0];
    var numItems = ScrollMenu.NumItems[controlId];
    var numVisibleItems = ScrollMenu.VisibleItems[controlId];
    var widthItem = ScrollMenu.WidthItem[controlId];

    if (numItems == null || numVisibleItems == null || widthItem == null) {
        var div = ul.parentNode;
        var liItems = ul.getElementsByTagName('li');

        widthItem = liItems[0].clientWidth + 1;
        numItems = liItems.length
        numVisibleItems = Math.round(div.clientWidth / widthItem);

        ScrollMenu.NumItems[controlId] = numItems;
        ScrollMenu.VisibleItems[controlId] = numVisibleItems;
        ScrollMenu.WidthItem[controlId] = widthItem;
    }

    var currentPosition = ScrollMenu.ScrollPosition[controlId];
    if (currentPosition == null)
        ScrollMenu.ScrollPosition[controlId] = currentPosition = 0;

    var newPosition = currentPosition + numScroll;

    if (numItems + newPosition > numItems)
        newPosition = 0;

    if (numItems + newPosition < numVisibleItems)
        newPosition = -1 * numItems + numVisibleItems;

    if (currentPosition == newPosition) {
        if (newPosition == 0)
            newPosition = numScroll - numItems;
        else
            newPosition = 0;
    }
    ScrollMenu.scrollTransition(ul, (newPosition - currentPosition) * widthItem, 0);
    ScrollMenu.ScrollPosition[controlId] = newPosition;

    return newPosition;
}

ScrollMenu.MaxVisiblePosition = new Object();

ScrollMenu.scrollDinamic = function(controlId, numScroll) {
    var ul = $get(controlId).getElementsByTagName('ul')[0];
    var liItems = ul.getElementsByTagName('li');
    var numItems = ScrollMenu.NumItems[controlId];
    //var numVisibleItems = ScrollMenu.VisibleItems[controlId];
    var widthItem = ScrollMenu.WidthItem[controlId];
    var maxVisiblePosition = ScrollMenu.MaxVisiblePosition[controlId];
    
    if (numItems == null || widthItem == null || maxVisiblePosition == null) {
        var div = ul.parentNode;

        numItems = liItems.length;
        for (var i = 0; i < numItems; i++)
            widthItem += liItems[i].clientWidth + 1;

        //numVisibleItems = div.clientWidth;

        ScrollMenu.NumItems[controlId] = numItems;
        //ScrollMenu.VisibleItems[controlId] = numVisibleItems;
        ScrollMenu.WidthItem[controlId] = widthItem;

        var aux = 0;
        maxVisiblePosition = numItems - 2;
        while (maxVisiblePosition >= 0 && aux < div.clientWidth) {
            aux = 0;
            for (var i = maxVisiblePosition; i < numItems; i++)
                aux += liItems[i].clientWidth + 1;
            maxVisiblePosition--;
        }
        maxVisiblePosition += 2;
        ScrollMenu.MaxVisiblePosition[controlId] = maxVisiblePosition;
    }

    var currentPosition = ScrollMenu.ScrollPosition[controlId];
    if (currentPosition == null)
        ScrollMenu.ScrollPosition[controlId] = currentPosition = 0;

    var newPosition = currentPosition + numScroll;

    if (maxVisiblePosition + newPosition > maxVisiblePosition)
        newPosition = 0;
    if (newPosition < -maxVisiblePosition)
        newPosition = -maxVisiblePosition;

    if (currentPosition == newPosition) {
        if (newPosition == 0)
            newPosition = -maxVisiblePosition;
        else
            newPosition = 0;
    }


    var widthItems = 0;
    if (-currentPosition < -newPosition) {
        for (var i = -currentPosition; i < -newPosition; i++)
            widthItems += liItems[i].clientWidth + 1;
    }
    else {
        //alert(currentPosition + " " + newPosition);
        for (var i = -newPosition; i < -currentPosition; i++)
            widthItems -= liItems[i].clientWidth + 1;
    }


    ScrollMenu.scrollTransition(ul, -widthItems, 0);
    ScrollMenu.ScrollPosition[controlId] = newPosition;

    return newPosition;
}

ScrollMenu.scrollTransition = function(control, newPosition, speed) {
    $(control).animate({ "left": "+=" + newPosition + "px" }, "slow");
}

