// JavaScript Document

// *********** Declaraciones ************

function casteo( str ) {
//    return (str+'').replace(/([\\"'])/g, "\\$1").replace(/\0/g, "\\0");
    return (str+'').replace(/([&])/g, "~").replace(/([+])/g, "^");
}


// Handlers gen�ricos

var handleSubmit = function() {

	this.submit();

};

var handleFailure = function(o) {

	alert("Error en la conexión: " + o.status);

};

// estructuras

function dataStruct(){

	var registro;

	var posicion;

}

var porlasData = null;

var data = new dataStruct();



// Calendarios

var Mes = ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Setiembre", "Octubre", "Noviembre", "Diciembre"];

var Dias = ["Domingo", "Lunes", "Martes", "Mi�rcoles", "Jueves", "Viernes", "S�bado"];





arrBotonera = Array();



function bot_estruct(){

	var id_boton;

	var img_on;

	var modo_on;

	var posicion;

	var boton = null

}





// *********** INICIO ************

function initABM(){

	col_botones = 	new Array(

							new Array("primero", "N", "NU"),

							new Array("anterior", "N", "NU"),

							new Array("siguiente", "N", "NP"),

							new Array("ultimo", "N", "NP"),

							new Array("buscar", "N", "NPU"),

							new Array("guardar", "AM", "NPU"),

							new Array("deshacer", "AM", "NPU"),

							new Array("nuevo", "N", "NPU"),

							new Array("editar", "N", "NPU"),

							new Array("borrar", "N", "NPU"));

	//						new Array("buscar", "N", "NPU"));



	modoABM = "N"; // navegaci�n



	init_botones();





//	init_Calendario();

	init_frmConsultas();

	frmNavega("P");

	frmCambiaEstado();

//	init_dlgImagen();

//	renderBotonera();

}

function init_frmConsultas(){

	dlgConsulta = new YAHOO.widget.Panel("frmConsultas",

				{

					effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.25},

					fixedcenter: true,

					constraintoviewport: true,

					underlay:"none",

					close:true,

					visible:false,

					draggable:true,

					modal:true,

					zindex: 9999

				} );

	dlgConsulta.render();

}

function init_Calendario(){

	var FechaVista = new Date();

	var cal1 = new YAHOO.widget.Calendar(

									"calContainer",

									{ title:"Fecha:", close:true }

								);

	cal1.cfg.setProperty("DATE_FIELD_DELIMITER", ".");

	cal1.cfg.setProperty("MDY_DAY_POSITION", 1);

	cal1.cfg.setProperty("MDY_MONTH_POSITION", 2);

	cal1.cfg.setProperty("MDY_YEAR_POSITION", 3);

	cal1.cfg.setProperty("MONTHS_SHORT", ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"]);

	cal1.cfg.setProperty("MONTHS_LONG", Mes);

	cal1.cfg.setProperty("WEEKDAYS_1CHAR", ["D", "L", "M", "M", "J", "V", "S"]);

	cal1.cfg.setProperty("WEEKDAYS_SHORT", ["Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa"]);

	cal1.cfg.setProperty("WEEKDAYS_MEDIUM", ["Dom", "Lun", "Mar", "Mie", "Jue", "Vie", "Sab"]);

	cal1.cfg.setProperty("WEEKDAYS_LONG", Dias);

	cal1.cfg.setProperty("START_WEEKDAY", 0);

	cal1.render();



	// Listener to show the 1-up Calendar when the button is clicked

	YAHOO.util.Event.addListener("cal", "click", cal1.show, cal1, true);



	// Trae la fecha seleccionada

	function handleSelectCal(type,args,obj) {

		var dates = args[0];

		var date = dates[0];

		var year = date[0], month = date[1], day = date[2];

		var txtDate1 = document.getElementById("fecha_hora");

		txtDate1.value = day + "/" + month + "/" + year;

		cal1.hide();

	}

	cal1.selectEvent.subscribe(handleSelectCal, cal1, true);



}



// *********** Comunicaci�n ************

function decoRespuesta(dato){

	data.registro = null;

	var tmp = (dato);

//alert(tmp)
//// para versiones <5 de PHP

	data.registro = fnArmaRegistro(tmp.split("|"));

	// Trae errores del PHP

	if(data.registro.ERROR > "" ){

		alert("ERROR...\n" + data.registro.ERROR); // muestra el error

		return false;

	}

/// ver si va aca o en la funci�n que lo llama
	if(data.registro.FUNCION != null){

		var ret = true;
		eval("ret = "+ data.registro.FUNCION);

		return false;

	}

	return true;

}

function exeQuery(sURL, data){

	var AjaxObject = {

		handleSuccess:function(o){

			if(!decoRespuesta(o.responseText)){

				return false;

			}

		},

		startRequest:function() {

		   YAHOO.util.Connect.asyncRequest('POST', sURL, callback, data);

		}

	}

	var callback =	{

		success:AjaxObject.handleSuccess,

		failure:handleFailure,

		scope: AjaxObject

	};

// Comienza la transacci�n

	AjaxObject.startRequest();

}







function fnSubmit(nombreBoton){

	presionaBoton(nombreBoton);

	document.frmLogin.action = document.frmLogin.action + "?action="+nombreBoton

	document.frmLogin.submit();

}

function tomaValor(i){

/*

C: Combo

N: num�rico

S:String

E:EDitor de textos

*/

	var MiValor = "";

	var field = document.getElementById(arrCampos[i][0]);

	switch (arrCampos[i][2]) {

		case "C":

			MiValor = field.options[field.selectedIndex].value

			break;

		case "N":

			MiValor = field.value;

			break;

		case "S":

			MiValor = field.value;

			break;

		case "E":

			MiValor = field.value;

			break;

		default:

			MiValor = "";

	}

//alert(arrCampos[i][0])	;

	return MiValor;

}



function traeFiltro(arrCampos){

	var valor = "";

	var cant = arrCampos.length

	for (var i=0; i < cant; i++){

		if(arrCampos[i][1] == "K"){

			if (valor){

				valor += "&";

			}

			valor += arrCampos[i][0]+"="+tomaValor(i);

		}

	}

	return valor;

}



function frmNavega(Direccion){

	var keys = traeFiltro(arrCampos);

	var qry = "rnd="+Rnd()+"&dire="+Direccion + "&"+ keys;

	var queryString = encodeURI(qry);

//alert(queryString )

	var Request = exeQuery(entrada, queryString);

}

function frmBorra(){

	var keys = traeFiltro(arrCampos);

	var qry = "rnd="+Rnd()+"&accion=B&"+ keys;

	var queryString = encodeURI(qry);

//alert(queryString)

	return exeQuery(entrada, queryString);
}

function frmGuarda(){

	if (!frmVerifica())

		return false;

	var keys = traeFiltro(arrCampos);

	frmPreserva();

	tmp = fnArmaSalvar(porlasData.registro);

	var queryString = "rnd="+Rnd()+"&accion=G&"+ keys+"&data="+ encodeURI(tmp);

	var Request = exeQuery(entrada, queryString);

	return true

}

function frmLimpia(){

/*

K: Clave

T: Texto

F: Fecha

I: Imagen

N: Num�rico

C: Combo

E: Editor de Textos

B: Bit

*/

eval (ret = fnPreLimpia())

	for (var i=0; i < arrCampos.length; i++){

		switch (arrCampos[i][1]) {

			case "K":

				document.getElementById(arrCampos[i][0]).value = "";

				break;

			case "T":

				document.getElementById(arrCampos[i][0]).value = "";

				break;

			case "F":

				document.getElementById(arrCampos[i][0]).value = "";

				break;

			case "I":

				document.getElementById(arrCampos[i][0]).src = "imagenes/blank.gif";

				break;

			case "N":

				document.getElementById(arrCampos[i][0]).value = 0;

			case "C":

				document.getElementById(arrCampos[i][0]).options[0].selected = true

				break;

			case "B":

				document.getElementById(arrCampos[i][0]).checked = false;

				break;

			case "E":

				var ed = tinyMCE.get("contenidoweb");
				ed.setContent("");

				break;

		}



	}

eval (ret = fnPostLimpia())

	return true;

}

function frmRecupera(){

	if(!porlasData){

		Limpia();

	}

	data = porlasData;

	modoABM = porlasData.registro.modoABM;

	frmRender();

	porlasData = null;

}



function frmCambiaEstado(){

	estado = false;

	for (var i=0; i < arrCampos.length; i++){

		estado = !(modoABM != "N");

		tmp = arrCampos[i][1];

		if(tmp == "K"){
			if(tipoClaveABM == "E"){
				if(modoABM == "M"){
					estado = true;
				}
			}else{
				estado = true;
			}
		}

		if(tmp != "I" && tmp != "B"){
			document.getElementById(arrCampos[i][0]).disabled = estado;
		}

		if(tmp == "B"){
			document.getElementById(arrCampos[i][0]).disabled = estado;
		}
		if(arrCampos[i][2] == "R"){
			document.getElementById(arrCampos[i][0]).disabled = true;
		}

	}
	SetEditor((modoABM == "N"));
}

function SetEditor(estado){
	var ed = tinyMCE.get("contenidoweb");
	ed.makeReadOnly(estado);
	return true;
}

function onInitEditor(){
	tinyMCE.isLoaded = true;
	var ed = tinyMCE.get("contenidoweb");
	ed.makeReadOnly(estado);
	return true;
}

function onButtonClick(p_oEvent) {

	switch (this.get("id")) {

		case "bot_editar":

			frmPreserva();

			modoABM = "M";

			renderBotonera();

			frmCambiaEstado();

			break;

		case "bot_guardar":

			if (!frmGuarda())

				return false;

			if (!data.registro.ERROR){

				modoABM = "N";

				renderBotonera();

				frmCambiaEstado();

			}

			break;

		case "bot_deshacer":

			frmRecupera();

			renderBotonera();

			frmCambiaEstado();

			break;

		case "bot_nuevo":

			frmPreserva();

			frmLimpia();

			modoABM = "A";

			renderBotonera();

			frmCambiaEstado();

			break;

		case "bot_borrar":

			frmPreserva();

			if(confirm("Elimina el registro ?")){

				frmBorra();

			};
			modoABM = "N";

			renderBotonera();

			frmCambiaEstado();

			break;

		case "bot_buscar":

			veConsulta("");

			break;

		case "bot_primero":

			frmNavega("P");

			break;

		case "bot_anterior":

			frmNavega("A");

			break;

		case "bot_siguiente":

			frmNavega("S");

			break;

		case "bot_ultimo":

			frmNavega("U");

			break;

		case "bot_estado":

			frmNavega("U");

			break;

		case "bot_nota":

			frmNavega("U");

			break;

		case "bot_dejar":

			frmNavega("U");

			break;







	}

}



function frmNuevo(){

	frmPreserva();

	frmLimpia();

	modoABM = "A";

	renderBotonera();

	frmCambiaEstado();

}



function renderBotonera(){

	document.getElementById("contenedorBotonera").style.display = "block";

	for (var i = 0; i < col_botones.length; i++){

		var flag = ((arrBotonera[i].modo_on.search(modoABM) < 0) || (arrBotonera[i].posicion.search(data.registro.posicion) < 0))
// cambio 7/11
		arrBotonera[i].boton.set("disabled", flag)
		//arrBotonera[i].boton.set("disabled", false);
// hasta aca
	}

	var msg = "Modo ";

	switch (modoABM) {

		case "N":

			msg = "Navegaci&oacute;n de Registros";

			break;

		case "A":

			msg = "Alta de Registros";

			break;

		case "M":

			msg = "Modificaci&oacute;n de Registros";

			break;

	}

//	document.getElementById('msg').innerHTML= msg;

};



function init_botones() {

	for (var i = 0; i < col_botones.length; i++){

		var tmp = new bot_estruct;

		tmp.boton = new YAHOO.widget.Button({

			label:col_botones[i][0],

			id:"bot_"+col_botones[i][0],

			container:"contenedorBotonera",

			tabindex: i+1,

			onclick: {

				fn: onButtonClick

			}

		});

		tmp.modo_on = col_botones[i][1]

		tmp.posicion = col_botones[i][2]

		arrBotonera[i] = tmp;

	}

	return true;

}

