/*
Copyright (c) 2007, Gurú Sistemas and/or Gustavo Adolfo Arcila Trujillo
All rights reserved.
www.gurusistemas.com

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer
	  in the documentation and/or other materials provided with the distribution.
    * Neither the name of the Gurú Sistemas Intl nor Gustavo Adolfo Arcila Trujillo nor the names of its contributors may be used to
	  endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS  "AS IS"  AND ANY EXPRESS  OR  IMPLIED WARRANTIES, INCLUDING, 
BUT NOT LIMITED TO,  THE IMPLIED WARRANTIES  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT
SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,  INDIRECT,  INCIDENTAL, SPECIAL, EXEMPLARY,  OR CONSEQUENTIAL 
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF  USE, DATA, OR PROFITS;  OR BUSINESS 
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 

Donations are wellcome, copy and paste in your internet browser the following link to make your donation
https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=tavoarcila%40gmail%2ecom&item_name=phpMyDataGrid%202007&no_shipping=0&no_note=1&tax=0&currency_code=USD&lc=US&bn=PP%2dDonationsBF&charset=UTF%2d8

For more info, samples, tips, screenshots, help, contact, forum, please visit phpMyDataGrid site  
http://www.gurusistemas.com/indexdatagrid.php

For contact author: tavoarcila at gmail dot com or info at gurusistemas dot com
*/

var DG_esNS = document.getElementById&&!document.all; var DG_capa = null; var difX = 0; var difY=0; var afterSave='';

function DG_centrar(DivName,DivWidth,DivHeight) { 
	posX = DG_getX(); posY=DG_getY();
	PixX = (screen.availWidth - DivWidth)/2; PixY = (screen.availHeight/2) - DivHeight;
	if (DG_esNS){
		DG_goo(DivName).style.left = parseInt(posX + PixX) +'px';
		DG_goo(DivName).style.top  = parseInt(posY + PixY) +'px';
	} else{
		DG_goo(DivName).style.pixelLeft = parseInt(posX + PixX);
		DG_goo(DivName).style.pixelTop = parseInt(posY + PixY);
	};
};

function DG_getX(){
	var posX=0; if (window.innerHeight){ posX = window.pageXOffset; } else 
	if (document.documentElement && document.documentElement.scrollTop){ posX = document.documentElement.scrollLeft; } else 
	if (document.body){ posX = document.body.scrollLeft; };
	return posX;
};

function DG_getY(){
	var posY=0;if (window.innerHeight){ posY = window.pageYOffset; } else 
	if (document.documentElement && document.documentElement.scrollTop){ posY = document.documentElement.scrollTop; } else 
	if (document.body){	posY = document.body.scrollTop; };
	return posY;
};

function DG_setOpacity(id, val) {
	opc=(val==100)?60:100; DG_opacity(id, opc, val, 1000);
};

function DG_liberaCapa(id) { 
	if (!DG_isdefined(id)|| typeof(id)=='object') return;
	DG_capa = null; DG_setOpacity(id ,100); document.onselectstart = null;
};
	
function DG_clickCapa(e, obj, id) {
	if (!DG_esNS) { DG_capa = event.srcElement.parentElement.style; difX = e.offsetX; difY = e.offsetY; } else {DG_capa = obj.parentNode; difX = e.layerX; difY = e.layerY;};
	DG_setOpacity(id,60); document.body.focus(); document.onselectstart = function () { return false; }; 
	return false;	
};
	
function DG_select(objChk){v=objChk.value;
	if (objChk.checked) DG_goo('dgTR'+v).className='dgSelRow'; else DG_goo('dgTR'+v).className=DG_gvv('dgChoc'+v);
};

function DG_mueveCapa(e) {
	posX = DG_getX(); posY=DG_getY();
	if (DG_capa != null) {
		if (DG_esNS) { 
			DG_capa.style.top = (e.clientY-difY+posY)+"px"; DG_capa.style.left = (e.clientX-difX+posX)+"px";
		} else {
			DG_capa.pixelLeft = event.clientX-difX + posX; DG_capa.pixelTop = event.clientY-difY + posY;
		}; return false;
	};
};

function DG_chgpg(pgNumber) { DG_Do ("chgPage", pgNumber); };

function DG_orderby(field,order,event,addShift)	{ 
	if ( (DG_isdefined(addShift) && addShift==1) || event.shiftKey==1){
		field=DG_gvv('dg_order')+","+field;
		order=DG_gvv('dg_oe')+","+order;
	};
	DG_Do ("orderby",field, order); 
};

function DG_ui(fldname,keyValue,imgName){
	DG_Do ("upload",fldname, keyValue+"&imgname="+imgName);
};

function DG_ai(imagedata,fldname,keyValue){
	parent.window.document.getElementById('icn_'+fldname+'.-.'+keyValue).src = DG_goo('DG_UploadedImage').src;
	setTimeout("parent.window.document.getElementById('uplDiv').innerHTML=''");
};

function DM_orderasc(param){ DG_Do ("orderby",param, "ASC"); };
function DM_orderdes(param){ DG_Do ("orderby",param, "DESC"); };
function DM_orderasca(param){ DG_orderby(param,"ASC",null,1); };
function DM_orderdesa(param){ DG_orderby(param,"DESC",null,1); };

function DG_addrow(){ 
	DG_svv("DG_posY", DG_getY()); window.scrollTo(0,0); DG_Do ("add"); 
};

function DG_closeDiv(divName){
	if (!DG_isdefined(divName)) divName="addDiv";
	window.scrollTo(0,DG_gvv("DG_posY")); DG_sii(divName,"");
};

function DG_deleterow( intRow, code){
	if (confirm(DG_gvv('DGtxtDelete'))) DG_Do("delete",intRow, code);
};

function DG_editrow( intRow, code){
	DG_svv("DG_posY", DG_getY());
	DG_Do("edit",intRow, code);
};

function DG_viewrow( intRow, code){
	DG_svv("DG_posY", DG_getY());
	DG_Do("view",intRow, code);
};

function DG_showSearchBox(){
	DG_opacity("DG_srchDIV", 0, 0, 1);  
	DG_centrar("DG_srchDIV",300,150); DG_hss("DG_srchDIV","block");
	DG_opacity("DG_srchDIV", 0, 100, 500);  
};

function DG_closeSearch(){
	DG_opacity("DG_srchDIV", 100, 0, 500); 
	setTimeout('DG_hss("DG_srchDIV","none")',600);
};

function DG_doSearch(){
	DG_closeSearch(); DG_Do ("search");
};

function DG_resetSearch(){
	DG_hss("rstsearch","none");
	DG_closeSearch();
	DG_Do ("resetsearch");
};
function DG_setsearch(campo,fldvalue){
	camposearch=DG_gvv("DGcamposearch"); eval ("results = camposearch.search(/"+campo+":sel/gi)");
	if(results == "-1"){
		DG_sii("searchBox","<input type='text' id='dg_schrstr' class='dgInput' size='35' value='"+fldvalue+"' onkeypress='return DG_bl_enter(event)' /><input type='hidden' id='boxshr' name='boxshr' value='0' />");
	} else{
		DG_hss("imgsearch","none");
		DG_ajaxLoader(DG_gvv('DGscrName'), "ajaxDHTMLDiv", "2&fs="+campo+"&tAjax="+Math.random(), "searchBox", "<input type='hidden' id='boxshr' name='boxshr' value='1'>"+DG_gvv('DGtxtLoading') );
		DG_checkAjaxSearch("boxshr", fldvalue);
	};
};

function DG_doSave(fields,recno){
	DG_Do ("save",fields,recno);
};

function DG_showExportBox(){
	DG_opacity("DG_xportDIV", 0, 0, 1);  
	DG_centrar("DG_xportDIV",300,200); DG_hss("DG_xportDIV","block");
	DG_opacity("DG_xportDIV", 0, 100, 500);  
};
function DG_closeExport(){
	DG_opacity("DG_xportDIV", 100, 0, 500); 
	setTimeout('DG_hss("DG_xportDIV","none")',600);
};

function DG_checkAjaxSearch(id, fldvalue){
	dato = DG_gvv(id);
	if (dato != 0){
		DG_svv(id, dato+1);
		if (dato == 40){
			DG_sii("searchBox", "<input type='text' id='dg_schrstr' class='dgInput' size='35' value='"+fldvalue+"' onkeypress='return DG_bl_enter(event)' /><input type='hidden' id='boxshr' name='boxshr' value='0' />");
			DG_hss("imgsearch","inline");
		} else{
			setTimeout("DG_checkAjaxSearch('"+id+"','"+fldvalue+"');",1000);
		};
	} else{
		DG_goo("imgsearch").style.display='inline';
	};
};

function DG_export(destino, opcion){
	DG_closeExport(); output=(opcion=='I')?2:0;
	DG_Do("export", destino, opcion, output);
};

function DG_Do(action, p1, p2, p3){
	var theDiv   = "dgDiv";
	var dgvcode  = "";
	var DG_ajaxid= 1;
	var dgrtd    = '';
	var pgNumber = DG_gvv("dg_r");
	var vOrder   = DG_gvv("dg_order");
	var oe       = DG_gvv("dg_oe");
	var ss       = DG_gvv("dg_ss");
	var schrstr  = DG_gvv("dg_schrstr");
	var selected_checkboxes = selected_checks();
	switch (action){
		case "chgPage": pgNumber = p1; break;
		case "orderby": vOrder = p1; oe = p2; break;
		case "search" : pgNumber=0; if (schrstr=="") DG_hss("rstsearch","none"); else DG_hss("rstsearch","inline"); break;
		case "resetsearch" : pgNumber=0; schrstr=""; DG_svv("dg_schrstr",""); break;
		case "delete": dgrtd=p1; DG_ajaxid=3; dgvcode=p2; break;
		case "add"   : DG_ajaxid=5; theDiv = "addDiv"; break;
		case "edit"  : DG_ajaxid=5; theDiv = "addDiv"; dgrtd = p1; dgvcode=p2; break;
		case "view"  : DG_ajaxid=5; theDiv = "addDiv"; dgrtd = p1; dgvcode="view"+p2; break;
		case "export": DG_ajaxid=7; dgrtd = p1; dgvcode=p2; break;
		case "upload": DG_ajaxid=8; theDiv = "uplDiv"; dgrtd = p1; dgvcode=p2; break;
		case "save"  : DG_ajaxid=6; dgrtd = p2; 
			for (field=0; field<p1.length; field++) {
				if (field!='inArray'){
					var fldName = p1[field].split(":");
					if (DG_isdefined(fldName[1]) && fldName[1]=="check"){
						fldValue= DG_gcc(fldName[0]);
					} else{
						fldValue= DG_gvv(fldName[0]);
					};
					dgvcode = dgvcode+"&"+fldName[0]+"="+encodeURIComponent(fldValue);
				};
			}; DG_sii("addDiv","");
		break;
		default: DG_ajaxid=action; dgrtd = p1; if(DG_isdefined(p2)) theDiv=p2; break;
	};
	parametersAjax = DG_ajaxid+"&dg_r="+pgNumber+"&dg_order="+vOrder+"&dg_oe="+oe+"&dg_ss="+ss+"&dg_schrstr="+schrstr+"&dg_nrpp="+DG_gvv('DG_nrpp')+"&dgrtd="+dgrtd+"&dgvcode="+dgvcode+"&chksel="+selected_checkboxes+DG_gvv('DGparams')+"&x="+screen.width+"&y="+screen.height+"&dg_tAjax="+Math.random();
	if (DG_isdefined(p3)){
		if (p3==2){
			window.open(DG_gvv('DGscrName')+"?DG_ajaxid="+parametersAjax);
		}else{
			location.href=DG_gvv('DGscrName')+"?DG_ajaxid="+parametersAjax;
		};
	}else
		DG_ajaxLoader(DG_gvv('DGscrName'), "ajaxDHTMLDiv", parametersAjax, theDiv);
	afterAction = DG_gvv('afterAction'); if (afterAction!='') eval(afterAction);
};

function DG_hss(objToProcess, status){ 
	try { document.getElementById(objToProcess).style.display=status;}
	catch(err){	};
};

function DG_gvv(objToProcess){ 
	try { return document.getElementById(objToProcess).value;} 
	catch(err){	};
};

function DG_goo(objToProcess){ 
	try { return document.getElementById(objToProcess);} 
	catch(err){	};
};

function DG_svv(objToProcess, strValue){ 
	try { document.getElementById(objToProcess).value = strValue;} 
	catch(err){	};
};

function DG_sii(objToProcess, strValue){ 
	try { document.getElementById(objToProcess).innerHTML = strValue; } 
	catch(err){	};
};

function DG_gii(objToProcess){ 
	try { return document.getElementById(objToProcess).innerHTML; } 
	catch(err){	};
};

function DG_gcc(objToProcess){ 
	try { return (document.getElementById(objToProcess).checked)?1:0; } 
	catch(err){	};
};

function DG_isdefined(objToTest) {
	if (null == objToTest) return false;
	if ("undefined" == typeof(objToTest)) return false;
	return true;
};

function DG_isFunction(objToTest) {
  return (typeof(objToTest)=="function");
};

function DG_setExport(destino){
	if (!DG_isdefined(destino)) destino=DG_checkselected('exporta');
	alcance=DG_checkselected('exportato');
	if (alcance==-1 || destino==-1) return;
	DG_svv("DGactExport", "DG_export('" + alcance + "','" + destino + "')");
};

function DG_ajaxLoader(programa, id, parametros, displayid, text, whenAjaxEnd, o) {
	imgpath = DG_gvv('DGimgpath');
	methodForm = DG_gvv('DGmethodForm');
	imgAjax= DG_gvv('DGimgAjax');
    var DG_esNS = document.getElementById&&!document.all;
	if (!DG_isdefined(text)) text = DG_gvv('DGtxtLoading');
	if (window.innerHeight){ posY = window.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){
		posY = document.documentElement.scrollTop;
	} else if (document.body){ posY = document.body.scrollTop; };
	elemento=DG_goo(id); 
	if (DG_esNS){ elemento.style.top  = parseInt(posY) +'px'; } else{ elemento.style.pixelTop = parseInt(posY); };
	if (DG_esNS){ elemento.style.left  = '0px'; } else{ elemento.style.pixelLeft = 0; };
	elemento.innerHTML="<div class='dgAjax'><img border='0' width='16' height='16' src='"+imgpath+imgAjax+"'>&nbsp;&nbsp;"+text+"&nbsp;&nbsp;&nbsp;<\/div>";
	x = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		 x = new XMLHttpRequest();
		 if (x.overrideMimeType) {
			x.overrideMimeType('text/html');
		 };
	  } else if (window.ActiveXObject) { // IE
		 try {
			x = new ActiveXObject("Msxml2.XMLHTTP");
		 } catch (e) {
			try {
			   x = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {};
		 };
	  };
	  if (!x) {
		 alert('Cannot create XMLHTTP instance');
		 return false;
	};
//	if (document.getElementById) { var x = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); };
	if (x) {
		if (!DG_isdefined(o)){
			o=function() {
				if (x.readyState == 4 && x.status == 200) {
					DG_sii(displayid, x.responseText); DG_sii(id,'');
					if (DG_isdefined(whenAjaxEnd) && whenAjaxEnd!="") eval(whenAjaxEnd);
				};
			};
		};
		x.onreadystatechange = o;
		if (methodForm=='POST'){	
			if(parametros!='') parameters='DG_ajaxid=' + parametros; else parameters='';
			url=programa;
			x.open('POST', url, true);
			x.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			x.setRequestHeader("Content-length", parameters.length);
			x.setRequestHeader("Connection", "close");
			x.send(parameters);
		} else{
			if(parametros!='') url=programa+'?DG_ajaxid=' + parametros; else url=programa;
			x.open("GET", url, true); x.send(null);
		};
	};
};

function DG_bl_enter(e) {
	if (e.keyCode == 13) return false; else return true;
};
function DG_D_edit(objField,dgvcode){
	imgpath = DG_gvv('DGimgpath');
	eval(DG_gvv('dg_ta_columns'));
	idField = objField.id; StyleAjax=DG_gvv('DGajaxStyle');
	arrFldData = idField.split(".-.");
	column = arrFldData[0];
	if (DG_gvv("ajaxDHTMLediting")=='0'){
		var aColumn	= aColumns[column];
		var lenmax	= (aColumn['maxlength']=="0")?'': ' maxlength="'+aColumn['maxlength']+'" ';
		var rows	= (aColumn['fieldWidth']=="0")?'3': ' rows="'+aColumn['fieldWidth']+'" ';
		var inputtext = DG_gvv('i'+idField);
		var inputHTML = objField.innerHTML.toString();
		inputHTML = inputHTML.replace(/\n/,"");
		var new_id = objField.id + "_AjaxDhtml";
		if(new_id=="_AjaxDhtml"){
			return;
		} else{
			var bRes;
			var txt1 = inputtext.toUpperCase();
			if( txt1.indexOf( "<INPUT" ) < 0 && txt1.indexOf( "<SELECT" ) < 0 && txt1.indexOf( "<TEXTAREA" ) < 0 ){
				var thename= ' id="'+new_id+'" ';
				var savefield='DG_save_field(\''+new_id+'\',\''+dgvcode+'\',\''+ escape(inputHTML) +'\')';
				var cancelfield='DG_cancel_field(\''+new_id+ escape(inputHTML)+'\')';
				var keypress, events, changed;
				var selectall=false; elWidth='90%';
				var frm = frmDate = '';
				if (aColumn["datatype"]=='date' && DG_gvv('DGbolCalendar')==1){
					myMask = aColumn['mask'].split(':'); StyleAjax="default";
					miMask = myMask[1].substr(0,1)+myMask[2]+myMask[1].substr(1,1)+myMask[2]+myMask[1].substr(2,1);
					miMask = miMask.replace(/d/gi,'dd');
					miMask = miMask.replace(/m/gi,'mm');
					miMask = miMask.replace(/y/gi,'yyyy');
					txtCal=DG_gvv('DGtxtCalendar');elWidth='65%';
					frmDate='<img src="'+imgpath+DG_gvv('DGimgCalendar')+'" alt="'+txtCal+'" title="'+txtCal+'" onClick="viewCalendar( \''+new_id+'\', \''+miMask+'\', event );" class="dgImgPags" >';
				};
				if (StyleAjax=="silent"){
					keypress='return DG_silent_enter(event,\''+new_id+'\',\''+ escape(inputHTML) +'\',\''+dgvcode+'\')';
					if (aColumn["datatype"] == "textarea") keypress= 'return DG_imposeMaxLength(this, '+aColumn['maxlength']+');';
					events=' onDblClick="this.onblur=null;'+savefield+'" onKeyPress="'+keypress+'" onBlur="'+savefield+'"';
					changed=' onChange="this.onblur=null;'+savefield+'"';
				} else{	
					events=' onKeyPress="return DG_bl_enter(event)" ';
				};
				switch (aColumn["datatype"]){ 	
					case "select":
						frm+= '<select class="dgSelectpage" style="width:95%"'+changed+thename+events+'>';
						for ( therow in aColumn["select"] ){
							selected=(inputtext==therow) ? "selected='selected'":"";
							frm+= '<option value="' +therow+ '"' +selected+'>'+aColumn["select"][therow]+'<\/option>';
						};
						frm+= '<\/select>';	
					break;
					case "check":
						var checked=(inputtext==1) ? "checked='checked'":"";
						frm  +=	'<span class="dgBold">'+aColumn["select"][0]+'/'+aColumn["select"][1]+'<\/span><input class="dgCheck" type="checkbox" '+thename+checked+changed+events+lenmax+'>';
					break;
					case "textarea":
						frm += '<textarea class="dgInput" style="width:95%"'+thename+events+rows+'>'+inputtext+'</textarea>';
					break;
					case "password":
						frm  +=	'<input '+thename+' type="password" class="dgInput" style="width:95%" value="'+inputtext+'" '+events+lenmax+'>';
					break;
					default:
						frm  +=	'<input '+thename+' type="text" class="dgInput" style="width:'+elWidth+'" value="'+inputtext+'" '+events+lenmax+'>'+frmDate;
						selectall=true;
				};
				if (StyleAjax!="silent"){
					txtSave=DG_gvv('DGtxtSave'); txtCancel=DG_gvv('DGtxtCancel');
					frm +='<div style="width:95%" align="center"><img src="'+imgpath+DG_gvv('DGimgSave')+'" alt="'+txtSave+'" title="'+txtSave+'" onClick="'+savefield+'" class="dgImgLink">';
					frm +='<img src="'+imgpath+DG_gvv('DGimgCancel')+'" alt="'+txtCancel+'" title="'+txtCancel+'" onClick="'+cancelfield+'" class="dgImgLink"></div>';
				};	
				objField.innerHTML=frm; DG_goo(new_id).focus();
				if (aColumn["datatype"]!="check" && aColumn["datatype"]!="select" ){
					DG_goo(new_id).select();
				};
				DG_svv("ajaxDHTMLediting",1);
			};
		}; 
	};
};

function DG_silent_enter(e,new_id,oldtext,dgvcode) {
	var e = window.event || e; var charCode; charCode = e.keyCode ;
	if (charCode == 9 || charCode == 13){ DG_goo(new_id).onblur=null; DG_save_field(new_id,dgvcode,oldtext, charCode); };
	if (charCode == 27) DG_cancel_field(new_id+oldtext);
	return true;
};

function DG_cancel_field(idfield){
	var myID=idfield.split("_AjaxDhtml");
	DG_svv("ajaxDHTMLediting",0);
	DG_sii(myID[0],unescape(myID[1]));
};


function DG_save_field(idfield, dgvcode, oldtext, charCode){
	if (!DG_isdefined(charCode)) charCode=0;
	arrFldData = idfield.split(".-.");
	column = arrFldData[0];
	Vcolumns = DG_gvv('DG_cFields');
	txt = DG_goo(idfield);
	var texto = txt.value;
	if (Vcolumns.indexOf('-['+column+']-')!=-1){
		condicional = DG_gvv('DG_'+column+'_C').replace(/this./ig,"DG_goo(idfield).");
		if ((eval(condicional))) return alert(DG_gvv('DG_'+column+'_E'));
	};
	var dbvalue= txt.value.toString();
	eval(DG_gvv('dg_ta_columns'));
	if (txt.type.indexOf('select')==0) texto=aColumns[column]["select"][texto];
	if (txt.type.indexOf('checkbox')==0){ 
		dbvalue= (txt.checked==false) ? '0':'1';
		texto= (txt.checked==false) ? aColumns[column]["select"][0]:aColumns[column]["select"][1];
	};
	if (aColumns[column]["datatype"]=="password") texto= "*".DG_repeat(texto.length);
	var mydummy_array=idfield.split("_AjaxDhtml");
	var txt = DG_goo(mydummy_array[0]);
	if (DG_trim(texto)==""){ texto="&nbsp;";};
	txt.innerHTML = texto;
	mask=aColumns[column]["mask"];
	DG_svv("ajaxDHTMLediting",0);
	if (dbvalue == DG_gvv('i'+mydummy_array[0])){txt.innerHTML=unescape(oldtext); if (charCode==9) return DG_editNextColumn(column); return;};
	oldvalue = DG_gvv('i'+mydummy_array[0]);
	DG_svv('i'+mydummy_array[0],dbvalue);
	txt.style.color= DG_gvv('DGdgAjaxChanged');
	DG_ajaxLoader(DG_gvv('DGscrName'), "ajaxDHTMLDiv", "4&dgrtd="+idfield+"&dgnt="+dbvalue+"&dgvcode="+dgvcode+DG_gvv('DGparams')+"&tAjax="+Math.random(), mydummy_array[0], DG_gvv('DGtxtSaving'), "DG_tmp=DG_checkAjax('"+mydummy_array[0]+"','"+oldtext+"','"+oldvalue+"')");
	if (DG_gvv('DGdecimalPoint')==".") sepMiles = "\\,"; else sepMiles = ".";
	if (DG_gvv('DGthereisCalc')=="true"){
		for (actualitem in aColumns){ 
			strLeft = aColumns[actualitem]["mask"];
			if (strLeft.substring(0,5)=='calc:' || strLeft.substring(0,6)=='scalc:'){
				var part1= strLeft.split("//");
				var parts= part1[0].split(":");
				var expresionToCalc=parts[1];
				var expresion = parts[1];
				var ShowCalc = false;
				expresion = expresion.replace(/\+/g," "); expresion = expresion.replace(/-/g," ");
				expresion = expresion.replace(/\//g," "); expresion = expresion.replace(/\*/g," ");
				expresion = expresion.replace(/\(/g," "); expresion = expresion.replace(/\)/g," ");
				expresionToCalc = expresionToCalc.replace(/\+/g," + "); expresionToCalc = expresionToCalc.replace(/-/g," - ");
				expresionToCalc = expresionToCalc.replace(/\//g," / "); expresionToCalc = expresionToCalc.replace(/\*/g," * ");
				expresionToCalc = expresionToCalc.replace(/\(/g," ( "); expresionToCalc = expresionToCalc.replace(/\)/g," ) ");
				var varExpresion = expresion.split(" ");
				var indice = idfield.split(".-.");
				indice[1] = indice[1].replace(/_AjaxDhtml/gi,'');
				for(var ind=0; ind<varExpresion.length; ind++){
					var expresion = varExpresion[ind];
					if (column == expresion) ShowCalc = true;
					expresion = expresion.replace(/ /g,"");
					if (expresion!=''){
						var puede= 0;
						for(var ni in aColumns){
							if(aColumns[ni]["strfieldName"] == expresion) puede=1;
						};
						if (puede==1){
							var expresiones = DG_gvv("i"+expresion+".-."+indice[1]);
							if (DG_gvv('DGdecimalPoint')=='.'){
								expresiones = expresiones.replace(/\,/g,'');
								expresiones = expresiones.replace(/\./g,'.');
							} else{
								expresiones = expresiones.replace(/\./g,'');
								expresiones = expresiones.replace(/\,/g,'.');
							};
							expresiones = expresiones.replace(/ /g,"");
							if (expresiones == "" || expresiones == " " || expresiones == "&nbsp;") expresiones = 0;
							expresion=" "+expresion+" ";
							expresionToCalc=expresionToCalc.replace(expresion, expresiones);
						};
					};
				};
				if (ShowCalc){
					try{
						dato = eval(expresionToCalc);
						switch (DG_gvv('DGdecimals')){
							case 1 : vr=10; break;
							case 3 : vr=1000; break;
							case 4 : vr=10000; break;
							default: vr=100; break;
						};
						dato=Math.round(dato* vr) / vr; 
						updField = aColumns[actualitem]["strfieldName"]+".-."+indice[1];
						DG_goo(updField).style.color = DG_gvv('DGdgAjaxChanged');
						DG_ajaxLoader(DG_gvv('DGscrName'), "ajaxDHTMLDiv", "9&dgrtd="+updField+"&dgnt="+dato+"&dgvcode="+DG_gvv('DGparams')+"&tAjax="+Math.random(), updField, DG_gvv('DGtxtSaving'));
					} catch(e){
						alert(e);
					};
				};
			};
		};
	};
	afterAction = DG_gvv('afterAction'); if (afterAction!='') eval(afterAction);
	if (charCode==9) DG_editNextColumn(column);
};

function DG_editNextColumn(column){
	dt='calc';tf=0;
	while( dt!='' && ( dt=="calc" || dt=='image' || dt=='imagelink' || dt=='link' || dt=='chart')){
		NextColumn = DG_getNextColumn(column); tf=NextColumn[2]; column=NextColumn[0];
		if (DG_isdefined(NextColumn[0])){
			if (tf==0){
				id=arrFldData[1].split("_AjaxDhtml");
				id = NextColumn[0]+".-."+id[0]; dt=NextColumn[1];
				cv=escape(DG_goo(id).onclick).split("%22");
			}
		}else
			dt='';
	};
	if( dt!='')	DG_D_edit(DG_goo(id),cv[1]);
}

function DG_getNextColumn(column){
	var unomas=false; eval(DG_gvv('dg_ta_columns'));
	for (var k in aColumns){ if (unomas) return [k,aColumns[k]["datatype"],aColumns[k]["inputtype"]]; if (k==column) unomas=true; }; return false;
};

function DG_checkAjax(id, oldtext, oldvalue){
	if (DG_gii(id)=="&lt;ERROR&gt;"){
		alert(DG_gvv('DGtextErrorInline'));
		DG_sii(id, unescape(oldtext));
		DG_svv("i"+id, oldvalue);
	};
};

function DG_setCheckboxes(the_form, do_check) {
	var elts= document.getElementsByName("chksel[]");
	var elts_cnt  = (typeof(elts.length) != 'undefined')?elts.length:0;
	if (elts_cnt) {
		for (var i = 0; i < elts_cnt; i++) {
			if ( elts[i].checked)
				elts[i].checked = false;
			else
				elts[i].checked = true;
			DG_select(elts[i])
		}; 
	} else {
		elts.checked = do_check;
	}; 
	return true;
}; 

function selected_checks(){
	var sel_checks = new Array();
	var elts_a= document.getElementsByName('chksel[]');
	var elts_cnt_a  = (typeof(elts_a.length) != 'undefined')?elts_a.length:0;
	if (elts_cnt_a) {
		counter_a = 0;
		for (var i_a = 0; i_a < elts_cnt_a; i_a++) {
			if ( elts_a[i_a].checked){
				sel_checks[counter_a] = elts_a[i_a].value;
				counter_a++;
			};
		};
	};
	return sel_checks;
};

function DG_checkselected(ctrl) { 
	ctrl = document.getElementsByName(ctrl); 
	for(i=0;i<ctrl.length;i++) if(ctrl[i].checked) return ctrl[i].value; 
	return -1;
}

function DG_ltrim( value ) { var re = /\s*((\S+\s*)*)/; return value.replace(re, "$1"); };
function DG_rtrim( value ) { var re = /((\s*\S+)*)\s*/; return value.replace(re, "$1"); };
function DG_trim( value ) { return DG_ltrim(DG_rtrim(value));};
String.prototype.DG_repeat = function(l){ return new Array(l+1).join(this); };
function DM_viewrow(param){ arrParam = param.split("::"); DG_viewrow(arrParam[0],arrParam[1]); };
function DM_deleterow(param){ arrParam = param.split("::"); DG_deleterow(arrParam[0],arrParam[1]); };
function DM_editrow(param){ arrParam = param.split("::"); DG_editrow(arrParam[0],arrParam[1]); };

document.onmousemove = DG_mueveCapa;
document.onmouseup = DG_liberaCapa;

function DG_upload(obj) {
	var uploadDir = obj.value;
	DG_goo('dgul').action=DG_gvv('DGscrName');
	DG_goo('dgul').submit();
};

function DG_opacity(id, opacStart, opacEnd, millisec) {
    var speed = Math.round(millisec / 100); var timer = 0;
    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) { setTimeout("DG_changeOpac(" + i + ",'" + id + "')",(timer * speed)); timer++;};
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++){ setTimeout("DG_changeOpac(" + i + ",'" + id + "')",(timer * speed)); timer++; };
    };
};

function DG_changeOpac(opacity, id) {
    var object = DG_goo(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
};

function DG_imposeMaxLength(objField, txtMaxLen){ 
	if (objField.value.length > txtMaxLen) objField.value=objField.value.substr(0,txtMaxLen);
};