function imageViewer(id) {
	window.open("imageviewer.php?id="+id,"ImageViewer","width=1010, height=700, location=0, status=0, scrollbars=1");
}

function thumbViewer(idmodule,id,module,field,moduleimage) {
	window.open("thumbviewer.php?idModule="+idmodule+"&id="+id+"&module="+module+"&field="+field+"&moduleimage="+moduleimage,"ThumbViewer","width=1010, height=700, location=0, status=0, scrollbars=1");
}

function thumbViewerSite(idmodule,id,module,field,moduleimage) {
	window.open("../admin2/thumbviewer.php?idModule="+idmodule+"&id="+id+"&module="+module+"&field="+field+"&moduleimage="+moduleimage,"ThumbViewer","width=1010, height=700, location=0, status=0, scrollbars=1");
}

function ajaxpage(url, containerid){
	var page_request = false
	if (window.XMLHttpRequest) // if Mozilla, Safari etc
		page_request = new XMLHttpRequest()
	else if (window.ActiveXObject){ // if IE
		try {
			page_request = new ActiveXObject("Msxml2.XMLHTTP")
		} 
		catch (e){
			try{
				page_request = new ActiveXObject("Microsoft.XMLHTTP")
			}
			catch (e){}
		}
	}
	else
		return false

	page_request.onreadystatechange=function(){
		loadpage(page_request, containerid)
	}

	page_request.open('GET', url, true)

	page_request.send(null)
}


function loadpage(page_request, containerid){
	if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
		document.getElementById(containerid).innerHTML=page_request.responseText
}


function getStyle(layerName)
{
	var temp = document.getElementById(layerName).style.visibility;

	return temp;
}

function checkOne(field)
{
	document.getElementById(field).checked = (document.getElementById(field).checked)?false:true;
}

function uncheckOne(field)
{
	for (i = 0; i < field.length; i++)
	field[i].checked = false ;
}


function checkAll(field,tmForm)
{
	for (i = 0; i < field.length; i++)
	field[i].checked = true;
}

function uncheckAll(field,tmForm)
{
	for (i = 0; i < field.length; i++)
	field[i].checked = false;
}

function toggleAll(field,tmForm)
{
	for (i = 0; i < field.length; i++)
	field[i].checked = (field[i].checked) ? false : true;
}

function popLayer(layerName)
{

	var current = getStyle(layerName);

	if( current == "visible" )
	{
		document.getElementById(layerName).style.visibility = "hidden";
		document.getElementById(layerName).style.position = "absolute";
	}
	else
	{
		document.getElementById(layerName).style.visibility = "visible";
		document.getElementById(layerName).style.position = "relative";
	}
}

function popLayerMenu(layerName)
{

	var current = getStyle(layerName);

	if( current == "visible" )
	{
		document.getElementById(layerName).style.visibility = "hidden";
		document.getElementById(layerName).style.position = "absolute";
	}
	else
	{
		document.getElementById(layerName).style.visibility = "visible";
		document.getElementById(layerName).style.position = "relative";
	}
}


function ajaxPlay(file, layerName) {
     var xmlHttpReq = false;
     // Mozilla/Safari
     if (window.XMLHttpRequest) {
         xmlHttpReq = new XMLHttpRequest();
         if (xmlHttpReq.overrideMimeType) {
             xmlHttpReq.overrideMimeType('text/xml');
             // See note below about this line
         }
     // IE
     } else if (window.ActiveXObject) { // IE
         try {
             xmlHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (e) {
         try {
             xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
         } catch (e) {}
         }
     }
     if (!xmlHttpReq) {
         alert('ERROR AJAX:( Cannot create an XMLHTTP instance');
         return false;
     }   
     xmlHttpReq.open('GET', 'tools/ajaxplay.php?file=' + file, true);
     xmlHttpReq.setRequestHeader('Content-Type', 
         'application/x-www-form-urlencoded');        
     xmlHttpReq.onreadystatechange = function() { 
         callBackFunction(xmlHttpReq,layerName); 
     };
     xmlHttpReq.send("");
}
         

function callBackFunction(http_request,layerName) {
     if (http_request.readyState == 4) {
         if (http_request.status == 200) {
             var responceString = http_request.responseText;
             //TODO implement your function e.g.
             document.getElementById(layerName).innerHTML = responceString;
         } else {
             alert('ERROR: AJAX request status = ' + http_request.status);
         }
     }
}



function ajaxSelectListDelay(layerName,path,table,searchText,searchField,fieldReturn,fieldID,fieldDesc,where) {
	// Create a function to get the search results
	var func = function() { ajaxSelectList(layerName,path,table,searchText,searchField,fieldReturn,fieldID,fieldDesc,where); };

	// Check to see if there is already a timeout and if so...
	// ...cancel it and create a new one
	var element = document.getElementById("searchText_"+layerName);
	if ( element.zid ) {
		clearTimeout(element.zid);
	}
	element.zid = setTimeout(func,500);

}


function callBackFunctionSelectList(http_request,layerName,field) {
     if (http_request.readyState == 4) {
         if (http_request.status == 200) {
             var responceString = http_request.responseText;
             //TODO implement your function e.g.
             document.getElementById(layerName).innerHTML = responceString;
             document.getElementById(field).focus();
         } else {
             alert('ERROR: AJAX request status = ' + http_request.status);
         }
     }
}

function ajaxSelectListSetValue(field,value) {
	document.getElementById("layer_"+field).style.display = 'none';
	document.getElementById(field).value = value;
	
}

function ajaxSelectList(layerName,path,table,searchText,searchField,fieldReturn,fieldID,fieldDesc,where) {
	
	
     var xmlHttpReq = false;
     // Mozilla/Safari
     if (window.XMLHttpRequest) {
         xmlHttpReq = new XMLHttpRequest();
         if (xmlHttpReq.overrideMimeType) {
             xmlHttpReq.overrideMimeType('text/xml');
             // See note below about this line
         }
     // IE
     } else if (window.ActiveXObject) { // IE
         try {
             xmlHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (e) {
         try {
             xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
         } catch (e) {}
         }
     }
     if (!xmlHttpReq) {
         alert('ERROR AJAX:( Cannot create an XMLHTTP instance');
         return false;
     }
     document.getElementById(layerName).style.display = "block";
     
     xmlHttpReq.open('GET', path+'/index.php?component=selectList&layername='+layerName+'&table='+table+'&searchText='+searchText+'&searchField='+searchField+'&fieldReturn='+fieldReturn+'&fieldDesc='+fieldDesc+'&fieldID='+fieldID+'&where='+where, true);
     xmlHttpReq.setRequestHeader('Content-Type', 
         'application/x-www-form-urlencoded');        
     xmlHttpReq.onreadystatechange = function() { 
         callBackFunctionSelectList(xmlHttpReq,layerName,"searchText_"+layerName); 
     };
     xmlHttpReq.send("");
}
 
function placeFocus() {
	if (document.forms.length > 0) {
		for (x = 0; x < document.forms.length; x++) {
			var field = document.forms[x];
			for (i = 0; i < field.length; i++) {
				if ((field.elements[i].type == "text") || (field.elements[i].type == "textarea") || (field.elements[i].type.toString().charAt(0) == "s")) {
					if(document.forms[x].elements[i].tabIndex && document.forms[x].elements[i].tabIndex >0) {
						document.forms[x].elements[i].focus();
					}
					break;
		      }
	   	}
		}
   }
}

// ---------------------------
// --- Browser Support Code
// ---------------------------
function getHTTPObject() {
 var xmlHttp=null;
 try {
   // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
 }
 catch (e) {
    // Internet Explorer
    try {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e) {
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
 }
	return xmlHttp;
}

// ---------------------------
// --- Browser Support Code
// ---------------------------
function GetXmlHttpObject() {
 var xmlHttp=null;
 try {
   // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
 }
 catch (e) {
    // Internet Explorer
    try {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e) {
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
 }
return xmlHttp;
}
 
var ajaxRequest = new Array();
// ---------------------------
// --- ajaxAddOther
// ---------------------------
function doAjaxDelay(path,component,module,field,table,fieldID,searchField,searchType,preValue,layerID,where) {
	// Create a function to get the search results
	var func = function() { doAjax(path,component,module,field,table,fieldID,searchField,searchType,preValue,layerID,where); };

	// Check to see if there is already a timeout and if so...
	// ...cancel it and create a new one
	var element = document.getElementById(layerID);
	if ( element.zid ) {
		clearTimeout(element.zid);
	}
	element.zid = setTimeout(func,500);

}

function doAjax(path,component,module,field,table,fieldID,searchField,searchType,preValue,layerID,where){
 
 	ajaxRequest[module]=GetXmlHttpObject();
 	if (ajaxRequest[module]==null) {
   	    alert ("Your browser does not support AJAX!");
      	 return;
 	}
 
 	if(preValue) {
	 	// Create a function that will receive data sent from the server
	 	ajaxRequest[module].onreadystatechange=function() {
	 		
		 	if(ajaxRequest[module].readyState==4) {
				var split = ajaxRequest[module].responseText.split(";");
				var otherid = split[0];
				var combo = document.getElementById(layerID);
				combo.options.length = 0;
				var response = ajaxRequest[module].responseText;
				var items = response.split(";");
				var count = (items.length-1);
				for (var i=0;i<count;i++){
					var options = items[i].split("|");
					combo.options[i] = new Option(trim(options[1]),options[0]);
				}

		 	}
	 	}
	 
	 	var tmpValue = document.getElementById("ajax_"+layerID).value;
	 	
	 	if(preValue) tmpValue = preValue;
	 	
		var url = path+"/index.php?component="+component+"&module="+module+"&field="+field+"&table="+table+"&fieldID="+fieldID+"&searchField="+searchField+"&searchType="+searchType+"&value="+tmpValue+"&where='"+where+"'";
		ajaxRequest[module].open("GET",url,true);
		ajaxRequest[module].send(null);
 	}
}


function doAjaxClickToCall(path,component,src,dst,cid,type,id,idUser){
 
 	ajaxRequest=GetXmlHttpObject();
 	if (ajaxRequest==null) {
   	    alert ("Your browser does not support AJAX!");
      	 return;
 	}
 
 	// Create a function that will receive data sent from the server
 	ajaxRequest.onreadystatechange=function() {
 		
	 	if(ajaxRequest.readyState==4) {
	 		// ok
	 	}
 	}
 
	var url = path+"/index.php?component="+component+"&type="+type+"&id="+id+"&source="+src+"&destination="+dst+"&callerid="+cid+"&idUser="+idUser;
	ajaxRequest.open("GET",url,true);
	ajaxRequest.send(null);
}


function doAjaxPermission(path,component,module,action,type){
 
 	ajaxRequest=GetXmlHttpObject();
 	if (ajaxRequest==null) {
   	    alert ("Your browser does not support AJAX!");
      	 return;
 	}
 
 	// Create a function that will receive data sent from the server
 	ajaxRequest.onreadystatechange=function() {
 		
	 	if(ajaxRequest.readyState==4) {
	 		// ok
	 	}
 	}
 
	var url = path+"/index.php?component="+component+"&module="+module+"&action="+action+"&tipo="+type;
	ajaxRequest.open("GET",url,true);
	ajaxRequest.send(null);
}


function trim(str) {
	return str.replace(/^\s+|\s+$/g,"");
}

function currencyFormat(fld, milSep, decSep, e) {
  var sep = 0;
  var key = '';
  var i = j = 0;
  var len = len2 = 0;
  var strCheck = '0123456789';
  var aux = aux2 = '';
  var whichCode = (window.Event) ? e.which : e.keyCode;

  if (whichCode == 0) return true;  // Enter
  if (whichCode == 13) return true;  // Enter
  if (whichCode == 8) return true;  // Delete
  key = String.fromCharCode(whichCode);  // Get key value from key code
  if (strCheck.indexOf(key) == -1) return false;  // Not a valid key
  len = fld.value.length;
  for(i = 0; i < len; i++)
  if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
  aux = '';
  for(; i < len; i++)
  if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
  aux += key;
  len = aux.length;
  if (len == 0) fld.value = '';
  if (len == 1) fld.value = '0'+ decSep + '0' + aux;
  if (len == 2) fld.value = '0'+ decSep + aux;
  if (len > 2) {
    aux2 = '';
    for (j = 0, i = len - 3; i >= 0; i--) {
      if (j == 3) {
        aux2 += milSep;
        j = 0;
      }
      aux2 += aux.charAt(i);
      j++;
    }
    fld.value = '';
    len2 = aux2.length;
    for (i = len2 - 1; i >= 0; i--)
    fld.value += aux2.charAt(i);
    fld.value += decSep + aux.substr(len - 2, len);
  }
  return false;
}

function swapVisDiv(layer,visible) {
	
	imgLayer = "img"+layer;
	//safe function to hide an element with a specified id
	if (document.getElementById(layer)) { // DOM3 = IE5, NS6
		if(document.getElementById(layer).style.display == "block") {
			document.getElementById(layer).style.display = "none";
			document.getElementById(imgLayer).src = "images/arrow_invisible.gif";
		}
		else if(document.getElementById(layer).style.display == "") {
			if(visible=="false") {
				document.getElementById(imgLayer).src = "images/arrow_visible.gif";
				document.getElementById(layer).style.display = "block";
			}
			else {
				document.getElementById(imgLayer).src = "images/arrow_invisible.gif";
				document.getElementById(layer).style.display = "none";
			}
		}
		else {
			document.getElementById(imgLayer).src = "images/arrow_visible.gif";
			document.getElementById(layer).style.display = "block";
		}
	}
	else {  
		if(document.layer.display == "block") {
			document.layer.display = "none";
			document.imgLayer.src = "images/arrow_visible.gif";
		}
		else if(document.layer.display == "") {
			document.layer.display = "none";
			document.imgLayer.src = "images/arrow_invisible.gif";
		}
		else {
			document.layer.display = "block";
			document.imgLayer.src = "images/arrow_visible.gif";
		}
	}
}


function abaSwapVisDiv(layer,visible) {
	
	imgLayer = "img"+layer;
	//safe function to hide an element with a specified id
	if (document.getElementById(layer)) { // DOM3 = IE5, NS6
		if(document.getElementById(layer).style.display == "block") {
			document.getElementById(layer).style.display = "none";
			document.getElementById(imgLayer).src = "images/arrow_invisible.gif";
		}
		else if(document.getElementById(layer).style.display == "") {
			if(visible=="false") {
				document.getElementById(imgLayer).src = "images/arrow_visible.gif";
				document.getElementById(layer).style.display = "block";
			}
			else {
				document.getElementById(imgLayer).src = "images/arrow_invisible.gif";
				document.getElementById(layer).style.display = "none";
			}
		}
		else {
			document.getElementById(imgLayer).src = "images/arrow_visible.gif";
			document.getElementById(layer).style.display = "block";
		}
	}
	else {  
		if(document.getElementById(layer).display == "block") {
			document.getElementById(layer).display = "none";
			document.imgLayer.src = "images/arrow_visible.gif";
		}
		else if(document.getElementById(layer).display == "") {
			document.getElementById(layer).display = "none";
			document.imgLayer.src = "images/arrow_invisible.gif";
		}
		else {
			document.getElementById(layer).display = "block";
			document.imgLayer.src = "images/arrow_visible.gif";
		}
	}
}



function abaShow(layer,visible) {
	
	imgLayer = "img"+layer;
	//safe function to hide an element with a specified id
	if (document.getElementById(layer)) { // DOM3 = IE5, NS6
		if(visible=="false") {
			if(document.getElementById(imgLayer)) document.getElementById(imgLayer).src = "images/arrow_invisible.gif";
			document.getElementById(layer).style.display = "none";
		}
		else {
			if(document.getElementById(imgLayer)) document.getElementById(imgLayer).src = "images/arrow_visible.gif";
			document.getElementById(layer).style.display = "block";
		}
	}
	else {  
		
		if(visible=="false") {
			document.getElementById(layer).display = "block";
			if(document.getElementById(imgLayer)) document.imgLayer.src = "images/arrow_visible.gif";
		}
		else {
			document.getElementById(layer).display = "none";
			if(document.getElementById(imgLayer)) document.imgLayer.src = "images/arrow_visible.gif";
		}
	}
}



var layerAnt = "";
var imglayerAnt = "";

function swapVisMenu(layer,visible) {

	imgLayer = "img"+layer;
	
	//safe function to hide an element with a specified id
	if (document.getElementById(layer)) { // DOM3 = IE5, NS6
		if(document.getElementById(layer).style.display == "block") {
			document.getElementById(layer).style.display = "none";
			document.getElementById(imgLayer).src = "images/arrow_invisible.gif";
			
			if(layerAnt != ""  && layer != layerAnt) {
				document.getElementById(layerAnt).style.display = "none";
				document.getElementById(imgLayerAnt).src = "images/arrow_invisible.gif";
			}
			
		}
		else if(document.getElementById(layer).style.display == "") {
			if(visible=="false") {
				document.getElementById(imgLayer).src = "images/arrow_visible.gif";
				document.getElementById(layer).style.display = "block";
				
				if(layerAnt != ""  && layer != layerAnt) {
					document.getElementById(layerAnt).style.display = "none";
					document.getElementById(imgLayerAnt).src = "images/arrow_invisible.gif";
				}
			}
			else {
				document.getElementById(imgLayer).src = "images/arrow_invisible.gif";
				document.getElementById(layer).style.display = "none";
				
				if(layerAnt != ""  && layer != layerAnt) {
					document.getElementById(layerAnt).style.display = "none";
					document.getElementById(imgLayerAnt).src = "images/arrow_invisible.gif";
				}
				
			}
		}
		else {
			document.getElementById(imgLayer).src = "images/arrow_visible.gif";
			document.getElementById(layer).style.display = "block";
			
			if(layerAnt != "" && layer != layerAnt) {
				document.getElementById(layerAnt).style.display = "none";
				document.getElementById(imgLayerAnt).src = "images/arrow_invisible.gif";
			}

		}
	}
	else {  
		if(document.layer.display == "block") {
			document.layer.display = "none";
			document.imgLayer.src = "images/arrow_visible.gif";
			
			if(layerAnt != "" && layer != layerAnt) {
				document.layerAnt.display = "none";
				document.imgLayerAnt.src = "images/arrow_invisible.gif";
			}
		}
		else if(document.layer.display == "") {
			document.layer.display = "none";
			document.imgLayer.src = "images/arrow_invisible.gif";
			if(layerAnt != "" && layer != layerAnt) {
				document.layerAnt.display = "none";
				document.imgLayerAnt.src = "images/arrow_invisible.gif";
			}
		}
		else {
			document.layer.display = "block";
			document.imgLayer.src = "images/arrow_visible.gif";
			if(layerAnt != "" && layer != layerAnt) {
				document.layerAnt.display = "none";
				document.imgLayerAnt.src = "images/arrow_invisible.gif";
			}
		}
	}
	
	layerAnt = layer;
	imgLayerAnt = "img"+layerAnt;
	
}


function formatCNPJ( el ) { 
	vr = el.value;
	tam = vr.length;
 
	if ( vr.indexOf(".") == -1 ) {
		if ( tam <= 2 )
			el.value = vr;

		if ( (tam > 2) && (tam <= 6) )
			el.value = vr.substr( 0, 2 ) + '.' + vr.substr( 2, tam );

		if ( (tam >= 7) && (tam <= 10) )
			el.value = vr.substr( 0, 2 ) + '.' + vr.substr( 2, 3 ) + '.' + vr.substr( 5, 3 ) + '/';
 
		if ( (tam >= 11) && (tam <= 18) )
			el.value = vr.substr( 0, 2 ) + '.' + vr.substr( 2, 3 ) + '.' + vr.substr( 5, 3 ) + '/' + vr.substr( 8, 4 ) + '-' + vr.substr( 12, 2 ) ;
	}
 
	return true;

} 



function formatDate(obj) {

	var er = /\//g;
	
	data = obj.value;
	
	data=data.replace(er,'');
	
	if(data && !isNaN(data)) {
		
		dia=data.substr(0,2);
		mes=data.substr(2,2);
		ano=data.substr(4,4);
		
		dataFormat=dia+'/'+mes+'/'+ano;
		
		if( !dia || !mes || !ano || (dia <= 0 || dia > 31) || (mes <=0 || mes > 12) || (ano < 1900) ) {
			alert('Data inválida');
			
			obj.value='';
			obj.focus();
			return false;
		}
		else {
			obj.value=dataFormat;
		}
	}
	else if(data && isNaN(data)) {
		alert('Data Inválida');
		
		obj.value='';
		obj.focus();
	}
}


/**************************************************
 * dom-drag.js
 * 09.25.2001
 * www.youngpup.net
 **************************************************
 * 10.28.2001 - fixed minor bug where events
 * sometimes fired off the handle, not the root.
 **************************************************/

var Drag = {

	obj : null,

	init : function(o, oRoot, minX, maxX, minY, maxY, bSwapHorzRef, bSwapVertRef, fXMapper, fYMapper)
	{
		o.onmousedown	= Drag.start;

		o.hmode			= bSwapHorzRef ? false : true ;
		o.vmode			= bSwapVertRef ? false : true ;

		o.root = oRoot && oRoot != null ? oRoot : o ;

		if (o.hmode  && isNaN(parseInt(o.root.style.left  ))) o.root.style.left   = "0px";
		if (o.vmode  && isNaN(parseInt(o.root.style.top   ))) o.root.style.top    = "0px";
		if (!o.hmode && isNaN(parseInt(o.root.style.right ))) o.root.style.right  = "0px";
		if (!o.vmode && isNaN(parseInt(o.root.style.bottom))) o.root.style.bottom = "0px";

		o.minX	= typeof minX != 'undefined' ? minX : null;
		o.minY	= typeof minY != 'undefined' ? minY : null;
		o.maxX	= typeof maxX != 'undefined' ? maxX : null;
		o.maxY	= typeof maxY != 'undefined' ? maxY : null;

		o.xMapper = fXMapper ? fXMapper : null;
		o.yMapper = fYMapper ? fYMapper : null;

		o.root.onDragStart	= new Function();
		o.root.onDragEnd	= new Function();
		o.root.onDrag		= new Function();
	},

	start : function(e)
	{
		var o = Drag.obj = this;
		e = Drag.fixE(e);
		var y = parseInt(o.vmode ? o.root.style.top  : o.root.style.bottom);
		var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right );
		o.root.onDragStart(x, y);

		o.lastMouseX	= e.clientX;
		o.lastMouseY	= e.clientY;

		if (o.hmode) {
			if (o.minX != null)	o.minMouseX	= e.clientX - x + o.minX;
			if (o.maxX != null)	o.maxMouseX	= o.minMouseX + o.maxX - o.minX;
		} else {
			if (o.minX != null) o.maxMouseX = -o.minX + e.clientX + x;
			if (o.maxX != null) o.minMouseX = -o.maxX + e.clientX + x;
		}

		if (o.vmode) {
			if (o.minY != null)	o.minMouseY	= e.clientY - y + o.minY;
			if (o.maxY != null)	o.maxMouseY	= o.minMouseY + o.maxY - o.minY;
		} else {
			if (o.minY != null) o.maxMouseY = -o.minY + e.clientY + y;
			if (o.maxY != null) o.minMouseY = -o.maxY + e.clientY + y;
		}

		document.onmousemove	= Drag.drag;
		document.onmouseup		= Drag.end;

		return false;
	},

	drag : function(e)
	{
		e = Drag.fixE(e);
		var o = Drag.obj;

		var ey	= e.clientY;
		var ex	= e.clientX;
		var y = parseInt(o.vmode ? o.root.style.top  : o.root.style.bottom);
		var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right );
		var nx, ny;

		if (o.minX != null) ex = o.hmode ? Math.max(ex, o.minMouseX) : Math.min(ex, o.maxMouseX);
		if (o.maxX != null) ex = o.hmode ? Math.min(ex, o.maxMouseX) : Math.max(ex, o.minMouseX);
		if (o.minY != null) ey = o.vmode ? Math.max(ey, o.minMouseY) : Math.min(ey, o.maxMouseY);
		if (o.maxY != null) ey = o.vmode ? Math.min(ey, o.maxMouseY) : Math.max(ey, o.minMouseY);

		nx = x + ((ex - o.lastMouseX) * (o.hmode ? 1 : -1));
		ny = y + ((ey - o.lastMouseY) * (o.vmode ? 1 : -1));

		if (o.xMapper)		nx = o.xMapper(y)
		else if (o.yMapper)	ny = o.yMapper(x)

		Drag.obj.root.style[o.hmode ? "left" : "right"] = nx + "px";
		Drag.obj.root.style[o.vmode ? "top" : "bottom"] = ny + "px";
		Drag.obj.lastMouseX	= ex;
		Drag.obj.lastMouseY	= ey;

		Drag.obj.root.onDrag(nx, ny);
		return false;
	},

	end : function()
	{
		document.onmousemove = null;
		document.onmouseup   = null;
		Drag.obj.root.onDragEnd(	parseInt(Drag.obj.root.style[Drag.obj.hmode ? "left" : "right"]), 
									parseInt(Drag.obj.root.style[Drag.obj.vmode ? "top" : "bottom"]));
		Drag.obj = null;
	},

	fixE : function(e)
	{
		if (typeof e == 'undefined') e = window.event;
		if (typeof e.layerX == 'undefined') e.layerX = e.offsetX;
		if (typeof e.layerY == 'undefined') e.layerY = e.offsetY;
		return e;
	}
};

function viewDocument(fileName,description,extension,layer) {
	
	newFileName = fileName.replace(/%space%/g," ");
	newDescription = description.replace(/%space%/g," ");
	
	if(extension.toLowerCase() == "gif" || extension.toLowerCase() == "jpeg" || extension.toLowerCase() == "jpg" || extension.toLowerCase() == "png") {
		
		document.getElementById(layer).innerHTML = "<div style=\"float: left; background:url(tools/imageview.php?image=../" + newFileName + "&width=1200) no-repeat; border:1px solid gray; margin-right: 1em; margin-bottom: 0.25em;\">";
		document.getElementById(layer).innerHTML += "<img id='imgDoc' width=800 onLoad=\"initLoupe(this.id,true);\" src=tools/imageview.php?image=../" + newFileName + "&width=1600>";
		document.getElementById(layer).innerHTML += "</div>";
	}
	else {
		document.getElementById(layer).innerHTML = "<br><br><b>Download: </b><a href='" + newFileName + "'>" + newDescription + "</a>";
	}
	
}



//--------------
documentall = document.all;
/*
* função para formatação de valores monetários retirada de
* http://jonasgalvez.com/br/blog/2003-08/egocentrismo
*/

function formatamoney(c,decimals) {
    var t = this; if(c == undefined) c = 2;		
    var p, d = (t=t.split("."))[1].substr(0, c);
    for(p = (t=t[0]).length; (p-=3) >= 1;) {
	        t = t.substr(0,p) + "" + t.substr(p);
    }
    return t+","+d+Array(c+1-d.length).join(0);
}

String.prototype.formatCurrency=formatamoney

function demaskvalue(valor, currency, decimals){
	/*
	* Se currency é false, retorna o valor sem apenas com os números. Se é true, os dois últimos caracteres são considerados as 
	* casas decimais
	*/
	var val2 = '';
	var strCheck = '0123456789';
	var len = valor.length;
	
	if (len== 0){
		return 0.00;
	}

	if (currency ==true){	
		/* Elimina os zeros à esquerda 
		* a variável  <i> passa a ser a localização do primeiro caractere após os zeros e 
		* val2 contém os caracteres (descontando os zeros à esquerda)
		*/
		
		for(var i = 0; i < len; i++)
			if ((valor.charAt(i) != '0') && (valor.charAt(i) != ',')) break;
		
		for(; i < len; i++){
			if (strCheck.indexOf(valor.charAt(i))!=-1) val2+= valor.charAt(i);
		}

		if(decimals == 2) {
			if(val2.length==0)return "0.00";
			if(val2.length==1)return "0.0" + val2;
			if(val2.length==2)return "0." + val2;
		}
		if(decimals == 3) {
			if(val2.length==0)return "0.000";
			if(val2.length==1)return "0.00" + val2;
			if(val2.length==2)return "0.0" + val2;
			if(val2.length==3)return "0." + val2;
		}
		if(decimals == 4) {
			if(val2.length==0)return "0.0000";
			if(val2.length==1)return "0.000" + val2;
			if(val2.length==2)return "0.00" + val2;
			if(val2.length==3)return "0.0" + val2;
			if(val2.length==4)return "0." + val2;
		}
		if(decimals == 5) {
			if(val2.length==0)return "0.00000";
			if(val2.length==1)return "0.0000" + val2;
			if(val2.length==2)return "0.000" + val2;
			if(val2.length==3)return "0.00" + val2;
			if(val2.length==4)return "0.0" + val2;
			if(val2.length==5)return "0." + val2;
		}
		
		var parte1 = val2.substring(0,val2.length-(decimals));
		var parte2 = val2.substring(val2.length-(decimals));
		var returnvalue = parte1 + "." + parte2;
		return returnvalue;
		
	}
	else{
		/* currency é false: retornamos os valores COM os zeros à esquerda, 
		* sem considerar os últimos 2 algarismos como casas decimais 
		*/
		val3 ="";
		for(var k=0; k < len; k++){
			if (strCheck.indexOf(valor.charAt(k))!=-1) val3+= valor.charAt(k);
		}
		return val3;
	}
}

function reais(obj,event,decimals){

	var whichCode = (window.Event) ? event.which : event.keyCode;
	/*
	Executa a formatação após o backspace nos navegadores !document.all
	*/
	if (whichCode == 8 && !documentall) {	
	/*
	Previne a ação padrão nos navegadores
	*/
	if (event.preventDefault){ //standart browsers
			event.preventDefault();
		}
		else{ // internet explorer
			event.returnValue = false;
		}
		var valor = obj.value;
		var x = valor.substring(0,valor.length-1);
		obj.value = demaskvalue(x,true,decimals).formatCurrency(decimals);
		return false;
	}
	/*
	Executa o Formata Reais e faz o format currency novamente após o backspace
	*/
	FormataReais(obj,'.',',',event,decimals);
} // end reais


function backspace(obj,event,decimals){
	/*
	Essa função basicamente altera o  backspace nos input com máscara reais para os navegadores IE e opera.
	O IE não detecta o keycode 8 no evento keypress, por isso, tratamos no keydown.
	Como o opera suporta o infame document.all, tratamos dele na mesma parte do código.
	*/

	var whichCode = (window.Event) ? event.which : event.keyCode;
	if (whichCode == 8 && documentall) {	
		var valor = obj.value;
		var x = valor.substring(0,valor.length-1);
		var y = demaskvalue(x,true,decimals).formatCurrency(decimals);
	
		obj.value =""; //necessário para o opera
		obj.value += y;
	
		if (event.preventDefault){ //standart browsers
			event.preventDefault();
		}else{ // internet explorer
			event.returnValue = false;
		}
		return false;

	}// end if		
}// end backspace

function FormataReais(fld, milSep, decSep, e,decimals) {
	var sep = 0;
	var key = '';
	var i = j = 0;
	var len = len2 = 0;
	var strCheck = '0123456789';
	var aux = aux2 = '';
	var whichCode = (window.Event) ? e.which : e.keyCode;
	
	//if (whichCode == 8 ) return true; //backspace - estamos tratando disso em outra função no keydown
	if (whichCode == 0 ) return true;
	if (whichCode == 9 ) return true; //tecla tab
	if (whichCode == 13) return true; //tecla enter
	if (whichCode == 16) return true; //shift internet explorer
	if (whichCode == 17) return true; //control no internet explorer
	if (whichCode == 27 ) return true; //tecla esc
	if (whichCode == 34 ) return true; //tecla end
	if (whichCode == 35 ) return true;//tecla end
	if (whichCode == 36 ) return true; //tecla home
	
	/*
	O trecho abaixo previne a ação padrão nos navegadores. Não estamos inserindo o caractere normalmente, mas via script
	*/
	
	if (e.preventDefault){ //standart browsers
		e.preventDefault()
	}else{ // internet explorer
		e.returnValue = false
	}

	var key = String.fromCharCode(whichCode);  // Valor para o código da Chave
	if (strCheck.indexOf(key) == -1) return false;  // Chave inválida
	
	/*
	Concatenamos ao value o keycode de key, se esse for um número
	*/
	fld.value += key;
	
	var len = fld.value.length;
	var bodeaux = demaskvalue(fld.value,true,decimals).formatCurrency(decimals);
	fld.value=bodeaux;
	
	/*
	Essa parte da função tão somente move o cursor para o final no opera. Atualmente não existe como movê-lo no konqueror.
	*/
	if (fld.createTextRange) {
		var range = fld.createTextRange();
		range.collapse(false);
		range.select();
	}
	else if (fld.setSelectionRange) {
		fld.focus();
		var length = fld.value.length;
		fld.setSelectionRange(length, length);
	}
	
	return false;
}


function checkSubmit(obj,event) {

	// assign our form to object f
	var f = document.forms.searchForm;
	
	var whichCode = (window.Event) ? event.which : event.keyCode;
	if (whichCode == 13) {
		// disable the submit button (not an actual submit button, but our button)
		f.searchBntAction.disabled = true;
		
		// submit the form
		f.submit();
	}
}

function mascara(o,f){
    v_obj=o
    v_fun=f
    setTimeout("execmascara()",1)
}

function execmascara(){
    v_obj.value=v_fun(v_obj.value)
}

function leech(v){
    v=v.replace(/o/gi,"0")
    v=v.replace(/i/gi,"1")
    v=v.replace(/z/gi,"2")
    v=v.replace(/e/gi,"3")
    v=v.replace(/a/gi,"4")
    v=v.replace(/s/gi,"5")
    v=v.replace(/t/gi,"7")
    return v
}

function soNumeros(v){
    return v.replace(/\D/g,"")
}

function telefone(v){
    v=v.replace(/\D/g,"")                 //Remove tudo o que não é dígito
    v=v.replace(/^(\d\d)(\d)/g,"($1) $2") //Coloca parênteses em volta dos dois primeiros dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2")    //Coloca hífen entre o quarto e o quinto dígitos
    return v
}

function cpf(v){
    v=v.replace(/\D/g,"")                    //Remove tudo o que não é dígito
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
                                             //de novo (para o segundo bloco de números)
    v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2") //Coloca um hífen entre o terceiro e o quarto dígitos
    return v
}

function cep(v){
    v=v.replace(/D/g,"")                //Remove tudo o que não é dígito
    v=v.replace(/^(\d{5})(\d)/,"$1-$2") //Esse é tão fácil que não merece explicações
    return v
}

function cnpj(v){
    v=v.replace(/\D/g,"")                           //Remove tudo o que não é dígito
    v=v.replace(/^(\d{2})(\d)/,"$1.$2")             //Coloca ponto entre o segundo e o terceiro dígitos
    v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3") //Coloca ponto entre o quinto e o sexto dígitos
    v=v.replace(/\.(\d{3})(\d)/,".$1/$2")           //Coloca uma barra entre o oitavo e o nono dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2")              //Coloca um hífen depois do bloco de quatro dígitos
    return v
}

