EXTRAS = {
    addEvent : function(obj, evType, fn, useCapture){
        if (obj.addEventListener) {
            obj.addEventListener(evType, fn, useCapture);
            return true;
        } else if (obj.attachEvent){
            var r = obj.attachEvent("on"+evType, fn);
            return r;
        } else {
            return false;
        }
    },
    getElementsByClass : function(className,node) {
        if(!node) node=document;
        var refTags = document.all ? node.all : node.getElementsByTagName("*");
        var retVal = new Array();

        for(var z=0;z<refTags.length;z++) {
            if(refTags[z].className.indexOf(className) >= 0) {
                retVal.push(refTags[z]);
            }
        }
        return retVal;
    }
}

if (!Number.roundFloat) {
  Number.prototype.roundFloat=function(n){
    return Math.round(this*Math.pow(10, n)) / Math.pow(10, n);
  }
}

creaNodo = function(idNodo,clase,nodoDestino) {
    var div = document.createElement("DIV");
    div.id = idNodo+(new Date().getTime());
    if(clase != null) {
        div.className = clase;
    }
    if(nodoDestino != null) {
        nodoDestino.appendChild(div);
    }
    return div;
}

getDateHourSimple = function(cdt) {
    return (cdt.getDate() < 10 ? "0"+cdt.getDate() : cdt.getDate())+"/"+((cdt.getMonth()+1) < 10 ? "0"+(cdt.getMonth()+1) : (cdt.getMonth()+1))+"/"+cdt.getFullYear()+" "+(cdt.getHours() < 10 ? "0"+cdt.getHours() : cdt.getHours())+":00";
}
getDayMonthHour = function(cdt) {
    return getDayOfWeek(cdt)+", "+(cdt.getDate() < 10 ? "0"+cdt.getDate() : cdt.getDate())+" de "+getNameOfMoth(cdt)+" "+(cdt.getHours() < 10 ? "0"+cdt.getHours() : cdt.getHours())+":00";
}


getDateSimple = function(cdt) {
    return (cdt.getDate() < 10 ? "0"+cdt.getDate() : cdt.getDate())+"/"+((cdt.getMonth()+1) < 10 ? "0"+(cdt.getMonth()+1) : (cdt.getMonth()+1))+"/"+cdt.getFullYear();
}

getDayOfWeek = function(cdt) {
    if(cdt != null) {
        if(cdt.getDay() == 0) {
            return "Domingo";
        } else if(cdt.getDay() == 1) {
            return "Lunes";
        } else if(cdt.getDay() == 2) {
            return "Martes";
        } else if(cdt.getDay() == 3) {
            return "Miércoles";
        } else if(cdt.getDay() == 4) {
            return "Jueves";
        } else if(cdt.getDay() == 5) {
            return "Viernes";
        } else if(cdt.getDay() == 6) {
            return "Sábado";
        }
    }
    return "Lunes";
}

getNameOfMoth = function(cdt) {
    if(cdt != null) {
        if(cdt.getMonth() == 0) {
            return "Enero";
        } else if(cdt.getMonth() == 1) {
            return "Febrero";
        } else if(cdt.getMonth() == 2) {
            return "Marzo";
        } else if(cdt.getMonth() == 3) {
            return "Abril";
        } else if(cdt.getMonth() == 4) {
            return "Mayo";
        } else if(cdt.getMonth() == 5) {
            return "Junio";
        } else if(cdt.getMonth() == 6) {
            return "Julio";
        } else if(cdt.getMonth() == 7) {
            return "Agosto";
        } else if(cdt.getMonth() == 8) {
            return "Septiembre";
        } else if(cdt.getMonth() == 9) {
            return "Octubre";
        } else if(cdt.getMonth() == 10) {
            return "Noviembre";
        } else if(cdt.getMonth() == 11) {
            return "Diciembre";
        }
    }
}

cargarMapa = function(nodo,lat, lo, zoomP, markerTitle) {
    var latlng = new google.maps.LatLng(lat, lo);
    var myOptions = {
      zoom: zoomP,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.HYBRID
    };
    var map = new google.maps.Map(nodo, myOptions);
    marker = new google.maps.Marker({
          position: latlng,
          map: map,
          draggable: true,
          title:markerTitle
      }
    );
    return map;
}

cargarMapaNoMarker = function(nodo,lat, lo, zoomP) {
    var latlng = new google.maps.LatLng(lat, lo);
    var myOptions = {
      zoom: zoomP,
      center: latlng,
      mapTypeControl: false,
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      streetViewControl: false
    };
    var map = new google.maps.Map(nodo, myOptions);
    return map;
}

getLoadingIcon = function() {
    var loadingImage = document.createElement('IMG');
    loadingImage.setAttribute('id','loadingIcon_CA');
    loadingImage.setAttribute('src','./css/images/bigrotation2.gif');
    loadingImage.setAttribute('style','height: 14px; margin: 0px 1px;');
    return loadingImage;
}

removeLoadingIcon = function() {
    var ld = document.getElementById("loadingIcon_CA");
    if(ld != null) {
        if(ld.parentNode != null) {
            ld.parentNode.removeChild(ld);
        } else {
            document.removeChild(ld);
        }
    }
}


getProgressBar = function(widthPercent) {
    var loadingImage = document.createElement('DIV');
    loadingImage.setAttribute('id','progressbar_CA');
    loadingImage.setAttribute('style','float: left; background: url(./css/'+
        'images/progressBarAnim.gif) center left repeat-x; height: 14px;'+
        ' width: '+widthPercent+'%;');
    return loadingImage;
}

var aStringInstancias = new Array();

/**
 * Metodo creador de pestanas
 */
accionar = function(numero, total, esteNodo, offset) {
    var divPestanas = new Array(total);
    var cont = 0;
    for(var j = offset; j < (total+offset); j++) {
        divPestanas[cont] = document.getElementById("pestana" + j);
        if(divPestanas[cont] != null) {
            if(j == numero) {
                divPestanas[cont].style.display = 'block';
                try {
                    mapaInicialRegistro();
                } catch(err) {}
            } else {
                divPestanas[cont].style.display = 'none';
            }
        }
        cont++;
    }
    var enlacesAccion = esteNodo.parentNode.parentNode.getElementsByTagName("A");
    if(enlacesAccion != null) {
        for(j = 0; j < enlacesAccion.length; j++) {
            enlacesAccion[j].parentNode.className = "";
        }
    }
    esteNodo.parentNode.className = "enlaceActivo";
}

crearPestanas = function() {
    var divsContenido = EXTRAS.getElementsByClass("pestanasContainer");
    var pestanasIndex = 0;
    if(divsContenido != null) {
        for(var m = 0; m < divsContenido.length; m++) {
            var divContenido = divsContenido[m];
            var divBlocks =  divContenido.getElementsByTagName("DIV");
            var numPestanasMax = divBlocks.length;
            var contadorPestanas = 0;
            //obtenemos los divs que debemos convertir en pestañas
            for(var i = pestanasIndex; i < (numPestanasMax+pestanasIndex); i++) {
                var divAux = divContenido.getElementById("pestana" + i);
                if(divAux != null) {
                    contadorPestanas++;
                } else {
                    while(divContenido.getElementById("pestana" + pestanasIndex) == null) {
                        pestanasIndex++;
                    }
                    if(divContenido.getElementById("pestana" + pestanasIndex) != null) {
                        contadorPestanas++;
                    }
                }
            }
            if(contadorPestanas > 0) {
                //añadimos el div que contendrá los enlaces
                var divEnlacesPestanas = document.createElement("DIV");
                var pestanas = new Array(contadorPestanas);
                var enlacesPestanas = new Array(contadorPestanas);
                var cont = 0;
                for(var j = pestanasIndex; j < (numPestanasMax+pestanasIndex); j++) {
                    pestanas[cont] = document.getElementById("pestana" + j);
                    if(pestanas[cont] != null) {
                        if(pestanas[cont].className != "pestanaActiva") {
                            pestanas[cont].className = "contenidoPestana";
                        }
                        divContenido.insertBefore(divEnlacesPestanas,pestanas[cont]);
                    }
                    cont++;
                }
                divEnlacesPestanas.className = "enlacesPestanas";
                var iniciaEncontrado = false;
                for(j = 0; j < pestanas.length; j++) {
                    if(pestanas[j] != null && pestanas[j].className == "pestanaActiva") {
                        iniciaEncontrado = true;
                    }
                }
                if(iniciaEncontrado) {
                    divContenido.appendChild(divEnlacesPestanas);
                    for(j = 0; j < contadorPestanas; j++) {
                        if(pestanas[j] != null) {
                            //añadimos el enlace con el código pertinente (o impertinente?):
                            divContenido.appendChild(pestanas[j]);
                            //añadimos la 'capa'
                            if(pestanas[j].className != "pestanaActiva"){
                                divEnlacesPestanas.innerHTML += "<span><a onClick=\"accionar("+
                                (j+pestanasIndex)+", "+numPestanasMax+", this,"+pestanasIndex+");return false;\" class\"apest"+j+"\">"+pestanas[j].title+"</a></span>";
                                pestanas[j].style.display = "none";
                            } else {
                                pestanas[j].className = "contenidoPestana";
                                divEnlacesPestanas.innerHTML += "<span class=\"enlaceActivo\"><a onClick=\"accionar("+
                                (j+pestanasIndex)+", "+numPestanasMax+", this,"+pestanasIndex+"); return false;\" class\"apest"+j+"\">"+pestanas[j].title+"</a></span>";
                            }
                        }
                    }
                } else {
                    divContenido.appendChild(divEnlacesPestanas);
                    for(j = 0; j < contadorPestanas; j++) {
                        if(pestanas[j] != null) {
                            //añadimos el enlace con el código pertinente (o impertinente?):
                            //añadimos la 'capa'
                            divContenido.appendChild(pestanas[j]);
                            if(j > 0) {
                                divEnlacesPestanas.innerHTML += "<span><a onClick=\"accionar("+
                                (j+pestanasIndex)+", "+numPestanasMax+", this,"+pestanasIndex+");return false;\" class\"apest"+j+"\">"+pestanas[j].title+"</a></span>";
                                pestanas[j].style.display = "none";
                            } else {
                                divEnlacesPestanas.innerHTML += "<span class=\"enlaceActivo\"><a onClick=\"accionar("+
                                (j+pestanasIndex)+", "+numPestanasMax+", this,"+pestanasIndex+"); return false;\" class\"apest"+j+"\">"+pestanas[j].title+"</a></span>";
                            }
                        }
                    }
                }
            }
        }
    }
}

function getScrollY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return scrOfY;
}

function getScrollX() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return scrOfX;
}

showMessage = function(titleText, texto, button1, button2, width) {

    $("body").fade(0.5);

    var messageParent = document.createElement("DIV");
    messageParent.setAttribute("id", "loadingBox");
    if(width == null) {
        width = 280;
        left = "35%";
    }
    var viewportwidth;
    var viewportheight;
    if (typeof window.innerWidth != 'undefined') {
        viewportwidth = window.innerWidth,
        viewportheight = window.innerHeight
    } else if (typeof document.documentElement != 'undefined'
            && typeof document.documentElement.clientWidth !=
            'undefined' && document.documentElement.clientWidth != 0) {
        viewportwidth = document.documentElement.clientWidth,
        viewportheight = document.documentElement.clientHeight
    } else {
        viewportwidth = document.getElementsByTagName('body')[0].clientWidth,
        viewportheight = document.getElementsByTagName('body')[0].clientHeight
    }
    position = ((viewportheight/2)-100)+"px";
    left = ((viewportwidth/2)-((width+40)/2))+"px";
    messageParent.setAttribute("style", "text-align: center; display: block;"+
      " padding: 0%; position: absolute; top: "+position+"; left: "+left+"; opacity: 1; "+
      " background-color: #fff; text-align: center; border: 1px solid grey;"+
      " width: "+width+"px;");

    var titleElem = document.createElement("DIV");
    titleElem.setAttribute("id", "titleBar");
    titleElem.setAttribute("style", "text-align: left; display: block; "+
      "padding: 1% !important; font-size: 95%; clear: both; font-family: \"Trebuchet MS\";"+
      "background: url(./css/images/h2-bg.gif) repeat-x bottom left;"+
      "line-height: 25px; color: #fff;");
    titleElem.innerHTML = "<strong>"+titleText+"<br /></strong>";

    var divElem = document.createElement("DIV");
    divElem.setAttribute("id", "alertButtons");
    divElem.setAttribute("class", "save");
    divElem.setAttribute("style", "text-align:center; margin-top: 10px; padding: 20px 0px 20px 0px;");

    var textElem = document.createElement("DIV");
    textElem.setAttribute("style", "text-align: left; display: block; "+
          "margin: 10px !important; font-size: 80%; clear: both");
    textElem.setAttribute("id", "loadingMessage");

    document.body.appendChild(messageParent);
    $(messageParent).fade("hide");
    $(messageParent).fade("in");

    if(isDomElement(texto)) {
        wrapper = document.createElement("DIV");
        messageParent.appendChild(titleElem);
        messageParent.appendChild(textElem);
        textElem.appendChild(wrapper);
        wrapper.appendChild(texto);
        texto.appendChild(divElem);
        if(button1 != null) {
            divElem.appendChild(button1);
        }
        if(button2 != null) {
            divElem.appendChild(button2);
        }
    } else {
        textElem.innerHTML = texto;
        messageParent.appendChild(titleElem);
        messageParent.appendChild(textElem);
        messageParent.appendChild(divElem);
        if(button1 != null) {
            divElem.appendChild(button1);
        }
        if(button2 != null) {
            divElem.innerHTML += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
            divElem.appendChild(button2);
        }
    }
    return messageParent;
}

closeMessageBox = function() {
    if(document.getElementById("loadingBox") != null) {
        document.getElementById("loadingBox").parentNode.
            removeChild(document.getElementById("loadingBox"));
        $("body").fade(1);
    }
}

findPosX = function(obj) {
    var curleft = 0;
    if(obj.offsetParent) {
        while(1) {
            curleft += obj.offsetLeft;
            if(!obj.offsetParent)
                break;
            obj = obj.offsetParent;
        }
    } else if(obj.x) {
        curleft += obj.x;
    }
    return curleft;
}

findPosY = function(obj) {
    var curtop = 0;
    if(obj.offsetParent) {
        while(1) {
            curtop += obj.offsetTop;
            if(!obj.offsetParent)
                break;
            obj = obj.offsetParent;
        }
    } else if(obj.y) {
        curtop += obj.y;
    }
    return curtop;
}

commitDeleteAItem = function(evt) {
    var elemento = evt.target;
    var ieVer=/*@cc_on function(){ switch(@_jscript_version){ case 1.0:return 3; case 3.0:return 4; case 5.0:return 5; case 5.1:return 5; case 5.5:return 5.5; case 5.6:return 6; case 5.7:return 7; case 5.8:return 8; }}()||@*/0;
    if(elemento != null) {
        evt.stop();
        var button1 = document.createElement("A");
        button1.innerHTML="Si";
        button1.setAttribute("id", "commitDelete");
        button1.setAttribute("href", elemento.getAttribute("href"));
        button1.setAttribute("style", "color: #000; text-decoration: none; font-size: 75%; padding: 2px 21px; border: 1px solid #888; background-color: #a9a9a9;");
        var button2 = document.createElement("A");
        button2.innerHTML="No";
        button2.setAttribute("id", "cancelDelete");
        button2.setAttribute("style", "color: #000; text-decoration: none; font-size: 75%; padding: 2px 20px; border: 1px solid #888; cursor: pointer; background-color: #a9a9a9;");
        $(button2).addEvent("click",closeMessageBox);

        showMessage("Atenci&oacute;n", "&iquest;Esta seguro que desea eliminar?",button1,button2);
    }
}

commitDeleteBItem = function(evt) {
    var elemento = evt.target;
    var ieVer=/*@cc_on function(){ switch(@_jscript_version){ case 1.0:return 3; case 3.0:return 4; case 5.0:return 5; case 5.1:return 5; case 5.5:return 5.5; case 5.6:return 6; case 5.7:return 7; case 5.8:return 8; }}()||@*/0;
    if(elemento != null) {
        evt.stop();
        var url = "";
        var form = elemento.parentNode;
        while(form.nodeName.toLowerCase() != "form") {
            form = form.parentNode;
        }
        url = form.getAttribute("action")+"?";
        var inputTags = form.getElementsByTagName("INPUT");
        if(inputTags != null) {
            for(var cnt = 0; cnt < inputTags.length; cnt++) {
                if(inputTags[cnt].getAttribute("type") == "hidden") {
                    url += inputTags[cnt].name+"="+inputTags[cnt].value+"&";
                }
            }
        }
        url += elemento.name+"="+elemento.value;
        var button1 = document.createElement("A");
        button1.innerHTML="Si";
        button1.setAttribute("id", "commitDelete");
        button1.setAttribute("href", url);
        button1.setAttribute("style", "color: #000; text-decoration: none; font-size: 75%; padding: 2px 21px; border: 1px solid #888; background-color: #a9a9a9;");
        var button2 = document.createElement("A");
        button2.innerHTML="No";
        button2.setAttribute("id", "cancelDelete");
        button2.setAttribute("style", "color: #000; text-decoration: none; font-size: 75%; padding: 2px 20px; border: 1px solid #888; cursor: pointer; background-color: #a9a9a9;");
        $(button2).addEvent("click",closeMessageBox);

        var yPosition = findPosY(elemento);
        showMessage("Atenci&oacute;n", "&iquest;Esta seguro que desea eliminar?",button1,button2, (yPosition-200)+"px");
    }
}

alertWhenTryingToDelete = function() {
    var aTags = document.getElementsByTagName("A");
    if(aTags != null) {
        for(var cnt = 0; cnt < aTags.length; cnt++) {
            if(aTags[cnt].innerHTML.toLowerCase() == "eliminar") {
                $(aTags[cnt]).addEvent("click", commitDeleteAItem);
            }
        }
    }
    var buttonTags = document.getElementsByTagName("BUTTON");
    if(buttonTags != null) {
        for(var cnt = 0; cnt < buttonTags.length; cnt++) {
            if(buttonTags[cnt].innerHTML.toLowerCase().indexOf("eliminar") >= 0) {
                $(buttonTags[cnt]).addEvent("click", commitDeleteBItem);
            }
        }
    }
}

isDomElement = function(o) {
    return o && ("undefined" !== typeof o.childNodes || o.nodeType);
}

parseQuery = function(url) {
	var parts1 = url.split('?');
	var parts = '';
	if(parts1 == null) {
		parts = url;
	} else {
		parts = parts1[1];
	}
	if(parts.indexOf('&amp;') >= 0) {
		parts1 = parts.split('&amp;');
	} else {
		parts1 = parts.split("&");
	}
	if(parts1 != null) {
		var jsonStr = '{';
		for(var i = 0; i < parts1.length; i++) {
			var parts2 = parts1[i].split('=');
			if(i > 0) {
				jsonStr += ',';
			}
			jsonStr += '"'+parts2[0]+'":"'+parts2[1]+'"';
		}
		jsonStr += "}";
	}
	return eval('('+jsonStr+')');
}

