/* $(...)
    Returns DOM node or array of nodes (if more then one argument passed).
    If argument is node object allready then do nothing.
    // Stolen from Prototype
*/
function $() {
    var elements = new Array();

    for (var i = 0; i < arguments.length; i++) {
        var element = arguments[i];
        if (typeof element == 'string')
            element = document.getElementById(element);

        if (arguments.length == 1)
            return element;

        elements.push(element);
    }

    return elements;
}

/* Visibility */

function show(id) { delClass( id, 'hidden' ) }
function hide(id) { addClass( id, 'hidden' ) }

function hideshow(id) { return toggleVisibility( id ) }
function toggleVisibility(id) {
    var e = $(id);

    if ( e.className.match( /\bhidden\b/ ) )
        show(e);
    else
        hide(e);

    return false;
}

function setVisibility(id, visibility) {
    if ( visibility ) show(id);
    else hide(id);
}

function switchVisibility(id1, id2) {
    // Show both and then hide the one we want
    show(id1);
    show(id2);
    hide(id2);
    return false;
}

/* Classes */

function addClass(id, value) {
    var e = $(id);
    if ( e.className.match( new RegExp('\b'+ value +'\b') ) )
        return;
    e.className += e.className? ' '+value : value;
}

function delClass(id, value) {
    var e = $(id);
    e.className = e.className.replace( new RegExp('\\s?\\b'+ value +'\\b', 'g'), '' );
}

/* Rollups */

function rollup(id) {
    var e   = $(id);
    var e2  = e.parentNode;
    
    if (e.className.match(/\bhidden\b/)) {
        set_rollup_state(e,e2,'shown');
        createCookie(id,1,365);
    }
    else {
        set_rollup_state(e,e2,'hidden');
        createCookie(id,0,365);
    }
    return false;
}

function set_rollup_state(e,e2,state) {
    if (e && e2) {
        if (state == 'shown') {
            show(e);
            delClass( e2, 'rolled-up' );
        }
        else if (state == 'hidden') {
            hide(e);
            addClass( e2, 'rolled-up' );
        }
    }
}


/* onload handlers */

var onLoadStack     = new Array();
var onLoadLastStack = new Array();
var onLoadExecuted  = 0;

function onLoadHook(commandStr) {
    if(typeof(commandStr) == "string") {
        onLoadStack[ onLoadStack.length ] = commandStr;
        return true;
    }
    return false;
}

// some things *really* need to be done after everything else
function onLoadLastHook(commandStr) {
    if(typeof(commandStr) == "string"){
        onLoadLastStack[onLoadLastStack.length] = commandStr;
        return true;
    }
    return false;
}

function doOnLoadHooks() {
    if(onLoadExecuted) return;

    var i;
    for ( i in onLoadStack ) { 
        eval( onLoadStack[i] );
    }
    for ( i in onLoadLastStack ) { 
        eval( onLoadLastStack[i] );
    }
    onLoadExecuted = 1;
}

window.onload = doOnLoadHooks;

/* calendar functions */

function openCalWindow(field) {
    var objWindow = window.open('/rt/Helpers/CalPopup.html?field='+field, 
                                'RT_Calendar', 
                                'height=235,width=285,scrollbars=1');
    objWindow.focus();
}

function createCalendarLink(input) {
    var e = $(input);
    if (e) {
        var link = document.createElement('a');
        link.setAttribute('href', '#');

        clickevent = function clickevent(e) { openCalWindow(input); return false; };
        if (! addEvent(link, "click", clickevent)) {
            return false;
        }
        
        var text = document.createTextNode('Choose a date');
        link.appendChild(text);

        var space = document.createTextNode(' ');
        
        e.parentNode.insertBefore(link, e.nextSibling);
        e.parentNode.insertBefore(space, e.nextSibling);

        return true;
    }
    return false;
}

/* other utils */

function focusElementById(id) {
    var e = $(id);
    if (e) e.focus();
}

function updateParentField(field, value) {
    if (window.opener) {
        window.opener.$(field).value = value;
        window.close();
    }
}

function addEvent(obj, sType, fn) {
    if (obj.addEventListener) {
        obj.addEventListener(sType, fn, false);
    } else if (obj.attachEvent) {
        var r = obj.attachEvent("on"+sType, fn);
    } else {
        return false;
    }
    return true;
}

function setCheckbox(form, name, val) {
    var myfield = form.getElementsByTagName('input');
    for ( var i = 0; i < myfield.length; i++ ) {
        if ( name && myfield[i].name != name ) continue;
        if ( myfield[i].type != 'checkbox' ) continue;

        myfield[i].checked = val;
    }
}

// Funciones desarrolladas por Corcaribe

function MostrarTipoCaso(Origen,Region){

    document.getElementById("divtipooperador").innerHTML='';
    document.getElementById("divoperador").innerHTML='';
    document.getElementById("divservicio").innerHTML='';

    if (Origen == 'Reclamo'){
        document.getElementById("dividdenuncia").style.display="none";
        document.getElementById("dividentificacion").style.display="";
        document.getElementById("divpreguntatitular").style.display="";
        ahah('http://sac.conatel.gob.ve/rt/NoAuth/Ticket/Elements/CF/tipoopreclamo','divtipooperador', 'cargando');
    }
    else{
        document.getElementById("dividdenuncia").style.display="";
        document.getElementById("dividentificacion").style.display="none";
        document.getElementById("divpreguntatitular").style.display="none";
        document.getElementById("divtitular").style.display="none";
        ahah('http://sac.conatel.gob.ve/rt/NoAuth/Ticket/Elements/CF/tipoopdenuncia?region='+Region,'divtipooperador', 'cargando');
    }

}

function MostrarIdentificacion(){

        document.getElementById("dividentificacion").style.display="";

}

function OcultarIdentificacion(){

        document.getElementById("dividentificacion").style.display="none";

}

function MostrarDatosTitular(){

    document.getElementById("divtitular").style.display="";

    ahah('http://sac.conatel.gob.ve/rt/NoAuth/Ticket/Elements/CF/datostitular','divtitular', 'cargando');

}

function OcultarDatosTitular(){

    document.getElementById("divtitular").innerHTML='';

}

function Ocultar(){
    document.getElementById("dividdenuncia").style.display="";
    document.getElementById("dividentificacion").style.display="none";
    document.getElementById("divpreguntatitular").style.display="none";
    document.getElementById("divtitular").style.display="none";
    var divs = new Array("divtipooperador", "divoperador", "divservicio");
    for (var i = 0; i < divs.length; i++){divX = document.getElementById(divs[i]); divX.innerHTML='';}
}

function OcultarGen(elemento){
    var Obj;
      
    Obj = document.getElementById(elemento); Obj.innerHTML='';}

function MostrarGen(elemento){
    var Obj;
   
    Obj = document.getElementById(elemento); Obj.style.display='';}


function MostrarFrecuencia(operadorValor){

    document.getElementById("divfrecuencia").innerHTML='';

    ahah('http://sac.conatel.gob.ve/rt/NoAuth/Ticket/Elements/CF/frecuencia?servicio='+operadorValor,'divfrecuencia'); 

}

function MostrarServicio(operadorValor, Llamada){

    document.getElementById("divservicio").innerHTML='';

    switch (Llamada){
    case "Radio":
        ahah('http://sac.conatel.gob.ve/rt/NoAuth/Ticket/Elements/CF/frecuencia?servicio='+operadorValor,'divservicio'); 
        break;
    case "DenunciaTelefonia":
        ahah('http://sac.conatel.gob.ve/rt/NoAuth/Ticket/Elements/CF/serviciodenunciatel?operadortel='+operadorValor,'divservicio');
        break;
    case "ReclamoTelefonia":
        ahah('http://sac.conatel.gob.ve/rt/NoAuth/Ticket/Elements/CF/servicioreclamotel?operadortel='+operadorValor,'divservicio');
        break;
    case "DenunciaDifusion":
        ahah('http://sac.conatel.gob.ve/rt/NoAuth/Ticket/Elements/CF/denunciaoperadorotro?operadortel='+operadorValor,'divservicio');
        break;
    case "ReclamoDifusion":
        ahah('http://sac.conatel.gob.ve/rt/NoAuth/Ticket/Elements/CF/otrainformacion?operadortel='+operadorValor,'divservicio');
        break;
    }
}

function MostrarOpcion(ElementoMostrado){

     document.getElementById("divoperador").innerHTML='';
     document.getElementById("divservicio").innerHTML='';

    switch (ElementoMostrado){
    case "Radio":
        ahah('http://sac.conatel.gob.ve/rt/NoAuth/Ticket/Elements/CF/operadordenunciaradio?tipooperador=1','divoperador', 'cargando');
        break;
    case "TelefoniaDenuncia":
        ahah('http://sac.conatel.gob.ve/rt/NoAuth/Ticket/Elements/CF/operadordenunciatel?tipooperador=2','divoperador', 'cargando');
        break;
    case "DifusionDenuncia":
        ahah('http://sac.conatel.gob.ve/rt/NoAuth/Ticket/Elements/CF/operadordenunciadif?tipooperador=4','divoperador', 'cargando');
        break;
    case "InternetDenuncia":
        ahah('http://sac.conatel.gob.ve/rt/NoAuth/Ticket/Elements/CF/operadordenunciadif?tipooperador=3','divoperador', 'cargando');
        break;
    case "TelefoniaOperador":
        ahah('http://sac.conatel.gob.ve/rt/NoAuth/Ticket/Elements/CF/operadorreclamotel?tipooperador=2','divoperador', 'cargando');
        break;
    case "DifusionOperador":
        ahah('http://sac.conatel.gob.ve/rt/NoAuth/Ticket/Elements/CF/operadorreclamodif?tipooperador=4','divoperador', 'cargando');
        break;
    case "InternetOperador":
        ahah('http://sac.conatel.gob.ve/rt/NoAuth/Ticket/Elements/CF/operadorreclamodif?tipooperador=3','divoperador', 'cargando');
        break;
    }
}

function MostrarOtro(emisora){

    document.getElementById("divotraemisora").style.display="none";

    ahah('http://sac.conatel.gob.ve/rt/NoAuth/Ticket/Elements/CF/otraemisora?emisoravalue='+emisora,'divotraemisora'); 

}

function ServiciosEmisora(emisora){

    if (emisora == '--OTRO--'){

       document.getElementById("divotraemisora").style.display="";
 
    } else {

       document.getElementById("divotraemisora").style.display="none";

    };

    document.getElementById("divservicios").innerHTML='';
    
    ahah('http://sac.conatel.gob.ve/rt/NoAuth/Ticket/Elements/CF/servicioemisora?emisoravalue='+emisora,'divservicios');

}
