var SLIDE_DFLT = "slide_def.jpg";
var BG_DFLT = "bg1a.jpg";
var LAT_PRESENCIA = 1;
var LAT_BLUE_NEWS = 2;
var LAT_NAVIGATION = 3;

var _$ = function (id) {
    return document.getElementById(id);
};

var addEvnt = (function () {
    if (document.addEventListener) {
        return function (element, event, handler) {
            element.addEventListener(event, handler, false);
        };
    }
    else {
        return function (element, event, handler) {
            element.attachEvent('on' + event, handler);
        };
    }
}());

var _lang = getLang();
var _img_shared = "../img/";
var _img_lang = "img/";
var _url_lang = "";

addEvnt(top['window'], 'load', function () {
    top['init']();
});

function setImgShared(img_shared) {
    _img_shared = img_shared;
}

function setImgLang(img_lang) {
    _img_lang = img_lang;
}

function setUrlLang(url_lang) {
    _url_lang = url_lang;
}

function getKeys(obj) {
    var keys = [];
    for (var key in obj) {
        if (obj.hasOwnProperty(key)) keys.push(key);
    }
    return keys;
}

function getUrlParams(win) {
    var params = {};
    win = win || window;
    var pos = win.location.href.indexOf('?');
    if (pos != -1) {
        var aHashParam = win.location.href.substring(pos + 1).split('&');
        for (var i = 0, j = aHashParam.length; i < j; i++) {
            var aHashItem = aHashParam[i].replace(/ /g, '').split('=');
            if (aHashItem.length == 2) params[aHashItem[0]] = aHashItem[1];
        }
    }
    return params;
}

function getLangIdFromDomain() {
    var langId = null;
    var href = self.location.href;
    if (href.indexOf("/es/") != -1) langId = "es";
    else if (href.indexOf("/en/") != -1) langId = "en";
    else if (href.indexOf("/pt/") != -1) langId = "pt";
    return langId;
}

function getLangIdFromParam() {
    var langId = null;
    var params = getUrlParams(top.window);
    if (params['lang']) langId = params['lang'].toLowerCase();
    return langId;
}

function getLangId() {
    return getLangIdFromDomain() || getLangIdFromParam();
}

function getLang() {
    var lang;
    var langId = getLangId();
    if (langId == "es") lang = new LangSpanish();
    else if (langId == "en") lang = new LangEnglish();
    else if (langId == "pt") lang = new LangPortuguese();
    return lang;
}

function loadTemplate(templateId, url) {
    var node = _$(templateId);
    if (node != null) node.parentNode.removeChild(node);
    var objHead = document.getElementsByTagName('head')[0];
    var objIframe = document.createElement('iframe');
    objIframe.style.visibility = "hidden";
    objIframe.style.width = "0";
    objIframe.style.height = "0";
    if (templateId) objIframe.id = templateId;
    if (url) objIframe.src = url;
    objHead.appendChild(objIframe);
}

function insertTemplate(d) {

    var c = top['getTemplateConfig']();
    var seccion = c['seccion'];
    var path = c['path'];

    var div = document.createElement('div');
    document.body.appendChild(div);

    var html = "";
    html += getObjHtml(d, 'tt_hd_bg_ft');
    html += getObjHtml(d, 'tt_slide');
    html += getObjHtml(d, 'tt_shade');

    div.innerHTML = html;
    _$('div_content').parentNode.removeChild(_$('div_content'));

    var bgImage = getBackground(seccion, path);
    if (bgImage) {
        top.document.body.style.background = "url('" + _img_shared + bgImage + "') no-repeat fixed center center #477cc2";
    }
}

function getObjHtml(doc, id) {
    var target = doc.getElementById(id);
    var wrap = doc.createElement('div');
    wrap.appendChild(target.cloneNode(true));
    return wrap.innerHTML;
}

function getHtmlActualidad(aActualidad) {

    var html = "";
    var img_dot_separator = _img_shared + "dot_bg2.gif";
    var read_more = _lang.read_more;
    var news_title = _lang.news_title;

    html += "<div class='div_actualidad'>";
    html += "<div style='font-family:arial,helvetica sans-serif;font-size:22px;color:#5a5a5a'>" + news_title + "</div>";

    for (var i = 0; i < aActualidad.length; i++) {

        var url = aActualidad[i]['u'];
        var img_name = aActualidad[i]['i'];
        var img_thumb_name = aActualidad[i]['h'];
        var titulo = aActualidad[i]['t'];
        var preview = aActualidad[i]['p'];

        if (i == 0) {

            html += "<div style='color: #3366aa;font-size:11px;padding:15px 0 10px 0;'>";
            html += "<a href='noticias/" + url + "' class='lightview'>" + titulo + "</a>";
            html += "</div>";

            html += "<a href='" + img_name + "' class='lightview'>";
            html += "<img style='width:228px;border:solid 1px #ccddea' src='" + img_thumb_name + "' alt='' border='0'/>";
            html += "</a>";

            html += "<div style='font-size:11px;padding-top:12px; text-align: justify;'>";
            html += preview;
            html += "</div>";

            html += "<div style='font-size:11px;padding:15px 0 5px 0; text-align: right;'>";
            html += "<a href='noticias/" + url + "' class='lightview'>" + read_more + "...</a>";
            html += "</div>";

            html += "<div style=\"width:100%;height:1px;margin:5px 0 5px 0;background:url(" +
                    img_dot_separator + ") repeat-x\"></div>";

        } else {

            html += "<div style='font-size:11px;padding-bottom:5px;padding-top:5px;'>";
            html += "<a href='noticias/" + url + "' class='lightview'>";
            html += titulo;
            html += "</a>";
            html += "</div>";

            html += "<div style=\"width:100%;height:1px;margin:5px 0 5px 0;background:url(" +
                    img_dot_separator + ") repeat-x\"></div>";
        }
    }

    return html;
}

function getHtmlLateral(aLateral, seccion, path) {

    var html = "";

    if (aLateral) {
        for (var i = 0; i < aLateral.length; i++) {
            if (aLateral[i] == LAT_NAVIGATION) html += getHtmlLatNav(seccion, path);
            if (aLateral[i] == LAT_BLUE_NEWS) html += getHtmlLatBlueNews(getBlueNews(seccion, path));
            if (aLateral[i] == LAT_PRESENCIA) html += getHtmlLatPresencia();
        }
    }
    return html;
}

function getHtmlLatPresencia() {
    var html = "";
    html += "<div style='margin-top:15px;'>";
    html += "<a href='" + _img_lang + "presencia_en_el_mundo.gif' class='lightview'>";
    html += "<img src='" + _img_lang + "index_presencia.png' border='0' alt=''/>";
    html += "</a>";
    html += "</div>";
    return html;
}

function getHtmlLatBlueNews(aBlueNews) {

    var html = "";
    var img_dot_separator = _img_shared + "dot_bg_w.gif";
    html += "<div class='div_lat_blue'>";

    html += "<div style=\"width:100%;height:1px;margin-top:5px;margin-bottom:12px;background:url(" +
            img_dot_separator + ") repeat-x\"></div>";

    for (var i = 0; i < aBlueNews.length; i++) {
        var img_name = aBlueNews[i]['i'];
        var txt = aBlueNews[i]['t'];
        var url = aBlueNews[i]['u'];
        html += "<div><a href='" + _url_lang + url + "'><img border='0' src='" + _img_lang + img_name + "' alt='' border='0'></a></div>";
        html += "<div style='font-size:10px;padding:10px 3px 12px 3px;'>" + txt + "</div>";

        html += "<div style=\"width:100%;height:1px;margin-top:0;margin-bottom:12px;background:url(" +
                img_dot_separator + ") repeat-x\"></div>";
    }

    html += "</div>";

    return html;
}

function getHtmlTitle(seccion, path) {

    var html = "";
    var img_icono = getPropertyFromConfig(seccion, path, "i", "spacer.gif");
    var title = getPropertyFromConfig(seccion, path, "t", "");

    html += "<div style='height:60px;'>";
    html += "<div style='position:relative;margin:0 5px 0 10px;'>";
    html += "<img src='" + _img_shared + "spacer.gif' style='position:absolute;top:8px;left:0;width:100%;height:38px;" +
            "background-color:#eaeaea'>";

    if (img_icono) {
        html += "<img src='" + _img_shared + img_icono + "' style='position:absolute;top:3px;left:-8px;'>";
    }

    html += "<span style='position:absolute;top:15px;left:60px;font-size:22px;color:#5a5a5a;" +
            "font-family:arial,helvetica,sans-serif'>" + title + "</span>";

    html += "</div>";
    html += "</div>";

    return html;
}

function getHtmlUrl(seccion, path) {

    var objSeccion = _lang.objSeccion;
    var objNav = objSeccion[seccion]['o'];

    var html = "";

    //--- home
    var homeName = objSeccion['Inicio']['x'];
    html += "<a href=\"index.html\">" + homeName + "</a>";

    //--- seccion
    var class_seccion = path.length > 0 ? "" : "class='tt_url_selected'";
    html += " &gt; <a href=\"" + _url_lang + objSeccion[seccion]['u'] + "\"><span " + class_seccion + ">" +
            objSeccion[seccion]['t'] + "</span></a>";

    //--- path
    var level = 0;
    var obj = objNav;
    while (obj && level < path.length) {
        var key = path[level];
        var classHtml = path.length - 1 > level ? "" : "class='tt_url_selected'";
        html += " &gt; <a href=\"" + obj[key]['u'] + "\"><span " + classHtml + ">" + obj[key]['t'] + "</span></a>";
        obj = obj[key]['s'];
        level++;
    }

    return html;
}

function getSlide(seccion, path) {
    return _img_lang + getPropertyFromConfig(seccion, path, "d", SLIDE_DFLT);
}

function getBackground(seccion, path) {
    return getPropertyFromConfig(seccion, path, "b", BG_DFLT);
}

function getBlueNews(seccion, path) {
    return getPropertyFromConfig(seccion, path, "n", _lang.aBlueNews_default);
}

function getPropertyFromConfig(seccion, path, propertyName, propertyDflt) {

    var objSeccion = _lang.objSeccion;
    var objNav = objSeccion[seccion]['o'];

    var res = objSeccion[seccion][propertyName] || propertyDflt;
    var obj = objNav;
    var level = 0;

    while (obj && level < path.length) {
        var key = path[level];
        if (obj[key][propertyName]) res = obj[key][propertyName];
        obj = obj[key]['s'];
        level++;
    }

    return res;
}

function getHtmlNavItems(path, obj, level) {

    var html = "";

    for (var key in obj) {
        if (obj.hasOwnProperty(key)) {

            var menuItem = obj[key];
            var url = _url_lang + menuItem['u'];
            var title_short = menuItem['x'] || "";
            var title_long = menuItem['t'] || "";
            var className = level == 0 ? "tt_nav_level0" : "tt_nav_sublevel0";
            var style = "";

            style += "padding-left:" + (12 * level) + "px;";
            style += "background-position:" + (12 * (level - 1)) + "px 0;";

            html += "<div>";
            html += "<a href =\"" + url + "\" title=\"" + title_long + "\" class =\"" + className + "\" style=\"" + style + "\">";
            html += path[level] != key ? title_short : "<span class='tt_nav_selected'>" + title_short + "</span>";
            html += "</a>";
            html += "</div>";

            if (path[level] == key && menuItem['s']) {
                html += getHtmlNavItems(path, menuItem['s'], level + 1)
            }
        }
    }

    return html;
}

function getHtmlLatNav(seccion, path) {

    var objSeccion = _lang.objSeccion;
    var objNav = objSeccion[seccion]['o'];
    var html = "";

    if (objNav) {

        var titleSeccion = objSeccion[seccion]['t'];
        var urlSeccion = objSeccion[seccion]['u'];

        html += "<div id='tt_div_navigation' class='tt_nav'>";
        html += "<div><a class='tt_nav_title' href='" + _url_lang + urlSeccion + "'>" + titleSeccion + "</a></div>";
        html += "<div style=\"width:100%;height:1px;margin-top:5px;margin-bottom:10px;" +
                "background: url('" + _img_shared + "dot_bg.gif') repeat-x\"></div>";

        html += getHtmlNavItems(path, objNav, 0);

        html += "<div style=\"width:100%;height:1px;margin-top:10px;" +
                "background: url('../img/dot_bg.gif') repeat-x\"></div>";

        html += "</div>";
        html += "</div>";
    }

    return html;
}

function getHtmlMainMenu(seccion, container_width) {

    var objMainMenu = _lang.objMainMenu;
    var objSeccion = _lang.objSeccion;
    var i;
    var width_img_total = 0;
    var gap;
    var selected = -1;

    for (i = 0; i < objMainMenu.length; i++) {
        width_img_total += objMainMenu[i]['w'];
        if (seccion == objMainMenu[i]['s']) selected = i;
    }
    gap = Math.floor((container_width - width_img_total) / (objMainMenu.length - 1));

    var left = 0;
    var html = "";
    html += "<img src='" + _img_shared +
            "spacer.gif' style='position:absolute;top:17px;left:0;height:4px;width:100%;background:#e5e5e5'>";

    for (i = 0; i < objMainMenu.length; i++) {
        var mnuSeccion = objMainMenu[i]['s'];
        var name = objMainMenu[i]['n'];
        if (i == selected) name += "_s";
        var top = objMainMenu[i]['t'] || 0;

        html += "<a class=\"tt_mnu_header\" style=\"top:" + top +
                "px;left:" + left + "px;\" href=\"" + _url_lang + objSeccion[mnuSeccion]['u'] + "\">";
        html += "<img src =\"" + _img_lang + "mnu_" + name + ".gif\"";
        if (i != selected) {
            html += " onmouseover=\"tt_mnu_onmouseover(this," + i + ");\" onmouseout=\"tt_mnu_onmouseout(this," + i + ")\"";
        }
        html += ">";
        html += "</a>";
        left += objMainMenu[i]['w'] + gap;
    }

    return html;
}

function getHtmlBtnAreas(width, btnWidth, mnuWidth) {

    var objNavArea = _lang.objNavArea;
    var html = "";
    var i;
    var keysArea = getKeys(objNavArea);
    var left;
    var numBotones = 7;


    var gap = Math.floor((width - numBotones * btnWidth) / 7);

    left = 9;
    for (i = 0; i < numBotones; i++) {
        var img_name = "btn_area_" + (i + 1) + ".png";
        html += "<img id='btn" + i + "' src='" + _img_lang + "" + img_name + "' class='mnuBtn' style='left:" + left + "px;'>\n";
        left += (btnWidth + gap);
    }

    left = 58;
    for (i = 0; i < numBotones; i++) {
        html += "<img id='btnArrow" + i + "' src='" + _img_shared + "btn_arrow.png' class='mnuArrow' style='left:" + left + "px;'>\n";
        left += (btnWidth + gap);
    }

    left = 9;
    for (i = 0; i < numBotones; i++) {

        var objArea = objNavArea[keysArea[i]];
        var objSubarea = objNavArea[keysArea[i]]['s'];
        var colorArea = objArea['c'];

        html += "<div id='mnu_btn" + i + "bg' class='mnuOpts mnuOptsBg' style='left:" + left + "px;background-color:"
                + colorArea + ";'></div>\n";
        html += "<div id='mnu_btn" + i + "' class='mnuOpts' style='left:" + left + "px;vertical-align: bottom;'>\n";
        html += "<div class='mnuOptsTxt'>\n";

        for (var prop in objSubarea) {
            if (objSubarea.hasOwnProperty(prop)) {

                var href = objSubarea[prop]['u'];
                var title = objSubarea[prop]['t'];
                //html += "<a class='mnuLink' href='" + href + "'>" + title + "</a></br>\n";

                html += "<div class='divbullet'>";
                html += "<a class='mnuLink' href='" + href + "'>" + title + "</a>\n";
                html += "</div>";
            }
        }

        html += "</div>\n";
        html += "</div>\n";
        left += Math.floor((width - 9 - mnuWidth) / (numBotones - 1));
    }

    return html;
}

function tt_mnu_onmouseover(obj, id) {
    obj.src = _img_lang + "mnu_" + _lang.objMainMenu[id]['n'] + "_o.gif";
}

function tt_mnu_onmouseout(obj, id) {
    obj.src = _img_lang + "mnu_" + _lang.objMainMenu[id]['n'] + ".gif";
}




