var clickdelay = 400;
var xznPagLoading = true; 
var last2click = new Date();
var xzninternal = false;
var toks = ':__:';
var tok = ':_:';
var submitted = false;
var maxProcs = 16;
var logCompo = null;
var pagX = 0;
var pagY = 0;
var obrig;
var naoobrig;
var vetX;
//var _ses; //sessao xazan
var _isAJAX = true; //se usa AJAX 
var val; //controla mudança de valor
window.onclick = getXY;

var regChanges = new Array();
var regUnChanges = new Array();
var xznChanged = false;
var xznmode;
var subwin = (document.location.search.indexOf('_xznWin=1')>0)?true:false;

function hasChanges() {
		return xznChanged;
	}
function addChange(change, unchange) {
		regChanges[regChanges.length]=change;
		regUnChanges[regUnChanges.length]=unchange;
	}
function execChanges(){
		if(!xznChanged){
			xznChanged=true;
			if(subwin){
				window.parent.execChanges();
			}
			activeElem = '';
			for(ix=0; ix<regChanges.length;ix++)
				eval(regChanges[ix]);
		}
	}
function resetForms(resetForm){
		for (var i = 0; i < document.forms.length; i++ )
		{	
			if(resetForm)document.forms[i].reset();
	    	for (var j = 0; j < document.forms[i].elements.length; j++ )
				if( document.forms[i].elements[j].className.indexOf('X') == 0)
					document.forms[i].elements[j].className = document.forms[i].elements[j].className.substring(1);
		}
		for(ix=0; ix<regUnChanges.length;ix++)
				eval(regUnChanges[ix]);
		xznChanged=false;
	}	
function setLogCompo(field) {
		logCompo = field;
	}

function setChange(field)  	{
		if( !checkNum(field) ) return false;
		execChanges();

		if ( field.className+'' == '' )
		{
			field.className = 'Xobrig';
			return;
		}
		if ( field.className.indexOf('X') == 0 )
			return;
		field.className = 'X' + field.className;
		if ( logCompo != null ) {
			logCompo.className='Xobrig';
			logCompo.value='NOW()';
			logCompo.name = logCompo.name.split('__')[0]+'__int';
		}
	}
	function checkObrigatorio( form )
	{ 
		var ok = true;
		for (var j = 0; j < form.elements.length;j++)  
		{ 
		    if ( (  form.elements[j].type == 'radio' ) && ( form.elements[j].className.indexOf('obr') >= 0 )  ) {
				mark = false;
				name = form.elements[j].name;
				k = j;
				for (var k = 0; k < form.elements.length;k++)  
				{ 
					if( (form.elements[k].type == 'radio') && (name == form.elements[k].name)  ) {
					  if(form.elements[k].checked) mark = true;
					} 
				}
				if(!mark) {	
					ok = false;
					form.elements[j].style.backgroundColor='#ff8888';
				} else
					form.elements[j].style.backgroundColor='#ffffff';
			} 
			else
			if (  ( (form.elements[j].type == 'text' ) ||  (form.elements[j].type == 'textarea' )  
				 	|| ( (form.elements[j].type == 'select-one' ) && ( form.elements[j].style.visibility != 'hidden' ) ) )  && 
			    ( form.elements[j].className.indexOf('obr') >= 0 ) ) 
			{
				if (  ( ( (form.elements[j].type == 'select-one' ) && (form.elements[j].value == 'null') ) ||
                                ( ((form.elements[j].type != 'textarea' ) || (form.elements[j].name.indexOf ('__htm') < 0 )) &&
								  ( form.elements[j].value == '' )  ) || 
                                ( (form.elements[j].type == 'textarea' ) && (form.elements[j].name.indexOf ('__htm') > 0 ) &&
								  //( FCKeditorAPI.GetInstance(form.elements[j].name).GetHTML(  ) == '' )  
								  ( xznEditorGetData( form.elements[j].name ) == '' )
								)
			    	      ) &&  
					( (form.elements[j].type == 'select-one' ) || ((form.elements[j].name + '_').substring(0, 1) != '_' ) )
				   )
		          	{  
						form.elements[j].style.backgroundColor='#ff8888';
					ok = false;
			      } 
		 	}  
		}
		if (!ok)
			alert('ERRO: campo(s) obrigatório(s) não foi(ram) preenchido(s)');  
		return ok;	
	}

	function submitAll( mode )
	{  
		if(submitted) {alert('processando... aguarde.'); return false;} //double click;
		submitted = true;
		var msg = document.getElementById("divfim");
		if (msg == null) 
			msg = document.getElementById("_msg");
		msg.style.visibility = 'visible';
		msg.style.display = 'block';
		msg.innerHTML = '';
		
		xznProgressBarIni(msg);
		xznProgressBar( 0, '');
		
		//msg.style.top = pagY;
		document.body.scrollTop = 0;
		
		var pimg =
		'<img src="/img/percentImage.png" alt="9.5%" class="percentImage" style="background-position: -110.315px 0pt;" />';


		var exec = false;	erro = false;
		var acoes = ''; var mudados = '';
		var naomudados = ''; var chaves = '';
		var qtdProcs = 0;
		var results = '';
		for (var i = 0; i < document.forms.length; i++ )
		{	
			var mudou = false; 
			var mudado='';  var chave='';
			var t1='', t2='';

			xznProgressBar( parseInt( (i+1) * 100 / document.forms.length), '');
			var ok = true;
	    	for (var j = 0; j < document.forms[i].elements.length; j++ )
			{ 
			    
				var elem = document.forms[i].elements[j];
				if ( (elem.className.indexOf('X') == 0)  || ( (elem.type == 'textarea' ) && (elem.name.indexOf ('__htm') > 0 ) ) )
				{
					if (!mudou)
						if ( (document.forms[i].onsubmit+'').indexOf('checkValid')>=0 )
						{
							var xknum = (document.forms[i].onsubmit+'').split('checkValid')[1].split('(')[0];
							xzninternal=true;																			  
							eval('ok = checkValid'+xknum+'(document.forms['+i+']);');
							xzninternal=false;
						}
					if( (elem.type=='radio') && (!elem.checked)) continue; //***
					mudou=true;mudado+=t1+elem.name+'='+ 
						( ( elem.name.indexOf('__htm')>0)? 
											  //FCKeditorAPI.GetInstance(elem.name).GetHTML(  )  : Trim(elem.value) );
												xznEditorGetData( elem.name ) : Trim(elem.value) );
					t1=tok;
				}
				if (document.forms[i].elements[j].name.indexOf('k_e_y') >= 0)
				   {chave+=t2+document.forms[i].elements[j].name+'='+document.forms[i].elements[j].value;t2=tok;}
		  	} 
		  	if ( mudou )
			{
				if ( checkObrigatorio( document.forms[i]) )
				{
					if ( ok )
		 			{ 
					  var ind = document.forms[i].action.indexOf('?')+1;
					  acoes += toks+document.forms[i].action.substring(ind).replace(/&/g,tok);
					  mudados += toks+mudado;
					  chaves += toks+chave;
					  naomudados += toks;
					  // procura nao mudados
					  var t3=''	
					  for (var j = 0; j < document.forms[i].elements.length; j++ ) {
							var felem = document.forms[i].elements[j];
							if ( (felem.className.indexOf('X') != 0) && (felem.className.length > 0) &&
								 (felem.type != 'submit') && (felem.name.indexOf('k_e_y') == -1) ) {
								if( (felem.type=='radio') && (!felem.checked)) continue;
								naomudados+=t3+felem.name+'='+
								( ( felem.name.indexOf('__htm')>0)? 
													   //FCKeditorAPI.GetInstance(felem.name).GetHTML(  )  : Trim(felem.value) );
														xznEditorGetData( felem.name ) : Trim(felem.value) );
								t3=tok;
							}
					  }
					  exec = true;
					}
				}
				else	{ erro = true; break; }
				qtdProcs++;
		 	}
		}
		if ( erro ) {
			submitted = false; 
			exec = false;
			msg.innerHTML = '';
			msg.style.display='none';
			return false; 
		}
		if (! exec) { 
			if(mode=='silent')
				{resetForms(false);sucess(mode);submitted=false;return true}
			if (mode!='_coletiv=1') 
				alert('nenhuma mudança efetuada!'); msg.style.display='none'; submitted = false; return false;
				
		}
		else {
			if ( ! _isAJAX ) {
				mudados = mudados.replace(/&/g,'#amp;');
				naomudados = naomudados.replace(/&/g,'#amp;');
				window.open('cmd?comando=WizOperColetiv&_numses='+_ses+
					'&mudados='+mudados.substring(4)+'&chaves='+chaves.substring(4)+
					'&naomudados='+naomudados.substring(4)+'&acoes='+acoes.substring(4),
					'winxz','status=no,menubar=no,toolbar=no,width=400,height=400,scrollable=yes');
			} 
			else {
				if(qtdProcs <= maxProcs) {// v1.6

					xznProgressBar( 10, '10%');

					results = jsonrpc.SqlColetivMng.execute(acoes.substring(4),mudados.substring(4),
													naomudados.substring(4),chaves.substring(4));
					xznProgressBar( 100, '<font color="#ffffff" size=2>100%</font>');

				}
				else {					// v1.6
					vacoes = acoes.substring(4).split(toks);  // v1.6
					vmudados = mudados.substring(4).split(toks);  // v1.6
					vnaomudados = naomudados.substring(4).split(toks);  // v1.6
					vchaves = chaves.substring(4).split(toks);  // v1.6
					acoes = '';	  	mudados = '';  	chaves = '';	naomudados = '';
					results = '';
					for(iproc=0; iproc < qtdProcs; iproc++) {
						acoes += toks + vacoes[iproc];
				  		mudados += toks+vmudados[iproc];
					  	chaves += toks+vchaves[iproc];
					  	naomudados += toks+vnaomudados[iproc];
						if((iproc%maxProcs == 0) || (iproc + 1 == qtdProcs)){
							xznProgressBar( parseInt( (iproc + 1) * 100 / qtdProcs), '');
							results += jsonrpc.SqlColetivMng.execute(acoes.substring(4),mudados.substring(4),
																	naomudados.substring(4),chaves.substring(4));
							acoes = '';	  	mudados = '';  	chaves = '';	naomudados = '';
							results += '\n';
						}
					}
					xznProgressBar( 100, '');
				} // V1.6 FIM
				if (results.toUpperCase().indexOf('ERR') >= 0)
					alert('resultado:\n'+results);//.replace(/<br>/g,'\n'));
				else {
					window.status=results.replace(/\n/g,' ');
				}
				
			}
		}
		if(mode.indexOf('silent')==0) {resetForms(false);sucess(mode);submitted=false}
		//alert('silent2');
		return true;
	}
	function sucess(mode){
				xznProgressBar( 100, '');		
	}
	function xznProgressBarIni(msg) {
		msg.innerHTML = '<img id="imgloading" border="0" src="../xazan/img/loading.gif">'+
		'<table id="progTable"><tr id="progTr"><td>'+
		' <div align="left" style="width:110px; background-color:#666666; postion:absolute">'+
		' <div align="left" id="xznReport" style="background-color:#0000FF; width:5px; postion:absolute">'+
		' <div id="progText" align="center" style="border-width:1px; width:110px; postion:absolute">'+
		' </div></div></div></td></tr></table>';
		
	}
	function xznProgressBar( width, text) {
		var report 		= document.getElementById("xznReport");
		var reportText 	= document.getElementById("progText");


		if(document.all) {
			if( width == 0 ) {
				reportText.innerHTML = '<font color="#ffffff" size=2>acompanhe na barra de status</font>';
				window.status="0%";
				return;
			}
			else			
				window.status="("+width+"%) " + "|||||||||||".substring( 0, width/10 );
		}	
		
		reportText.innerHTML 	= (text!='')? text : '<font color="#ffffff" size=2>'+width+'%</font>';
		report.style.width 		= (width+10)+"px";
		
	}
   	function updForm(i, acoes, mudados, naomudados, chaves, erro, exec) {
		var tok = ':_:';	
		var mudou = false; 
		var mudado='';  var chave='';
		var t1='', t2='';
		var ok = true;
	    for (var j = 0; j < document.forms[i].elements.length; j++ )
		{ 
			if (document.forms[i].elements[j].className.indexOf('X') == 0)
			{
				   
					if (!mudou)
					if ( (document.forms[i].onsubmit+'').indexOf('checkValid')>=0 )
					{
						var xknum = (document.forms[i].onsubmit+'').split('checkValid')[1].split('(')[0];
						xzninternal=true;																			  
						eval('ok = checkValid'+xknum+'(document.forms['+i+']);');
						xzninternal=false;
					}				   
				   
				   mudou=true;mudado+=t1+document.forms[i].elements[j].name+'='+Trim(document.forms[i].elements[j].value);t1=tok;
			}
			if (document.forms[i].elements[j].name.indexOf('k_e_y') >= 0)
			   {chave+=t2+document.forms[i].elements[j].name+'='+document.forms[i].elements[j].value;t2=tok;}
	  	} 
	  	if ( mudou )
		{ 
		
			if ( checkObrigatorio( document.forms[i]) )
			{

				if ( ok )
	 			{ 
				  var ind = document.forms[i].action.indexOf('?')+1;
				  acoes += toks+document.forms[i].action.substring(ind).replace(/&/g,tok);
				  mudados += toks+mudado;
				  chaves += toks+chave;
				  naomudados += toks;
				  // procura nao mudados
				  var t3=''	
	    			  for (var j = 0; j < document.forms[i].elements.length; j++ ) {
				    if (((document.forms[i].elements[j].className.indexOf('obrig') == 0)
				    ||   (document.forms[i].elements[j].className.indexOf('opcion') == 0))
				    &&  (document.forms[i].elements[j].name.indexOf('k_e_y') == -1))
				       {naomudados+=t3+document.forms[i].elements[j].name+'='+Trim(document.forms[i].elements[j].value);t3=tok;}
				  }
				  exec = true;
				}
				else	{ erro = true; return false; }
			}  
	 	}
		return acoes + toks +  mudados + toks + naomudados + toks + chaves;
	}
	function checkDate( userDate, userFormat ) {
		if (userDate.length == 0)
			return true;
 		var parts = userDate.split( '/' );
		if ( parts.length < 3)
			return false;
		var iD = userFormat.indexOf('d');
		var iM = userFormat.indexOf('M');
		if (iM > iD)
			return isValidDate(parts[0], parts[1], parts[2]);
		else
			return isValidDate(parts[1], parts[0], parts[2]);
	}
    
	function isValidDate(day, month, year) {
	    	if (month < 1 || month > 12) {
            		return false;
        	}
        	if (day < 1 || day > 31) {
            	   return false;
        	}
        	if ((month == 4 || month == 6 || month == 9 || month == 11) &&
            	(day == 31)) {
            	   return false;
        	}
        	if (month == 2) {
            	   var leap = (year % 4 == 0 &&
                  (year % 100 != 0 || year % 400 == 0));
            	   if (day>29 || (day == 29 && !leap)) {
                      return false;
            	   }
        	}
		if ( (''+year).length != 4)
			return false;
		else
		if (year > 2050)
			return false;
		else
		if (year < 1900)
			return false;
       	return true;
	}

	function Maiusculo(val) {
   		Valor = val.value;
		//if (Valor !== Valor.toUpperCase())
    		//{
			val.value = Valor.toUpperCase();
     		//}

	}

	function Minusculo(val) {
   		Valor = val.value;
		//if (Valor !== Valor.toLowerCase())
    		//{
			val.value = Valor.toLowerCase();
     		//}
	}

	function updateReg( regName, compo, delim, order ) {
		var reg = getFormElement(compo.form, regName.name);
		var regval = reg.value;
            var part = (compo.type=='checkbox')?getFormElement(compo.form, compo.name.substring(1)):compo;
		while ( regval.split(delim).length <= order )
			 regval+=delim;
		var vals = regval.split(delim);
		vals[order] = part.value;
		regval =  vals[0];
		for ( i = 1; i < vals.length; i++ )
			regval += delim + vals[i];
		reg.value = eval('regval.replace(/' + delim + '$/,\'\')');
		reg.className = 'Xobrig';
	}

	function keyAcel(ev) {
    	   ev = ev || window.event;          // gets the event in ie or ns
    	   kCode = ev.keyCode || ev.which;   // gets the keycode in ie or ns
 
    	   if ( ev.altKey || ev.ctrlKey ) {
 		var fname;
 		if (document.all)
 		   fname = document.activeElement.form;
 		else
 		if (ev.target)
			fname = ev.target.form;
		else
		if (ev.srcElement) fname = ev.srcElement.form;
 
 		
		var pressedKey = String.fromCharCode(kCode).toUpperCase();
 		if (fname!=null)
 		{
 			for(i=0;i<fname.elements.length;i++)
 			 	if ( (fname.elements[i].type == 'submit') || (fname.elements[i].type == 'button') )
 			    for(j=0;j< (''+fname.elements[i].value).length;j++)
 			 		if ( pressedKey == (''+fname.elements[i].value).substring(j,j+1) )
 			 		{
 			 			fname.elements[i].click();
 			 			return false;
 			 		}
 		}
		if (document.getElementById('btn_pagina') != null) {
			var btn=document.getElementById('btn_pagina');
		    	for(j=0;j< (''+btn.value).length;j++)
 			   if ( pressedKey == (''+btn.value).substring(j,j+1) )
 			   {
 			 	btn.click();
 			 	return false;
 			   }

		}
        }
     }

function getBar2(e) {
	last2click = new Date();

	var divmenu = document.getElementById('menuConteiner');
  	if ( divmenu != null)
  		divmenu.style.visibility='hidden';
	if (navigator.userAgent.indexOf('MSIE 6')>0)
      	document.getElementById('_content').style.visibility = 'visible';		
		
}
function getBar(e) {
		
  if ( (new Date()).getTime() - last2click.getTime() > clickdelay )
     return;

var IE = document.all?true:false;
  if (IE) { 
    if (document.activeElement.form!=null) return true;
    tempX = event.clientX + document.body.scrollLeft;
    tempY = event.clientY + document.body.scrollTop;
  } else {  
    if (e.target.form != null) return true;
    tempX = e.pageX;
    tempY = e.pageY;
  }  
  // catch possible negative values in NS4
  if (tempX < 0){tempX = 0}
  if (tempY < 0){tempY = 0}
  
  var divbar = document.getElementById('xztitbar');
  var divpai = divbar.parentNode;
  while ((divpai.tagName!='DIV') && (divpai.tagName!='BODY')) divpai=divpai.parentNode;
  var bar = document.getElementById('xztitbar').style;
  bar.position = 'absolute';
  //document.appendChild(document.getElementById('xztitbar'));
  if (IE) { 
  	bar.left = tempX - findPosX(divpai);
  	bar.top  = tempY - findPosY(divpai);
  } else {
  	bar.left = ( tempX - findPosX(divpai) ) + 'px';
  	bar.top  = ( tempY - findPosY(divpai) ) + 'px';	  
 }
  bar.visibility = 'visible';
  return true;
}
function setGetBar() {
	document.ondblclick=getBar2;
	document.onclick=getBar;
	
}
function getFormElement(form, nome) {
	for(i=0;i<form.elements.length;i++)
		if (form.elements[i].name==nome)
			return form.elements[i];
	return null;
}
function Trim(str){return str.replace(/^\s+|\s+$/g,"");}
function showHint(field, hint) {
	//alert(hint);
	var divhint = document.createElement('DIV');
	divhint.innerHTML= hint;
	divhint.style.position='absolute';
	divhint.style.display='inline';
	//alert(findPosY(field));
	//divhint.style.top=findPosY(field);//+15;
	divhint.className = 'bar';
	field.parentNode.appendChild(divhint);
}
function removeHint(field) {field.parentNode.removeChild(field.parentNode.lastChild);}
function findPosX(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;
  }
function findPosY(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;
  }
function xznRefresh( nses, lastupd ) {
	if (_isAJAX) {
		if(window.jsonrpc.xazanses == undefined){
			alert('Tempo de Inatividade invalidou este browser.\nFeche e abra outro.');	
			//loadJSON();
		}
		else
		if ( lastupd != jsonrpc.xazanses.getSisVal(nses, 'last_update') )
				location.reload( true );
				
	}
}
function  xznSetVals(corObrig1, corObrig2, corNaoObrig1, corNaoObrig2, nses, isAjax) {

	obrig = corObrig2;
	naoobrig = corNaoObrig2;
	vetX = [corObrig1,corObrig2,corNaoObrig1,corNaoObrig2];
	vetX[corObrig1] = obrig;
	vetX[obrig] = obrig ;
	vetX[corNaoObrig2] = corNaoObrig2;
	vetX[corNaoObrig1] = corNaoObrig2;
	//_ses = nses; //sessao xazan
	_isAJAX = isAjax; //se usa AJAX 
	val; //controla mudança de valor
	document.onkeyup=keyAcel;
	if(_isAJAX)
		eval('xznRefresh( nses, lastupdate );' );

	xznRefresh( nses, lastupdate );
}
function xznInit( sis, nses, lastupd ) {
	//xznRefresh( nses, lastupd );
	//jsonrpc.xazanses.getSisVal(nses, 'last_update');
	if(!_isAJAX) return;
	window.onunload=winUnload;
	var ppAc = jsonrpc.xazanses.getSesVal(_ses+'', '_prevPagAcum');

	if( (ppAc+'') != 'null') {
		var pags = ppAc.substring(tok.length).split(tok);
		if((pags.length>0)&&
		   (pags[pags.length-1]==location.search)) {// reload
			var pp = jsonrpc.xazanses.getSesVal(_ses+'', '_prevPag');
			ppAc = ppAc.substring(0, (ppAc.length - (pp.length+tok.length) ) ); //extract last from history
			jsonrpc.xazanses.setSesVal(_ses+'','_prevPagAcum', ppAc ); // reset history
			if(pags.length>1)
				pp = pags[pags.length-2]; //and previous page
			else
				pp = 'null';
			jsonrpc.xazanses.setSesVal(_ses+'','_prevPag', pp ); //and previous page
		}
		else
		if((pags.length>1)&&
		   (pags[pags.length-2]==location.search)) {// voltou
			var pp = jsonrpc.xazanses.getSesVal(_ses+'', '_prevPag');
			ppAc = ppAc.substring(0, (ppAc.length - (pp.length+tok.length) - (pags[pags.length-2].length+tok.length) ) ); //extract last 2 from history
			jsonrpc.xazanses.setSesVal(_ses+'','_prevPagAcum', ppAc ); // reset history
			if(pags.length>2)
				pp = pags[pags.length-3]; //and previous page
			else
				pp = 'null';
			jsonrpc.xazanses.setSesVal(_ses+'','_prevPag', pp); //and previous page
		}
			
	}
	
}
function winUnload() {
if(!_isAJAX) return;
try {
	jsonrpc.xazanses.setSesVal(_ses+'','_prevPag', location.search );
	var ppAc = jsonrpc.xazanses.getSesVal(_ses+'', '_prevPagAcum');
	if(ppAc+''=='null')ppAc='';
	ppAc+=tok+location.search;
	jsonrpc.xazanses.setSesVal(_ses+'','_prevPagAcum', ppAc );
	var ppHist = jsonrpc.xazanses.getSesVal(_ses+'', '_histPags');
	if(ppHist+''=='null')ppHist='';
	if(ppHist.indexOf(location.search)<0) {
		ppHist+=tok+location.search;
		jsonrpc.xazanses.setSesVal(_ses+'','_histPags', ppHist );
	}
} catch (e) {}
//return true;
}
var formSubmitted = false;
function ctrSubmit( form ) {
	if(!submitted)
		if(formSubmitted) {alert('processando... aguarde.'); return false;} //double click;
	formSubmitted=true;
    if  ( _isAJAX )  {
			jsonrpc.xazanses.setSesVal(_ses+'', '_curForm', form.action  );
			jsonrpc.xazanses.setSesVal(_ses+'', '_prevPag', document.location.search  );
	}
	
	if (form.action.indexOf('_replaceLocation=1') >= 0) { 
		if (form.action.indexOf('?')<0) form.action+='?'; else form.action+='&';
		for(var i = 0; i < form.elements.length; i++)
		 if( (form.elements[i].type!='radio') || (form.elements[i].checked))
			form.action+=form.elements[i].name+'='+form.elements[i].value+'&';
		document.location.replace( form.action ); 
		return false;
	}
	return true;
}
function getXY(e){
	if (document.all) { 
		tempX = event.clientX + document.body.scrollLeft;
		tempY = event.clientY + document.body.scrollTop;
	  } else {  
		tempX = e.pageX;
		tempY = e.pageY;
	  }  
	  // catch possible negative values in NS4
	  if (tempX < 0){tempX = 0}
	  if (tempY < 0){tempY = 0}
	  pagX = tempX;
	  pagY = tempY;		
}
function checkNum(field)  {
		  if((field.name=='')||(field.value=='null'))		 
		     return true;
		  var partes = field.name.split('__');
		  if(partes.length<2) return true;
		  var point='1';
		  var comma='2';
		  var format='numerico';
		  var tip = partes[1];
		  if ((tip=='numeric') || (tip=='float') || (tip=='money') || (tip=='decimal') ) {
		  	  point='.';
			  comma=',';
		  }
		  else
		  if(tip!='int')
		     return true;
		  else
 		     format='inteiro';	 
			 
          var value = field.value; //get characters
	  
          //check that all characters are digits, ., -, or ""
          for(var i=0;i < field.value.length; ++i)
          {
               var new_key = value.charAt(i); //cycle through characters
               if(((new_key < "0") || (new_key > "9")) && 
                    !(new_key == "") && !(new_key == point) && !(new_key == comma))
               {
                    alert('valor deve ser '+format+' ('+field.value+'?).');
					field.value='';
                    return false;
               }
          }
		  return true;	
     }

   function dumpProps(obj, parent) {
         // Go through all the properties of the passed-in object
      for (var i in obj) {
		  // if a parent (2nd parameter) was passed in, then use that to
		  // build the message. Message includes i (the object's property name)
		  // then the object's property value on a new line
		  if (parent) { var msg = parent + "." + i + "\n" + obj[i]; } else { var msg = i + "\n" + obj[i]; }
		  // Display the message. If the user clicks "OK", then continue. If they
		  // click "CANCEL" then quit this level of recursion
		  if (!confirm(msg)) { return; }
		  // If this property (i) is an object, then recursively process the object
		  if (typeof obj[i] == "object") {
		  	if (parent) { dumpProps(obj[i], parent + "." + i); } else { dumpProps(obj[i], i); }
		  }
      }
   }
