// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults


function ht_load_img(src) {

    if(!window._base_src_for_images) {
        var scripts = document.getElementsByTagName("script");
        for(var i = 0; i < scripts.length; i++) {
            if(scripts[i].src && (offset = scripts[i].src.indexOf("javascripts/application.js")) > 0) {
                window._base_src_for_images = scripts[i].src.substr(0, offset) + "images/";
                break;
            }
        }
    }

    if(!window._base_src_for_images)
        return;

    var img = document.createElement("IMG");
    img.src = window._base_src_for_images + src;
    return img;
}

function add_close_icon(node) {
    var img = ht_load_img("remove.png");
    img.style.cssFloat = "right";
    img.style.cursor = "pointer";
    img.style.backgroundColor = "transparent";
    img.onclick = function() {
        new Effect.Fade(node, {durantion: 0.5});
        /* Element.remove(node); */
    };
    node.insertBefore(img, node.firstChild);
}

function maxlength(textarea, MaxLen){
  if(textarea.value.length > MaxLen)
    textarea.value = textarea.value.substring(0, MaxLen);
}

Event.observe(window, "load", function() {
    /* Buscamos los mensajes sobre separar con comas para avisar
       cuando se llegue a widget de etiquetas */
    setTimeout(function() {
        var div_notice_tag_separator = $("notice_tag_separator");
        if(div_notice_tag_separator) {
            var re = /^\w+_(etiquetas|tags)$/;
            var proc = function() { new Effect.Pulsate(this.node, {duration: 1}) }.bind({node: div_notice_tag_separator});

            $$("input[type=text]").each(function(field) {
                if(field.id.toString().match(re)) {
                    Event.observe(field, "focus", proc);
                }
            });
        }
    }, 1000);

    /* Buscamos los elementos con la clase can_be_closed. A estos
     * le aņadiremos una marca para que se puedan borrar
     */
    $$(".can_be_closed").each(function(node) { add_close_icon(node); });

    /* Ampliamos los cuadros de comentarios cuando se entra en ellos */
    $$("textarea.contenido_comentario").each(function(node) {
        Event.observe(node, "focus", function(event) {
            this.node.style.height = "14em";
        }.bindAsEventListener({node: node}));
    });

    /* Formularios para intentar enviarlos por Ajax */
    $$("form.try_with_ajax").each(function(form) {
        Event.observe(form, "submit", function(event) {
            new Ajax.Request(form.action, {parameters: Form.serialize(form, true)});
            event.stop();
        });
    });

    /* Igual, con enlaces */
    $$("a.try_with_ajax").each(function(link) {
        Event.observe(link, "click", function(event) {
            new Ajax.Request(link.href, {method: "GET"});
            event.stop();
        });
    });

    $$("a.open-in-new-window").each(function(link) {
        Event.observe(link, "click", function(event) {
            open(link.href, '_blank', 'scrollbars=yes,menubar=no,locationbar=no,resizable=yes,height=660,width=700');
            event.stop();
        });
    });

    /* Buscamos los campos que checkboxs y sus labels asociados */
    var labels = document.getElementsByTagName("label");
    $$("div.checbox_plain_list input[type=checkbox]").each(function(node) {
        for(var i = 0; i < labels.length; i++) {
            if(labels[i].htmlFor == node.id) {
                fn = function() {
                    Element[this.checkbox.checked ? "addClassName" : "removeClassName"](this.label, "box_checked");
                }.bind({checkbox: node, label: labels[i]});
                fn();
                Event.observe(node, "click", fn);
                break;
            }
        }
    });

});


/* Ajustar una imagen al ancho de su contenedor */
function resize_img_to_fit(img, container)  {
    var dims = Element.getDimensions(container);

    if(img.width > dims.width)
        img.width = dims.width;
}


function ajax_link_with_dom_node(url, node) {
    var prevHTML = node.innerHTML;
    node.innerHTML = "Buscando. Por favor, espere.";
    new Ajax.Request(url, {
        method: "get",
        onFailure: function(req) { node.innerHTML = prevHTML; }
    });
}


function showTab(tab_index) {
  // hide no-active tabs content
  $(spacetabs[tab_index]).show();
  for (var i = 0; i < spacetabs.length; i++) {
    if(i != tab_index) $(spacetabs[i]).hide();
  }

  // select the active tab
  var tabs = $('tabs').children;
  for (var i = 0; i < tabs.length; i++) {
    var tab = tabs[i];
    tab.className = (i != tab_index) ? '' : 'activetab';
  }
}

