
// ----------------------------------------------------------------------
// Funções Especificas


function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


function toggle(id) {
	var listid = id.split(',');
	for(var i=0;i<listid.length;i++){
		x=listid[i];
		if (document.getElementById(x)!=null) {
			if( document.getElementById(x).style.display=='none' ){
				document.getElementById(x).style.display = '';
			}else{
				document.getElementById(x).style.display = 'none';
			}
		}
	}
}

function hide(id) {
	var x;
	var listid = id.split(',');
	for(var i=0;i<listid.length;i++){
		x=listid[i];
		if (document.getElementById(x)!=null) {
				document.getElementById(x).style.display = 'none';
		}
	}
}

function show(id) {
	var x;
	var listid = id.split(',');
	for(var i=0;i<listid.length;i++){
		x=listid[i];
		if (document.getElementById(x)!=null) {
				document.getElementById(x).style.display = '';
			}
		}
}

function change_bgcolor(id,color){
	var listid = id.split(',');
	for(var i=0;i<listid.length;i++) {
		x=listid[i];
		if (document.getElementById(x)!=null) {
			document.getElementById(x).style.backgroundColor = color;
		}
	}
}

function ChangeImage(id) {
		if (document.getElementById(id).src!=null) {
		//	alert(document.getElementById(id).value);
			document.getElementById(id).src = "url('_img/menu_" + id + "_off.gif')";
		}
}


function centerPopup(popup_name,popup_url,popup_with,popup_height,myWidth,myHeight,myScrollbar) {
  if(!myWidth) {myWidth = 10;}
  if(!myHeight){myHeight = 50;}
  if(!myScrollbar){myScrollbar = 0;}
  var popup_left = 200;
  var popup_top  = 150;
  window.open(popup_url ,popup_name,"toolbar=no,location=no,status=no,menubar=no,scrollbars=" + myScrollbar + ",resizable=no,width=" + popup_with + ",height=" + popup_height + ",left=" + popup_left + ",top=" + popup_top + ",screenX=" + popup_left + ",screenY=" + popup_top);
}

// ----------------------------------------------------------------------
// Funções Gerais

function GetForm(n) {
	return document.forms[n];
}

function Verified() {
	GetForm().submit();
}

function cleanCharacter(myObject, character) {
	myObject.value = myObject.value.replace(character,'');
	if (myObject.value.indexOf(character)!=-1)
		cleanCharacter(myObject, character);
	return true;
}

function isMobileNumber(Element) {
	
	tel= ElementValue(Element);
	var x=tel.toString();
	var ind=x.substring(0,2)

	if (x.length!=9) return false;
	if(!((ind=="91")||(ind=="93")||(ind=="96"))) return false

	return true
}

function validateElement(Element, mandatory, type,size) {
	var bElementEmpty = ElementEmpty(Element);
	
	if (mandatory && bElementEmpty) return false;

	if (size>0 && ElementValue(Element).length > size) return false;

	if (!bElementEmpty) {
		switch (type) {
			case 'email':
				if (isEMail(ElementValue(Element))) return true;
				else return false;
				break;			
			case 'date':
				if (isDate(ElementValue(Element))) return true;
				else return false;
				break;
			case 'number':
				if (isNumeric(ElementValue(Element))) return true;
				else return false;
				break;		
			default:
				return true;
			}
	}
	return true;
}

function validateSize(Element,size,dif,mandatory) {
	
	// tem que ter exactamente o mesmo comprimento que size
	switch (dif) {
		case 0:				// tem que ter exactamente size posicoes
			var bElementEmpty = ElementEmpty(Element);
	
			if((mandatory==0)&&ElementValue(Element).length==0){
				return true;
			} else {
				if ((ElementValue(Element).length - size) !=0) 
					return false;
			}	 
				 
		case -1:			//no minimo tem que ter size posicoes

			if((mandatory==0)&&ElementValue(Element).length==0){
					 return true;
			} else {
				if ((ElementValue(Element).length - size) <0) 
					return false;
			}	 

		case 1:
			// no maximo pode ter tamanho size
			if ((ElementValue(Element).length - size) >0) return false;
		default:
			return true; 
		}
	return true;
}

function SelectOption(campo,valor) {
	
	var lista;
	var pos=0;
	var oForm = GetForm(0);
	lista = oForm[campo].options;

	for(var i=0; i<lista.length; i++)
		if(lista[i].value==valor)
			lista[i].selected=true;
}

function SelectRadioOption(campo,valor) {
	var lista;
	var pos=0;
	var oForm = GetForm(0);

	for (var i=0;i < oForm[campo].length;i++) 
		if (oForm[campo][i].value==valor)
			oForm[campo][i].checked =true
}

function SelectElement(Element) {
	var stype=Element.type;
	if (stype+''=='undefined') stype=Element[0].type;
	switch (stype) {
		case 'select-one':
			break;
		case 'radio':
			break;
		case 'select-multiple':
			break;		
		default:
			Element.select(); 
	}
}
	
function ElementEmpty(Element) {
	var stype=Element.type;
	if (stype+''=='undefined') stype=Element[0].type;
	switch (stype) {
		case 'select-one':
			return (Element.options[Element.selectedIndex].value=='');
			break;
		case 'radio':
			return RadioEmpty(Element);
			break;
		default:
			return (Element.value=='');
	}
	return (Element.value=='');
}
	
function RadioEmpty(Element) {
	for (var i=0;i < Element.length;i++) {
		if (Element[i].checked) return false;
	}		
	return true;
}

function ElementValue(Element) {
	var stype=Element.type;
	if (stype+''=='undefined') stype=Element[0].type;
	switch (stype) {
		case 'select-one':
			return Element.options[Element.selectedIndex].value;
			break;		
		case 'radio':
			return RadioValues(Element);
			break;
		default:
			return Element.value; 
	}
	return Element.value; 
}

function isChecked(Element) {
	if(Element.checked==true)
		return true;

	return false	
}

function RadioValues(Element) {
	for (var i=0;i < Element.length;i++) {
		if (Element[i].checked) return Element[i].value;
	}
	return '';
}
function RadioIndex(Element) {
	for (var i=0;i < Element.length;i++) {
		if (Element[i].checked) return i;
	}		
	return -1;
}		

function isNumeric(s) { 
	if (isEmpty(s)) 
	if (isNumeric.arguments.length == 1) return false; 
	else return (isNumeric.arguments[1] == true); 
	for (var i = 0; i < s.length; i++){
		if (!isDigit(s.charAt(i))) return false;
	}
	return true; 
} 

function isSignedNumeric(s) { 
	if (isEmpty(s)) {
		if (isSignedNumeric.arguments.length == 1) return false; 
	    else return (isSignedNumeric.arguments[1] == true); 
    } else {
  		var startPos = 0; 
    	var secondArg = false; 
    	if (isSignedNumeric.arguments.length > 1) secondArg = isSignedNumeric.arguments[1];
    	if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") ) startPos = 1; 
    	return (isNumeric(s.substring(startPos, s.length), secondArg)) 
  	} 
} 

function isvalidString(valor) {
	var position=-1;
	var strvalor = new String(ElementValue(valor));
	
	invalidchar = new Array(" ","'")
	for(var i=0;i<invalidchar.length; i++){
		if(strvalor.indexOf(invalidchar[i])!=-1)
			return false;
	}	
	return true;
}

function isNonnegativeNumeric (s) { 
	var secondArg = false; 
	if (isNonnegativeNumeric.arguments.length > 1) secondArg = isNonnegativeNumeric.arguments[1];
  	return (isSignedNumeric(s, secondArg) && ( (isEmpty(s) && secondArg) || (parseInt(s, 10) >= 0) ) );
} 

function isNumericInRange(s, a, b) { 
	if (isEmpty(s)) {
	  	if (isNumericInRange.arguments.length == 1) return defaultEmptyOK; 
    	else return (isNumericInRange.arguments[1] == true); 
    }
 	if (!isNumeric(s, false)) return false; 
	var num = parseInt (s, 10); 
	return ((num >= a) && (num <= b)); 
} 

function isDate(s) {
	
	var day,month,year;
	 
	if (isEmpty(s)) {
		if (isDate.arguments.length == 1) return false; 
		else return (isDate.arguments[1] == true);
	} else {
		if ((s.length == 8 || s.length == 10) && (s.charAt(2) == "/" || s.charAt(2) == "-") && (s.charAt(5) == "/" || s.charAt(5) == "-")) { 
			day = s.charAt(0) + s.charAt(1); 
			month = s.charAt(3) + s.charAt(4); 
			if (s.length == 8) year = s.charAt(6) + s.charAt(7); 
			else year = s.charAt(6) + s.charAt(7) + s.charAt(8) + s.charAt(9); 

			if (ValidateDate(year, month, day))return true; 
			else return false; 
	  	}
	  	else return false;
	}
} 

function isYear(s) { 
	if (isEmpty(s)) {
  		if (isYear.arguments.length == 1) return false; 
  		else return (isYear.arguments[1] == true); 
  	} else {
  		if (!isNonnegativeNumeric(s)) return false;
  		else return ((s.length == 2) || (s.length == 4));
  	}
}

function isMonth(s) { 
	if (isEmpty(s)) {
  		if (isMonth.arguments.length == 1) return false; 
    	else return (isMonth.arguments[1] == true); 
    } else return isNumericInRange (s, 1, 12);
}

function isDay(s) {
	if (isEmpty(s)) {
		if (isDay.arguments.length == 1) return false; 
		else return (isDay.arguments[1] == true); 
	}
	else return isNumericInRange (s, 1, 31); 
} 

function daysInFebruary(year) {return ( ((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0) ) ) ? 29 : 28 ); } 

function ValidateDate(year, month, day) { 
	if (! (isYear(year, false) && isMonth(month, false) && isDay(day, false))) return false; 
	var daysInMonth = new Array();;
	daysInMonth[1] = 31;
	daysInMonth[2] = daysInFebruary(parseInt(year));
	daysInMonth[3] = 31; 
	daysInMonth[4] = 30; 
	daysInMonth[5] = 31; 
	daysInMonth[6] = 30; 
	daysInMonth[7] = 31; 
	daysInMonth[8] = 31; 
	daysInMonth[9] = 30; 
	daysInMonth[10] = 31; 
	daysInMonth[11] = 30; 
	daysInMonth[12] = 31;  
	if (parseInt(day) > daysInMonth[parseInt(month)]) return false; 
	else  return true;
}

function isEmpty(s) {return ((s == null) || (s.length == 0))} 

function isDigit(c) {return ((c >= "0") && (c <= "9"))} 

function isEMail (emailStr) {
	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];

	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 domainArray=domain.match(domainPat);
	if (domainArray==null) return false;

	var atomPat=new RegExp(atom,'g');
	var domArr=domain.match(atomPat);
	var len=domArr.length;

	if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) return false;
	if (len<2) return false;
	return true;
}

function roundOff(value, precision) {
	value = new String(value);  //convert value to string
	value=value.replace(',','.');
	precision = parseInt(precision);

	var whole = '' + Math.round(value * Math.pow(10, precision));
	if (whole.length==2) whole='0' + whole;
	if (whole.length==1) whole='00' + whole;
	var decPoint = whole.length - precision;

	if(decPoint != 0)  {
	  	result = whole.substring(0, decPoint);
    	result += '.';
    	result += whole.substring(decPoint, whole.length);
    } else result = whole;

	if (result=='.0' || result=='N.aN') result='0.00';
	return result;
}

function ValidateChecked(Element) {

	for (i=0;i<Element.length;i++)
		if(Element[i].checked)
			return true;

	return false;
}

function EnableALL(){
	var oForm = document.forms[0];
	var fields = oForm.elements;
	for(var x=0;x<fields.length;x++)
		fields.elements[x].disabled=false
}

// -----------  Só permite a introdução de numeros no campo  ----------
//onkeypress="return onlyNumbers(event)"
function onlyNumbers(e) {
	var unicode = e.charCode? e.charCode : e.keyCode;
	//if the key isn't the backspace - Delete - Dot - Left Arrow - Right Arrow - Tab(which we should allow)
	if (unicode!=8 && unicode!=46 && unicode!=37 && unicode!=39 && unicode!=9) {
		if (unicode<48 || unicode>57) //if not a number
			return false //disable key press
	}
	return true;
}

// -----------  Limite o tamanho do conteúdo de um objecto ----------
//onkeyup="return limitlength(this, 20)"
function limitlength(obj, length){
	var maxlength=length;
	if (obj.value.length > maxlength)
		obj.value = obj.value.substring(0, maxlength);
}

// -----------  Preenche o campo Dia  -------------------------------
function populate_day(field,sel) {
	var lista, pos;
	dias = new Array("","01", "02", "03", "04", "05", "06", "07", "08", "09"); 
	pos=0
	lista = field.options
	lista[pos++]=new Option("Dia","")
	for (var i=1; i<=9; i++){
		lista[pos]=new Option(dias[i],i)
		if(sel==i)
			lista[pos].selected=true;
		pos++
	}
	for (var j=10; j<=31; j++){
		lista[pos]=new Option(j,j)
		if(sel==j)
			lista[pos].selected=true;

		pos++
	}
}
// -----------  Preenche o campo Mês Númerico  -------------------------------
function populate_month(field,sel) {
	var lista, pos;
	meses = new Array("", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"); 
	pos=0
	lista = field.options
	lista[pos++]=new Option("--","")
	for (var i=1; i<=12; i++){
		lista[pos]=new Option(meses[i],i)
		if(sel==i)
			lista[pos].selected=true;

		pos++
	}
}
// -----------  Preenche o campo Mês Extenso  -------------------------------
function populate_monthDesc(field,sel) {
	var lista, pos;
	meses = new Array("", "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"); 
	pos=0
	lista = field.options
	lista[pos++]=new Option("Mês","")
	for (var i=1; i<=12; i++){
		lista[pos]=new Option(meses[i],i)
		if(sel==i)
			lista[pos].selected=true;

		pos++
	}
}
// -----------  Preenche o campo Ano  -------------------------------
function populate_year(field,sel,startYear,endYear) {
	var lista, pos;
	pos=0
	lista = field.options;
	lista[pos++]=new Option("Ano","");

	for (var i=endYear; i>=startYear; i--){
		lista[pos]=new Option(i,i);
		if(sel==i)
			lista[pos].selected=true;
		pos++;
	}
}