// $Revision: 1.1 $

var ie4 = document.all;
var ns4 = document.layers;
var ns6 = document.getElementById && !document.all; 

//////////////////////////////////////////////////////////////////////////////////////////////////////
function validateNewsletter(formObj) {
	var re = /^[\w-\.]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,3}$/;
	var reEmpty = /^(\s*)$/;
	var emailVal = formObj.email.value;
	var nomeVal = formObj.nome.value;
	if (reEmpty.test(nomeVal)) {
		alert ('Por favor introduza o seu nome.');
		return false;
	}
	if (!re.test(emailVal)) {
		alert ('Por favor introduza um email válido.');
		return false;
	}
	return true;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////

var popUpWin=0;
function messageWindow(title, msg)
{
  var width="300", height="125";
  var left = (screen.width/2) - width/2;
  var top = (screen.height/2) - height/2;
  var styleStr = 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbar=no,resizable=no,copyhistory=yes,width='+width+',height='+height+',left='+left+',top='+top+',screenX='+left+',screenY='+top;
  var msgWindow = window.open("","msgWindow", styleStr);
  var head = '<head><title>'+title+'</title><link href="/inc/styles.css" rel="stylesheet" type="text/css"></head>';
  var body = '<body><center>'+msg+'<br><p><form><input type="button" value="   Ok   " onClick="self.close()"></form></body>';
  msgWindow.document.write(head + body);
}

function popUpWindow(URLStr, left, top, width, height, scrollbar)
{
  if(popUpWin)
  {
    if(!popUpWin.closed) popUpWin.close();
  }
  if (!scrollbar) scrollbar = 'scrollbar=no';
  else scrollbar = 'scrollbars';
  if (!left) left = (screen.width/2) - width/2;
  if (!top) top = (screen.height/2) - height/2;
  popUpWin = open(URLStr, 'popUpWin', 'toolbar=no,location=no,directories=no,status=no,menubar=no,'+scrollbar+',resizable=no,copyhistory=no,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
}

// Example: obj = findObj("image1");
function findObj(theObj, theDoc)
{
  var p, i, foundObj;
  
  if(!theDoc) theDoc = document;
  if( (p = theObj.indexOf("?")) > 0 && parent.frames.length)
  {
    theDoc = parent.frames[theObj.substring(p+1)].document;
    theObj = theObj.substring(0,p);
  }
  if(!(foundObj = theDoc[theObj]) && theDoc.all) foundObj = theDoc.all[theObj];
  for (i=0; !foundObj && i < theDoc.forms.length; i++) 
    foundObj = theDoc.forms[i][theObj];
  for(i=0; !foundObj && theDoc.layers && i < theDoc.layers.length; i++) 
    foundObj = findObj(theObj,theDoc.layers[i].document);
  if(!foundObj && document.getElementById) foundObj = document.getElementById(theObj);
  
  return foundObj;
}

function formatString(number, decimals, dec_point, thousands_sep) {
	if (!decimals) decimals = 2;
	if (!dec_point) dec_point = ',';
	if (!thousands_sep) thousands_sep=' ';
	var str = number.toString(10);
	var decPos = str.indexOf('.');
	if (decPos < 0) decPos = str.length;
	var iniStr = str.substr(0,decPos);
	var endStr = str.substr(decPos+1) + '00000000000000';
	var i = iniStr.length-3;
	while (i>0) {
		iniStr = iniStr.substr(0,i) + thousands_sep + iniStr.substr(i); 
		i=i-3;
	} 
	return (iniStr + dec_point + endStr.substr(0,decimals));
}

//FRMCHK

function findFormObj(n, formName) { 
  var p,i,x;  
  var d=document; 
  x=d.forms[formName][n];
  return x;
}

function validateForm(formName, argsArr) { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args= new Array();
  args = argsArr;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=findFormObj(args[i],formName); vname = args[i+1];
    if (val) { if (vname!="") {nm=vname;} else {nm=val.name; nm=nm.toUpperCase();} if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' tem que conter um endereço de e-mail.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' tem que ser numérico.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' tem que conter um número entre '+min+' e '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' é de preenchimento obrigatório.\n'; }
  } if (errors) alert('Foram detectadas as seguintes falhas no preenchimento do formulário:\n'+errors);
  document.MM_returnValue = (errors == '');
}


var xmsForms = new Array();
var xmsFormTimer;
var xmsAlertColor = '#DD0000';
var xmsAlertForeColor = '#FFFFFF';
var xmsRestoreForeColor = '';
function xmsForm(formName) {
	this.mForm = document.forms[formName];
	this.mReqArr = new Array();
	this.moreReqArr = new Array();
	this.mEqual = new Array();
	this.mType = new Array();
	this.mExpr = new Array();
	this.mRegExArr = new Array();
	this.setValue = xmsFormSetValue;
	this.setMode = xmsFormSetMode;
	this.setRequired = xmsFormSetRequired;
	this.setEqual = xmsFormSetEqual;
	this.addExpr = xmsFormAddExpr;
	this.setRegEx = xmsFormSetRegEx;
	this.mForm.onsubmit = xmsFormValidate;
	xmsForms[formName] = this;
}
function xmsFormSetRegEx(objName, regExStr) {
	if (!this.mForm) return;
	if (!this.mForm.elements[objName]) return;
	this.mRegExArr[this.mRegExArr.length]=new Array(this.mForm.elements[objName], regExStr);
}
function xmsFormSetValue(objName, val)  {
	if (!this.mForm) return;
	if (!this.mForm.elements[objName]) return;
	this.mForm.elements[objName].value = val;
}
function xmsFormSetRequired(objName) {
	if (!this.mForm) return;
	if (!this.mForm.elements[objName]) return;
	this.mReqArr[this.mReqArr.length]=this.mForm.elements[objName];
}
function xmsFormSetEqual(objName1, objName2) {
	if (!this.mForm) return;
	if (!this.mForm.elements[objName1] || !this.mForm.elements[objName2]) return;
	this.mEqual[this.mEqual.length]=new Array(this.mForm.elements[objName1], this.mForm.elements[objName2]);
}
function xmsFormSetMode(objName, type) {
	if (!this.mForm) return;
	if (!this.mForm.elements[objName]) return;
	this.mType[this.mType.length]=new Array(this.mForm.elements[objName], type);
	var el = this.mForm.elements[objName];
	switch (type) {
	case "NUM": el.onkeypress = xmsCheckNumKey;
	}
}
function xmsFormAddExpr(cObj, cOp, cVal, reqObj) {
	if (!this.mForm) return;
	//var cObj = eval (cObjString);
	//var reqObj = eval (reqObjString);
	//if (!cObj) return;
	//if (!reqObj) return;
	this.mExpr[this.mExpr.length]=new Array(cObj, cOp, cVal, reqObj);
}
function xmsCheckNumKey() {
	var keyCode = window.event.keyCode;
	var srcObj = window.event.srcElement;
	if ((keyCode == 46) || (keyCode>=48 && keyCode<=57)) return true;
	else return false;
}
function xmsCheckEmpty() {
	var srcObj;
	if (xmsCheckEmpty.arguments.length == 1) srcObj = xmsCheckEmpty.arguments[0];
	else srcObj = window.event.srcElement; 
	var re = /^(\s*)$/;
	if (srcObj.value.search(re)>=0) {
		srcObj.style.backgroundColor = xmsAlertColor;
	} else {
		srcObj.style.backgroundColor = "";
	}
	return true;
}
function xmsFormValidate(formName) {
	if (!formName) formName = this.name;
	var xForm = xmsForms[formName];
	if (!xForm) return true;
	var re = /^(\s*)$/;
	var p;
	xForm.moreReqArr = new Array();
	for (var i=0; i<xForm.mExpr.length; i++) {	
		switch(xForm.mExpr[i][1]) {
			case ('=='): case ('='):
				if (xForm.mExpr[i][0].value == xForm.mExpr[i][2]) xForm.moreReqArr[xForm.moreReqArr.length] = xForm.mExpr[i][3]; break;
			case ('checked'):
				if (xForm.mExpr[i][0].checked) xForm.moreReqArr[xForm.moreReqArr.length] = xForm.mExpr[i][3]; break;
			case ('!checked'):
				if (!xForm.mExpr[i][0].checked) xForm.moreReqArr[xForm.moreReqArr.length] = xForm.mExpr[i][3]; break;
		}
	}
	for (var i=0; i<xForm.mReqArr.length; i++) {
		if (xForm.mReqArr[i].value.search(re)>=0) {
			xForm.mReqArr[i].focus();
			xForm.mReqArr[i].style.backgroundColor = xmsAlertColor;
			xmsFormTimer = window.setTimeout("xmsFormEmptyAlert('"+formName+"',"+i+",true);",300);
			return (false);
		}
	}
	for (var i=0; i<xForm.moreReqArr.length; i++) {
		if (xForm.moreReqArr[i].value.search(re)>=0) {
			xForm.moreReqArr[i].focus();
			xForm.moreReqArr[i].style.backgroundColor = xmsAlertColor;
			xmsFormTimer = window.setTimeout("xmsFormEmptyAlert('"+formName+"',"+i+",false);",300);
			return (false);
		}
	}
	for (var i=0; i<xForm.mEqual.length; i++) {
		if (xForm.mEqual[i][0].value!=xForm.mEqual[i][1].value) {
			xForm.mEqual[i][0].focus();
			xForm.mEqual[i][0].style.backgroundColor = xmsAlertColor;
			xForm.mEqual[i][1].style.backgroundColor = xmsAlertColor;
			xmsFormTimer = window.setTimeout("xmsFormEqualAlert('"+formName+"',"+i+");",500);
			return (false);
		}
	}
	for (var i=0; i<xForm.mRegExArr.length; i++) {
		var myregex = new RegExp(xForm.mRegExArr[i][1]);
		if (!myregex.test(xForm.mRegExArr[i][0].value)) {
			xForm.mRegExArr[i][0].focus();
			xForm.mRegExArr[i][0].style.backgroundColor = xmsAlertColor;
			xmsFormTimer = window.setTimeout("xmsFormRegExAlert('"+formName+"',"+i+");",500);
			return (false);
		}
	}
	for (var i=0; i<xForm.mType.length; i++) {
		var restoreVal = xForm.mType[i][0].value;
		switch (xForm.mType[i][1]) {
		case ('NUM'):
			if (isNaN(xForm.mType[i][0].value)) {
				xForm.mType[i][0].focus();
				xForm.mType[i][0].style.backgroundColor = xmsAlertColor;
				xForm.mType[i][0].style.color = xmsAlertForeColor;
				xForm.mType[i][0].value = 'campo numérico';
				xmsFormTimer = window.setTimeout("xmsFormTypeAlert('"+formName+"',"+i+",'"+restoreVal+"');",800);
				return (false);
			}
			break;
		case ('EMAIL'):
			var email_re = /^[\w-\.]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,3}$/;
			//p=xForm.mType[i][0].value.indexOf('@');
		    if (!email_re.test(xForm.mType[i][0].value)) {
				xForm.mType[i][0].focus();
				xForm.mType[i][0].style.backgroundColor = xmsAlertColor;
				xForm.mType[i][0].value = 'campo de e-mail';
				xmsFormTimer = window.setTimeout("xmsFormTypeAlert('"+formName+"',"+i+",'"+restoreVal+"');",800);
				return (false);
			}
			break;
		}
	}
	return true;
}
function xmsFormEmptyAlert(formName, reqIndex, isMainArr) {
	var xForm = xmsForms[formName];
	if (isMainArr) {	xForm.mReqArr[reqIndex].style.backgroundColor = ""; }
	else { xForm.moreReqArr[reqIndex].style.backgroundColor = ""; }
	window.clearTimeout(xmsFormTimer);	
}
function xmsFormRegExAlert(formName, reqIndex) {
	var xForm = xmsForms[formName];
	xForm.mRegExArr[reqIndex][0].style.backgroundColor = "";
	window.clearTimeout(xmsFormTimer);
}
function xmsFormTypeAlert(formName, reqIndex, restoreVal) {
	var xForm = xmsForms[formName];
	xForm.mType[reqIndex][0].style.color = "";
	xForm.mType[reqIndex][0].style.backgroundColor = "";
	xForm.mType[reqIndex][0].value = restoreVal;
	window.clearTimeout(xmsFormTimer);	
}
function xmsFormEqualAlert(formName, reqIndex) {
	var xForm = xmsForms[formName];
	xForm.mEqual[reqIndex][0].style.backgroundColor = "";
	xForm.mEqual[reqIndex][1].style.backgroundColor = "";
	window.clearTimeout(xmsFormTimer);	
}
    


