﻿var GroupFlow = {
	cbacks : [],
	global : this,
	handler : "handler.php",
	removeIcon : "../img/close.png",
	editIcon : "../img/hojita.png",
	containerId : "element_list_object",
	_interface : null,
	criterio : "",
	jsonObject : {},
	pagina : 1,
	_list : function(fname){
		var o = GroupFlow;
		var cbIndex = o.cbacks.length;
		o.cbacks[cbIndex] = {
			"index" : cbIndex,
			"of" : function(json){
				jsonObject = json;
				if(fname)fname(json);
			}
		}
		var strCallBack = "GroupFlow.cbacks["+cbIndex+"].of";
		var url = o.handler + "?pg=listflows&output=json&pagina="+o.pagina+"&criterio="+encodeURIComponent(o.criterio)+"&cb=" + encodeURIComponent(strCallBack);
		Fujar.Utils._script(url);
		return o.cbacks[cbIndex];
	},
	
	search : function(f,fname){
		var o = GroupFlow;
		o.criterio = f.elepm_criterio.value;
		o._refresh(fname);
		o.pagina = 1;
	},
	
	_refresh : function(fname){
		var o = GroupFlow;
		var capa = document.getElementById(o.containerId);
		o._list(function(json){
			var tbodies = capa.getElementsByTagName("tbody");
			if(tbodies.length > 0){
				tbodies[0].parentNode.removeChild(tbodies[0]);
			}
			capa.appendChild(GroupFlow.toHTML(json));
			if(fname)fname(json);
		});
	},
	
	toHTML : function(json){
		var o = GroupFlow;
		var tbody =  document.createElement("tbody");
		for(var i=0;i<json.data.length;i++){
			var tr = o._tr(json.data[i]);
			tbody.appendChild(tr);
		}
		return tbody;
	},
	
	editHandler : function(v){
		var o = GroupFlow;
		if(o._interface)
			o._interface.EditFlow(v);
	},
	
	removeHandler : function(v){
		var o = GroupFlow;
		if(o._interface)
			o._interface.Remove(v.flowID);
	},
	
	_tr : function(v){
		var o = GroupFlow;
		var tr = document.createElement("tr");
		var tdTitulo = document.createElement("td");
		var tdAccion = document.createElement("td");
		var tdFecha = document.createElement("td");
		
		var imgRemove = document.createElement("img");
		imgRemove.src = o.removeIcon;
		imgRemove.onclick = function(){
			if(confirm("Esta seguro que desea eliminar :" + v.nombre))
				o.removeHandler(v);
		}
		
		var imgEdit = document.createElement("img");
		imgEdit.src = o.editIcon;
		imgEdit.onclick = function(){
			o.editHandler(v);
		}
		
		tdTitulo.innerHTML = v.nombre;
		tdAccion.appendChild(imgEdit);
		tdAccion.appendChild(imgRemove);	
		tdFecha.innerHTML = v.fecha;
		
		tr.appendChild(tdTitulo);
		tr.appendChild(tdFecha);
		tr.appendChild(tdAccion);
		
		return tr;
	}
}

GroupFlow.frontend = {
	divApprovalID : "display_flow_info_container",
	divInfoID : "display_flow_info",
	handler : "../groupflow/handler.php",
	cbacks : [],
	notApproved : null,
	
	toApprove : function(grupoID,entidadID,estado){
		var comentarios = document.getElementById("approval_textarea_comments").value;
		var peticion = new Fujar.MyServer();
		peticion.url = this.handler;
		peticion.vars += "pg=approve";
		peticion.vars += "&grupoID=" + escape(grupoID);
		peticion.vars += "&entidadID=" + escape(entidadID);
		peticion.vars += "&estado=" + escape(estado);
		peticion.vars += "&comentarios=" + escape(comentarios);
		peticion.onFinish = function(){
			GroupFlow.frontend.show(entidadID);
		}
		peticion._post();
	},
	
	show : function(nodoID){
		var fr = GroupFlow.frontend;
		var capa = document.getElementById(this.divInfoID);
		capa.innerHTML = "<img src='../img/indica.gif' > Cargando ";
		$.blockUI({ message: $("#" + this.divApprovalID)});
		fr.notApproved = null;
		this.loadData(nodoID,function(json){
			var htm = "";
			htm += "<ul>";
			for(var i=0;i<json.length;i++){
				htm += "<li>";
				htm += "<h2>" + json[i].grupo + "</h2>";
				var estado = "noaprobado";
				if(json[i].flowdata.approved){
					var usnombre = json[i].flowdata.nombre + " " + json[i].flowdata.paterno;
					if( json[i].flowdata.estado == "si"){
						htm += " APROBADO ";
						estado = "aprobado";
					}else{
						estado = "rechazado";
						htm += " RECHAZADO ";
					}
					htm += " [Dia "+json[i].flowdata.faprobacion+" por " + usnombre + "]";
					htm += "<br/><i>"+ json[i].flowdata.comentarios +"</i>";
				}else{
					estado = "noaprobado";
					htm += "[NO APROBADO]";
				}
				if(json[i].allowed){
					var approveFunc = "GroupFlow.frontend.toApprove("+json[i].grupoID+","+nodoID+",'si');";
					var rejectFunc = "GroupFlow.frontend.toApprove("+json[i].grupoID+","+nodoID+",'no');";
					
					if(estado != "aprobado"){
						htm += "<br/><a href='#' onclick=\""+approveFunc+"\">Aprobar </a> | <a href='#' onclick=\""+rejectFunc+"\">Rechazar</a>";
						htm += "<br/>Comentarios:<br/><textarea id='approval_textarea_comments'></textarea>";
						
					}
				}
				htm += "</li>"
			}
			htm += "</ul>";
			capa.innerHTML = htm;
		});
	},
	
	loadData : function(nodoID,cb){
		var o = GroupFlow.frontend;
		var cbIndex = o.cbacks.length;
		o.cbacks[cbIndex] = {
			"index" : cbIndex,
			"of" : function(json){
				if(cb)cb(json);
			}
		}
		var strCallBack = "GroupFlow.frontend.cbacks["+cbIndex+"].of";
		var url = o.handler + "?pg=entidadstatus&idn="+nodoID+"&output=json&cb=" + encodeURIComponent(strCallBack);
		Fujar.Utils._script(url);
		return o.cbacks[cbIndex];
	}
	
	
}