//-----------------------------------------------------------------------------
// MINI AJAX AND RELATED FUNCTIONS
//-----------------------------------------------------------------------------

//function $(e){if(typeof e=='string')e=document.getElementById(e);return e};
function get_element(e){e=document.getElementById(e);return e;}
function collect(a,f){var n=[];for(var i=0;i<a.length;i++){var v=f(a[i]);if(v!=null)n.push(v)}return n};

ajax={};
ajax.x=function(){try{return new ActiveXObject('Msxml2.XMLHTTP')}catch(e){try{return new ActiveXObject('Microsoft.XMLHTTP')}catch(e){return new XMLHttpRequest()}}};
ajax.serialize=function(f){var g=function(n){return f.getElementsByTagName(n)};var nv=function(e){if(e.name)return encodeURIComponent(e.name)+'='+encodeURIComponent(e.value);else return ''};var i=collect(g('input'),function(i){if((i.type!='radio'&&i.type!='checkbox')||i.checked)return nv(i)});var s=collect(g('select'),nv);var t=collect(g('textarea'),nv);return i.concat(s).concat(t).join('&');};
ajax.send=function(u,f,m,a){var x=ajax.x();x.open(m,u,true);x.onreadystatechange=function(){if(x.readyState==4)f(x.responseText)};if(m=='POST')x.setRequestHeader('Content-type','text/html');x.send(a)};
ajax.get=function(url,func){ajax.send(url,func,'GET')};
ajax.gets=function(url){var x=ajax.x();x.open('GET',url,false);x.send(null);return x.responseText};
ajax.post=function(url,func,args){ajax.send(url,func,'POST',args)};
ajax.update=function(url,elm){var e=get_element(elm);var f=function(r){e.innerHTML=r};ajax.get(url,f)};
ajax.update_layer=function(url,e){var f=function(r){e.innerHTML=r};ajax.get(url,f)};
ajax.submit=function(url,elm,frm){var e=get_element(elm);var f=function(r){e.innerHTML=r};ajax.post(url,f,ajax.serialize(frm))};
ajax.submit_quini=function(url,elm,frm){var e=get_element(elm);var f=function(r){e.innerHTML=r};ajax.post(url,f,form2ArrayString(frm))};

//--------------------------------------------------------

/**
 * Funciones que leen un formulario y lo devuelve como cadena
 */

function formObj2String(obj)
{
  var output = "";
  if (obj.name) {
    output += obj.name + "=";
  }
  switch (obj.type) {
    case "select-one":
      output += document.getElementById(obj.id).value + "&";
      break;
    default:
      output += "";
  }
  return output;
}

// Convert a passed form reference to a string formatted like
// a JavaScript array of objects
function form2ArrayString(form) {
  var elem, lastName = "";
  var output = "";
  for (var i = 0; i < form.elements.length; i++) {
    elem = form.elements[i];
    if (elem.name && (elem.name != lastName)) {
      output += formObj2String(form.elements[i]);
      lastName = elem.name;
    }
  }
  output = output.substring(0, output.length-1);
  return output;
}

//--------------------------------------------------------

/**
* Funcion de escrutinio
* 
* @param    int    $jornada
* @param    obj    $obj        Form object
*/

function escrutar(jornada)
{
    // Formamos peticion leyendo el formulario
    // var cadena = form2ArrayString(document.encuentros);
    // var params = cadena + "jornada_id=" + jornada;
    // Enviamos la peticion de ajax
    ajax.update("webroot/escrutar.php?" + form2ArrayString(document.encuentros) + "&jornada=" + jornada, 'escrutinio_en_vivo');
}

//--------------------------------------------------------

/**
* Container updater function
*
* @param   string    id
* @param   string    url
*/

function load_div(id,url)
{
    ajax.update(url,id);
}

//--------------------------------------------------------

/**
* Containter updater function from the container itself, not from the name
*
* @param    node    Layer
* @param    string  url
*/

function load_div_into_layer(layer, url)
{
    ajax.update_layer(url,layer);
}

//--------------------------------------------------------

/**
* Confirms a deletion or something xD
*/

function confirm_something( message )
{
    var agree=confirm( message );
    if (agree)
        return true;
    else
        return false;
}

//-----------------------------------------------------------------------------
// LAYER FUNCTIONS
//-----------------------------------------------------------------------------

/**
* Returns desired layer
*
* @param    node    Layer
*/

function get_layer( Layer )
{
    var elem;
    if( document.getElementById ) // this is the way the standards work
        elem = document.getElementById( Layer );
    else if( document.all ) // this is the way old msie versions work
        elem = document.all[Layer];
    else if( document.layers ) // this is the way nn4 works
        elem = document.layers[Layer];
    
    return elem;
}

//--------------------------------------------------------

/**
* Checks if given layer is visible
*
* @param    string    Layer
*/
function is_visible( Layer )
{
    var elem = get_layer( Layer ); 
    vis = elem.style;
    
    // if the style.display value is blank we try to figure it out here
    if(vis.display==''&&elem.offsetWidth!=undefined&&elem.offsetHeight!=undefined)
        vis.display = (elem.offsetWidth!=0&&elem.offsetHeight!=0)?'block':'none';
    
    if(vis.display==''||vis.display=='block')
        return true;
    
    return false;
}


//--------------------------------------------------------

/**
* Hides a layer
*/

function hideLayer( Layer )
{
    lay = get_layer( Layer );
    vis = lay.style;
    vis.display = 'none';
}

//--------------------------------------------------------

/**
* Shows a layer
*/

function showLayer( Layer )
{
    lay = get_layer( Layer );
    vis = lay.style;
    vis.display = 'block';
}

//--------------------------------------------------------

/**
* Shows or hides a layer
*
* @param    string    Layer
*/

function toggleLayer( Layer )
{
    lay = get_layer( Layer );
    vis = lay.style;
    if(vis.display==''||vis.display=='block')
    {
        vis.display = 'none';
    } else {
        vis.display = 'block';
    }
}

//--------------------------------------------------------

/**
* Hides all brother layers and displays received one.
* Careful, a master layer must have been declared.
*
* @param    string    Layer
*/

function showOne( Layer )
{
    var lay = get_layer( Layer );
    var parent = lay.parentNode;
    var layers = parent.childNodes; 
    
    // Iterate all of them
    var it = 0;
    for(it = 0; it < layers.length; it++)
    {
        var item = layers[it];

        // Hide it if its an element
        if(item.nodeType == 1)
        {
            var style = item.style;
            style.display = 'none';
        }
    }

    // Show desired
    toggleLayer( Layer );

}

//--------------------------------------------------------

/**
 * Receives a layer via parameter and hides and/or shows the received layer
 * 
 * @param       Layer
 * @param       InnerLayer
 */
function toggleInner(Layer, InnerLayer)
{
    var layers = Layer.childNodes; 
    
    // Iterate all of them
    var it = 0;
    for(it = 0; it < layers.length; it++)
    {
        var item = layers[it];
        
        // Hide it if its an element
        if(item.id == InnerLayer)
        {
            var style = item.style;
            if(style.display == 'none')
            {
                style.display = 'block';

            } else {

                style.display = 'none';
            }
        }
    }
}

//--------------------------------------------------------

/**
 * Gets the parent node any levels up
 *
 * @param   node   Layer
 * @param   int    Levels
 */

function get_parent(Layer, Levels)
{
    // Get parent node X times
    for(cont=0; cont < Levels; cont++)
        Layer = Layer.parentNode;
    
    return Layer;
}

//--------------------------------------------------------

/**
* Removes a message from the delete link
*
* @param    node   Layer
* @param    int    Levels
*/

function toggle_parent(Layer, Levels)
{
    Layer = get_parent(Layer, Levels);
    style = Layer.style;
    
    // Toggle
    if(style.display == 'none')
    {
        style.display = 'block';

    } else {

        style.display = 'none';
    }
}

//--------------------------------------------------------

function dotb(title, url)
{
$(document).ready(function(){ tb_show(title, url, null); });
}

//--------------------------------------------------------

function goto(form) { var index=form.select.selectedIndex
if (form.select.options[index].value != "0") {
location=form.select.options[index].value;}}
