dojo.require("dojo.fx.easing");
dojo.require("dojo.dnd.move");
dojo.require("dijit.dijit");
dojo.require("dojo.html");
dojo.require("dijit.Dialog");
dojo.require("dijit.form.TextBox");
dojo.require("dijit.form.SimpleTextarea");
dojo.require("dijit.form.FilteringSelect");
dojo.require("dijit.form.Button");
dojo.require("dijit.form.DateTextBox");
dojo.require("dijit.form.CheckBox");
dojo.require("dijit.form.RadioButton");
dojo.require("dijit.form.ComboBox");
dojo.require("dojo.data.ItemFileReadStore");
dojo.require("dojo._base.connect");

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 == className)
                retVal.push(refTags[z]);
        }
        return retVal;
    }
}

setContenedorHeigth = function() {
    var dimension = dijit.getViewport();
    var contenedor = document.getElementById("contenedor");
    contenedor.style.height = (dimension.h)+"px";
}

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;
}

creaVentana = function(idNodo, titulo, funcionRetorno, oCerrarTrasEnvio, oRecargarTrasEnvio, handleAs) {

    this.dialogo = dijit.byId(idNodo);
    this.nodoForm = null;
    this.actionForm = null;
    this.methodForm = null;
    this.nodoContenido = null;
    this.metodoVueltaEnviarForm = funcionRetorno;
    this.cerrarTrasEnvio = oCerrarTrasEnvio;
    this.recargarTrasEnvio = oRecargarTrasEnvio;
    this.handleAs = handleAs;
    this.enviarSinAjax = false;

    this.dialogo = new dijit.Dialog({
        title: titulo,
        id: idNodo,
        draggable: true});
    dojo.body().appendChild(this.dialogo.domNode);
    this.dialogo.startup();
    this.dialogo.closeable = true;
    this.dialogo.refreshOnShow = true;

    this.setCerrarTrasEnvio = function(valor) {
        this.cerrarTrasEnvio = valor;
    }

    this.setRecargarTrasEnvio = function(valor) {
        this.recargarTrasEnvio = valor;
    }

    this.setEnviarSinAjax = function(valor) {
        this.enviarSinAjax = valor;
    }


    this.asignarContenido = function(content) {
        if(typeof(content) == "string") {
            this.nodoContenido = creaNodo("form"+this.dialogo.domNode.id,"contenidoDialogo",dojo.body());
            this.nodoContenido.innerHTML = content;
            var formTags = this.nodoContenido.getElementsByTagName("FORM");
            if(formTags != null && formTags.length > 0) {
                var inputTags = this.nodoContenido.getElementsByTagName("INPUT");
                var selectTags = this.nodoContenido.getElementsByTagName("SELECT");
                var textareaTags = this.nodoContenido.getElementsByTagName("TEXTAREA");
                var buttonTags = this.nodoContenido.getElementsByTagName("BUTTON");
                if(inputTags != null) {
                    for(var i = 0; i < inputTags.length; i++) {
                        if(inputTags[i].type == "submit") {
                            inputTags[i].setAttribute("dojoType", "dijit.form.Button");
                        } else if(inputTags[i].type == "text" && inputTags[i].getAttribute("class") == "date") {
                            inputTags[i].setAttribute("dojoType", "dijit.form.DateTextBox");
                        } else if(inputTags[i].type == "text") {
                            inputTags[i].setAttribute("dojoType", "dijit.form.TextBox");
                        }  else if(inputTags[i].type == "checkbox") {
                            inputTags[i].setAttribute("dojoType", "dijit.form.CheckBox");
                        }  else if(inputTags[i].type == "radio") {
                            inputTags[i].setAttribute("dojoType", "dijit.form.RadioButton");
                        }
                    }
                }
                if(selectTags != null) {
                    for(var i = 0; i < selectTags.length; i++) {
                        selectTags[i].setAttribute("dojoType", "dijit.form.FilteringSelect");
                    }
                }
                if(textareaTags != null) {
                    for(var i = 0; i < textareaTags.length; i++) {
                        textareaTags[i].setAttribute("dojoType","dijit.form.SimpleTextarea");
                    }
                }
                if(buttonTags != null) {
                    for(var j = 0; j < buttonTags.length; j++) {
                        buttonTags[j].setAttribute("dojoType","dijit.form.Button");
                    }
                }
                if(formTags != null && formTags.length > 0) {
                    this.nodoForm = formTags[0];
                    this.actionForm = formTags[0].action;
                    this.methodForm = formTags[0].method;
                    dojo.connect(this.nodoForm,"onsubmit",this,"enviarFormulario",false);
                }
            }
            var aTags = this.nodoContenido.getElementsByTagName("A");
            this.dialogo.setContent(this.nodoContenido);
            this.dialogo.show();
        } else  {
            this.dialogo.setContent(content);
            this.dialogo.show();
        }
    }

    this.obtenerTexto = function(URL) {
        var objeto;
        try {
            dojo.xhrGet({
                url: URL,
                load: function(data, xhr) {
                        objeto = data;
                        return data;
                    },
                sync: true
            });
        } catch (ex) {
            alert("Excepcion obteniendo cadena de la URL " + URL);
        }
        return objeto;
    }

    this.asignarContenidoUrl = function(URL) {
        this.asignarContenido(this.obtenerTexto(URL));
    }


    this.asignarContenidoCadena = function(cadena) {
        this.asignarContenido(cadena);
    }

    this.enviarFormulario = function(e) {
        if(!this.enviarSinAjax) {
            dojo.stopEvent(e);
            try {
                var parametros = {
                    form: dojo.byId(this.nodoForm.id),
                    handleAs: this.handleAs,
                    load: eval(this.metodoVueltaEnviarForm),
                    error: function(t, e) {
                        alert("Error en el envío de la solicitud "+ t + e);
                    },
                    sync: true
                };
                if(this.recargarTrasEnvio == true) {
                    parametros = {
                        form: dojo.byId(this.nodoForm.id),
                        handleAs: this.handleAs,
                        error: function(t, e) {
                            alert("Error en el envío de la solicitud "+ t + e);
                        },
                        sync: true
                    };
                }
                dojo.xhrPost(parametros);
                if(this.cerrarTrasEnvio == true) {
                    this.dialogo.destroyRecursive();
                }
                if(this.recargarTrasEnvio == true) {
                    this.nodoForm.action = "";
                    location.reload();
                }
            } catch(ex) {
                alert("No enviado el formulario por excepcion "+ex);
            }
            return false;
        } else {
            return true;
        }
    }

    this.cerrarDialogo = function(event) {
        this.dialogo.destroyRecursive();
    }

}

cargarMapa = function(nodo,lat, lo) {
    if (GBrowserIsCompatible()) {
        var map = new GMap2(nodo);
        map.setCenter(new GLatLng(lat, lo), 16, GMap2.G_HYBRID_MAP);
        map.setUIToDefault();
        var point = new GLatLng(lat,lo);
        map.addOverlay(new GMarker(point));
    }
    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: 1px;');
    return loadingImage;
}

var aStringInstancias = new Array();

accionar = function(numero, total, esteNodo) {
    var divPestanas = new Array(total);
    for(var j = 0; j < total; j++) {
        divPestanas[j] = document.getElementById("pestana" + j);
        if(divPestanas[j] != null) {
            if(j == numero) {
                divPestanas[j].style.display = 'block';
            } else {
                divPestanas[j].style.display = 'none';
            }
        }
    }
    var enlacesAccion = esteNodo.parentNode.getElementsByTagName("A");
    if(enlacesAccion != null) {
        for(var j = 0;j < enlacesAccion.length; j++) {
            enlacesAccion[j].className = "";
        }
    }
    esteNodo.className = "enlaceActivo";
}

crearPestanas = function() {
    var divContenido = document.getElementById("pestanasContainer");
    var divBlocks =  document.getElementsByTagName("DIV");
    var numPestanasMax = divBlocks.length;
    var contadorPestanas = 0;
    //obtenemos los divs que deberémos convertir en pestañas
    for(var i = 0; i < 9; i++) {
        var divAux = document.getElementById("pestana" + i);
        if(divAux != null) {
            contadorPestanas = contadorPestanas+1;
        }
    }
    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);
        for(var j = 0; j < contadorPestanas; j++) {
            pestanas[j] = document.getElementById("pestana" + j);
            if(pestanas[j] != null && pestanas[j].className != "pestanaActiva"){
                pestanas[j].className = "contenidoPestana";
                divContenido.removeChild(pestanas[j]);
            } else {
                divContenido.insertBefore(divEnlacesPestanas,pestanas[j]);
            }
        }
        divEnlacesPestanas.id = "enlacesPestanas";
        var iniciaEncontrado = false;
        for(var j = 0; j < pestanas.length; j++) {
            if(pestanas[j] != null && pestanas[j].className == "pestanaActiva") {
                iniciaEncontrado = true;
            }
        }
        if(iniciaEncontrado) {
	        for(var j = 0; j < contadorPestanas; j++) {
                      if(pestanas[j] != null) {
                          //añadimos el enlace con el código pertinente (o impertinente?):
                          if(pestanas[j].className != "pestanaActiva"){
                                //añadimos la 'capa'
                                divContenido.appendChild(pestanas[j]);
                                divEnlacesPestanas.innerHTML += "<a href=\"#\" id=\"p"+j+"\" onClick=\"accionar("
                                   +j+", "+contadorPestanas+", this); return false;\">"+pestanas[j].title+"</a>";
                                pestanas[j].style.display = "none";
                          } else {
                                divEnlacesPestanas.innerHTML += "<a href=\"#\" id=\"p"+j+"\" onClick=\"accionar("+
                                j+", "+contadorPestanas+", this); return false;\" class=\"enlaceActivo\">"+pestanas[j].title+"</a>";
                                ActivarFCKEditor(pestanas[j]);
                          }
                      }
	        }
        } else {
             divContenido.appendChild(divEnlacesPestanas);
             for(var 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 += "<a href=\"\" onClick=\"accionar("+
                         j+", "+contadorPestanas+", this);return false;\">"+pestanas[j].title+"</a>";
                         pestanas[j].style.display = "none";
                       } else {
                         divEnlacesPestanas.innerHTML += "<a href=\"\" name=\"p"+j+"\" onClick=\"accionar("+
                         j+", "+contadorPestanas+", this); return false;\" class=\"enlaceActivo\">"+pestanas[j].title+"</a>";
                       }
                   }
             }
        }
    }
}

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+')');
}