Date.prototype.format = function(str){return str.replace(/y+/ig,this.getFullYear()).replace(/m+/ig,this.getMonth()+1).replace(/d+/ig,this.getDate()).replace(/h+/ig,this.getHours()).replace(/n+/ig,this.getMinutes()).replace(/s+/ig,this.getSeconds())}
var reqMessage;
var reqMail;
currContextChanged=false;
function CApp()
{
	
	var pMain = null;
	
	try
	{
		if(self == top)
			pMain = self;
		else
			pMain = top;
	}
	catch(e){}

	this.loadDoc = function(sUrl,bKeepList)
	{
		try{
		pMain.appLoadDoc(sUrl,bKeepList)
		}catch(e){}
	}
	
	this.openDialog = function(sUrl,request, vars, params )
	{
		
		/*if(window.event)
		{
			return top.window.showModalDialog('Dialog.aspx?'+request+'&'+sUrl,vars,((params)?params:'dialogHeight:300px; dialogWidth:765px;edge:Raized;center:Yes;help:No;resizable:yes;status:no;'));
		}
		else
		{*/
			return top.window.open('Dialog.aspx?'+request+'&'+sUrl,'_blank',((params)?params.replace(/;/g,',').replace(/:/g,'=').replace(/dialog/ig,'').replace(/bars/ig,''):'Height:300px, Width:765px,edge:Raized,center:Yes,help:No,resizable:yes,status:no,'));
		//}
		
	}
	
	this.openContentDialog = function(sUrl,request, vars, params )
	{
		/*if(typeof(winRef)!='undefined' && !winRef.closed)
			winRef.Close();
		if(top.document.getElementById('oPane')==null)	
			createPane();*/
		
		winRef = top.window.open('Dialog.aspx?'+request+'&'+sUrl,'_blank',((params)?params.replace(/;/g,',').replace(/:/g,'=').replace(/dialog/ig,'').replace(/bars/ig,''):'Height:300px, Width:765px,edge:Raized,center:Yes,help:No,resizable:yes,status:no,modal=yes'));
		
		/*top.onbeforeunload=function()
		{
			if(typeof(winRef)!='undefined' && !winRef.closed)
				winRef.Close();	
		}*/
	}
	
	var winRef;
	function setChildFocus()
	{
		if(winRef && !winRef.closed)
		{
			winRef.focus();
			window.blur();
		}
		else
		{
			restoreMain();
		}
	}
	
	function createPane()
	{
		/*var oPane = top.document.createElement("DIV");	
		oPane.style.position = "absolute";
		
		oPane.setAttribute("className","invisible");
		oPane.setAttribute("class","invisible");
		
		oPane.style.top = "24px";
		oPane.style.left = 0;
		oPane.style.width = top.document.body.clientWidth;
		oPane.style.height = top.document.body.clientHeight;
		oPane.style.backgroundColor = "#FFFFFF";
		oPane.id = "oPane";
		oPane.onclick = setChildFocus;
		oPane.ondblclick=oPane.onclick;
			
		top.document.body.appendChild(oPane);*/
	}
				
	window.restoreMain=function()
	{
		//top.document.body.removeChild(top.document.getElementById('oPane'));
	}
	
	
	this.loadList = function(sUrl,bKeepDoc)
	{
		try{
		pMain.appLoadList(sUrl,bKeepDoc)
		}catch(e){}
	}
	this.setSection = function(sText)
	{
		try{
		pMain.appSetSection(sText)
		}catch(e){}
	}
	this.setPageHelp = function(sText)
	{
		
		try{
		pMain.appSetPageHelp(sText)
		}catch(e){}
	}
	this.setContextHelp = function(sText)
	{
		
		try{
		pMain.appSetContextHelp(sText)
		}catch(e){}
	}
	this.resetMenu = function()
	{
		try{
		pMain.appResetMenu()
		}catch(e){}
	}
	this.addMenu = function(sText,sLink)
	{
		try{
		pMain.appAddMenu(sText,sLink)
		}catch(e){}
	}
	
	this.reloadMenu=function(){
	pMain.appReloadMenu();
	}
	

}

var theApp = new CApp();


var nodeMap;
function mapAllNodes()
{
	nodeMap=null;
	var temp= new Array(document.body);	
	for(var i = 0; i< temp.length;i++)
	{
		if(temp[i].hasChildNodes)
		{
			for(var x=0; x<temp[i].childNodes.length;x++)
			{
				var node = temp[i].childNodes[x];
				if(node.tagName)
					temp.push(node);		
			}
		}
	}
	
	nodeMap=temp;
	delete temp;
}


function iniDynHelp()
{
	mapAllNodes();		
	for(var i = 0; i< nodeMap.length;i++)	
	{
		var pObj = nodeMap[i];
		if(pObj.getAttribute("help"))
		{
			if(pObj.tagName == 'BODY')
				theApp.setPageHelp(pObj.getAttribute("help"));
			else
			{
				pObj.onfocus = function(){theApp.setContextHelp(this.getAttribute("help"))}
				pObj.onmouseover = function(){theApp.setContextHelp(this.getAttribute("help"))}
				pObj.onblur = function(){theApp.setContextHelp()}
				pObj.onmouseout = function(){theApp.setContextHelp()}
			}
		}
	}
}

function iniDynHelpTags(sList)
{
	mapAllNodes();	
	var arrTags= sList.split(';');	
	
	for(var x=0; x<arrTags.length; x++)
	{
		arrObj=document.getElementsByTagName(arrTags[x]);
		for(var i = 0; i< arrObj.length;i++)	
		{
			if(arrObj[i].getAttribute("help"))
			{
				if(arrObj[i].tagName == 'BODY')
					theApp.setPageHelp(arrObj[i].getAttribute("help"));
				else
				{
					arrObj[i].onfocus = function(){theApp.setContextHelp(this.getAttribute("help"))}
					arrObj[i].onmouseover = function(){theApp.setContextHelp(this.getAttribute("help"))}
					arrObj[i].onblur = function(){theApp.setContextHelp()}
					arrObj[i].onmouseout = function(){theApp.setContextHelp()}
				}
			}
		}
	}
}

function setChangeCode()
{
	var inputs = new Array();
	var areas = new Array();
	
	inputs= document.getElementsByTagName('INPUT');
	areas= document.getElementsByTagName('TEXTAREA');	
		
	for(var x=0; x<inputs.length;x++){
		var elem= inputs[x];
		if(elem.type.toLowerCase()=="text"){
				elem.onchange=function(){
				setChanged();
			}
		}
		if(elem.type.toLowerCase()=="checkbox" || elem.type.toLowerCase()=="radio"){
			elem.onclick=function(){
				if(this.getAttribute('_onClick'))
					eval(this.getAttribute('_onClick'));
				setChanged();
			}	
		}
	}

	for(var y =0; y<areas.length; y++){
		var elem=areas[y];
		elem.onchange=function(){
			setChanged();
		}		
	}
}


function initIconButtons()
{
	mapAllNodes();
	
	for(var i = 0; i < nodeMap.length;i++)
	{
		var oElem = nodeMap[i];
		if(oElem.className == 'iconButton')
		{
			oElem.onmouseover = function(){this.className = 'iconButtonOver'}
			oElem.onmouseout = function(){this.className = 'iconButton'}
			oElem.onmousedown = function(){this.className = 'iconButton'}
			oElem.onmouseup = function(){this.className = 'iconButtonOver'}
		}
	}
}
var label;

function validLength(oObj, sMax){
		
		//only numbers
		if(oObj.getAttribute("onlyNumbers"))
		{
		var key=window.event.keyCode;
		var valor= oObj.value;
		
		if(key!=0)
		{
			if(key<48 || key>57)
			{
				if(key==44 || key==46)
				{
					if(oObj.getAttribute("onlyNumbers")!="noDot")
					{
						if(valor!='')
						{	
							if(valor.match(/\./)!=null)
							{
								window.event.returnValue=false;
							}
						}
						else
						{
							window.event.returnValue=false;
						}
					}
					else
					{
						window.event.returnValue=false;
					}
				}
				else
				{
					window.event.returnValue=false;
				}
			}
		}
		}
		//end only numbers

		if(oObj.value.length>parseInt(sMax)){
			var currLabel=label.replace('$num$',sMax);
			alert(currLabel);
			oObj.value=oObj.value.substring(0,(parseInt(sMax)));
		}
}

function setChanged()
{
	currContextChanged=true;
}

function doSubmit(frm){
	if(formValidation()){
		try{
			putOnPost();
		}
		catch(e)
		{}
		if (frm){
			frm.submit();
		}
		else
		{
			document.forms[0].submit();
		}
	}
}

function formValidation()
{
//as mensagens genéricas de validação são iniciadas em cada pagina
	var arrReq= new Array();
	var arrMail=new Array();
	var arrUrl = new Array();
	
	for(var x=0; x<nodeMap.length;x++)
	{
		var elem=nodeMap[x];
		if(elem.getAttribute("required"))
		{
			arrReq.push(elem);
		}
		if(elem.getAttribute("checkFor")=="mail")
		{
			arrMail.push(elem);
		}
		if(elem.getAttribute("checkFor")=="url")
		{
			arrUrl.push(elem);
		}
	}
		
	if(arrReq.length>0){
		for(var x=0; x<arrReq.length;x++){
			
			if(arrReq[x].value.length==0){
				var currMessage=reqMessage.replace('$field$',arrReq[x].getAttribute("label"));
				alert(currMessage);
				return false;
			}
		}

	}
	
	if(arrMail.length>0){
		for(var x=0; x<arrMail.length;x++){
			if(!CheckEmail(arrMail[x].value)){
				var currMessage=mailMessage.replace('$field$',arrMail[x].getAttribute("label"));
				alert(currMessage);
				return false;
			}
		}
	}
	
	if(arrUrl.length>0){
		for(var x=0; x<arrUrl.length;x++){
			if(!arrUrl[x].value.match(/^(http|ftp|https):\/\/+.*? /)){
				//arrUrl[x].value="http:\\\\"+arrUrl[x].value;
				/*			
				var currMessage=urlMessage.replace('$field$',arrUrl[x].getAttribute("label"));
				alert(currMessage);
				return false;*/
			}
			
			var reg= new RegExp(/^(http|ftp|https):\/\/+.*?/);
			if(arrUrl[x].value!="" && !arrUrl[x].value.match(reg)){
				if(arrUrl[x].value.match(/^.*(www|ww\.|\/w\.).*?/)){
					arrUrl[x].value="http://www."+arrUrl[x].value.substring(arrUrl[x].value.indexOf('.')+1);
				}
				else{
					arrUrl[x].value="http://"+arrUrl[x].value;
				}
			}
			else if(arrUrl[x].value.match(/^.*(www|ww\.|\/w\.).*?/))
			{
				arrUrl[x].value="http://www."+arrUrl[x].value.substring(arrUrl[x].value.indexOf('.')+1);
			}
			
		}
	}
	
	return true;

}

function CheckEmail (emailStr) {
	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);

	if (matchArray==null) {
		return false;
	}
	
	var user=matchArray[1];
	var domain=matchArray[2];
	
	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {
			return false;
	   }
	}
	
	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {
			return false;
	   }
	}
	
	if (user.match(userPat)==null) {
		return false;
	}
	
	var IPArray=domain.match(ipDomainPat);
	
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				return false;
	   }
	}
	return true;
	}
	
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	
	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1) {
			return false;
	   }
	}
	
	if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) {
		return false;
	}
	
	if (len<2) {
		return false;
	}
	
	return true;
	}