var global_defaultvaluefields_fieldname=new Array();
var global_defaultvaluefields_fieldvalue=new Array();

function ajax() {
	try { return new ActiveXObject("Msxml2.XMLHTTP");  } catch(e) {}
	try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {}
	try { return new XMLHttpRequest(); } catch(e) {}
	alert("XMLHttpRequest not supported");
	return null;
};

function in_array(arr, obj) {
	var arr_b = arr.split(",");
	var len = arr_b.length;
	for (var x = 0; x <= len; x++){
		if(arr_b[x] == obj) return true;
	}
	return false;
}

function labelHowValue(field, e){
	var nameField = field.name;
	var sizeArrayFields=global_defaultvaluefields_fieldname.length;
	var defaultValue="";
	for(var i=0; i<sizeArrayFields; i++){
		if(global_defaultvaluefields_fieldname[i]==nameField){
			defaultValue=global_defaultvaluefields_fieldvalue[i];
		}
	}
	
	if(defaultValue==""){
		global_defaultvaluefields_fieldname[sizeArrayFields]=nameField;
		global_defaultvaluefields_fieldvalue[sizeArrayFields]=field.value;
		defaultValue=field.value;
	}
	
 	if(e=='onblur'){
		if(field.value=="" || field.value==defaultValue){
			field.value=defaultValue;
			field.className="field_inlabel";
		}
	} else if(e=='onfocus'){
		if(field.value==defaultValue) {
		 	field.value="";
		 	field.className="field";
		}
	}	
}

function getTextXML(code, tag){
	var getTag=code.getElementsByTagName(tag);
	if(getTag[0].childNodes.length==0) return "";
	return getTag[0].childNodes[0].data;
}

function findPosX(obj){
	var curleft=0;
	if(obj.offsetParent){
		while(obj.offsetParent){
			curleft+=obj.offsetLeft;
			obj=obj.offsetParent;
		}
	} else if(obj.x) {
		curleft+=obj.x;
	}
	return curleft;
}

function findPosY(obj){
	var curtop=0;
	if(obj.offsetParent){
		while(obj.offsetParent){
			curtop+=obj.offsetTop;
			obj=obj.offsetParent;
		}
	} else if(obj.y) {
		curtop+=obj.y;
	}
	return curtop;
}

function set_cookie(name, value, exp_y, exp_m, exp_d, path, domain, secure){
	var cookie_string = name + "=" + escape ( value );
	if (exp_y){
    	var expires = new Date ( exp_y, exp_m, exp_d );
    	cookie_string += "; expires=" + expires.toGMTString();
  	}
  	if (path)cookie_string += "; path=" + escape (path);
  	if (domain) cookie_string += "; domain=" + escape ( domain );
  	if (secure) cookie_string += "; secure";
 	document.cookie = cookie_string;
}

function delete_cookie(cookie_name){
	var cookie_date = new Date();  // current date & time
	cookie_date.setTime (cookie_date.getTime() - 1);
	document.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString();
}


function get_cookie(cookie_name){
	var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)' );
	if ( results )
		return (unescape(results[2]));
	else
		return null;
}

function getKeyCode(event){
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	return keyCode;
}

/* This script and many more are available free online at
The JavaScript Source!! http://javascript.internet.com
Created by: Mr J | http://www.huntingground.net/ */

scrollStep = 2;

timerLeft = "";
timerRight = "";

function scrollDivLeft(id){
  clearTimeout(timerRight); 
  document.getElementById(id).scrollLeft+=scrollStep;
  timerRight=setTimeout("scrollDivLeft('"+id+"')",10);
}

function scrollDivRight(id){
  clearTimeout(timerLeft);
  document.getElementById(id).scrollLeft-=scrollStep;
  timerLeft=setTimeout("scrollDivRight('"+id+"')",10);
}

function stopMe(){
  clearTimeout(timerRight); 
  clearTimeout(timerLeft);
}

function disableSelection(target){
	if (typeof target.onselectstart!="undefined") //IE route
		target.onselectstart=function(){return false}
	else if (typeof target.style.MozUserSelect!="undefined") //Firefox route
		target.style.MozUserSelect="none";
	else //All other route (ie: Opera)
		target.onmousedown=function(){return false}
	target.style.cursor = "default";
}

function includeScript(arquivo){
	var ScriptFiles=document.getElementsByTagName('script');
	var on=0;
	for(var i=0; i<ScriptFiles.length; i++){
		if(ScriptFiles[i].src==arquivo) on=1;
	}
	if(on==0){
		var novo = document.createElement("script");
		novo.setAttribute('type', 'text/javascript');
		novo.setAttribute('src', arquivo);
		document.getElementsByTagName('head')[0].appendChild(novo);
	}
}

function includeCSS(arquivo){
	var cssFiles=document.getElementsByTagName('link');
	var on=0;
	for(var i=0; i<cssFiles.length; i++){
		if(cssFiles[i].src==arquivo) on=1;
	}
	if(on==0){
		var novo = document.createElement("link");
		novo.setAttribute('rel', 'StyleSheet');
		novo.setAttribute('type', 'text/css');		
		novo.setAttribute('href', arquivo);		
		document.getElementsByTagName('head')[0].appendChild(novo);
	}
}

function saveServer(values, ServerPage, sfn_name, typeReturn){
	if(!typeReturn) typeReturn = 'text';
	if(values.length==0){
		alert("Nenhum dado de entrada foi fornecido.");
		return false;
	}
	if(ServerPage.length==0){
		alert("Nenhum endereço para envio foi específicado.");
		return false;
	}	
 	var xmlhttp=ajax();
    xmlhttp.onreadystatechange = function() { 
          if(xmlhttp.readyState==4){
               if(xmlhttp.status==200) {
               		if(typeReturn == 'xml'){
						var iRes = xmlhttp.responseXML;
						if(sfn_name){
							eval(sfn_name+"("+iRes+")");
						}
						return true;            		
               		} else {
						var iRes = xmlhttp.responseText;
						if(sfn_name){
							eval(sfn_name+"('"+escape(iRes)+"')");
						}
						return true;
					}
               } 
          }
     };
     xmlhttp.open("POST", ServerPage, true);
     xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
     xmlhttp.send(values);								
}

function disableEnableFields(op, form_name){
	var el = document.forms[form_name].elements;
	for(var i=0;i<el.length;i++){
		if(op == 'enable') el[i].disabled = false;
		else el[i].disabled = true;
	}	
}

function removeSpecicTag(str, tag){
	var re= new RegExp('<'+tag+'[^><]*>|<.'+tag+'[^><]*>','g');
	return str.replace(re,'');
}

function removeTags(str, tags){
	var all_tags = tags.split(',');
	for(var i=0; i<all_tags.length; i++){
		str = removeSpecicTag(str, all_tags[i]);
	}
	return str;
}

function opacity(id, opacStart, opacEnd, millisec) {
    //speed for each frame
    var speed = Math.round(millisec / 100);
    var timer = 0;

    //determine the direction for the blending, if start and end are the same nothing happens
    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    }
} 

function changeOpac(opacity, id) {
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
}

function blendimage(divid, imageid, imagefile, millisec){
    var speed = Math.round(millisec / 100);
    var timer = 0;
    document.getElementById(divid).style.backgroundImage = "url(" + document.getElementById(imageid).src + ")";
    changeOpac(0, imageid);
    document.getElementById(imageid).src = imagefile;
    for(i = 0; i <= 100; i++) {
        setTimeout("changeOpac(" + i + ",'" + imageid + "')",(timer * speed));
        timer++;
    }
}

function masknumbers(e,src,mask) {
	if(window.event) { 
		_TXT = e.keyCode; 
	} else if(e.which) { 
		_TXT = e.which; 
	}
		
	if(_TXT > 47 && _TXT < 58) { 
		var i = src.value.length; var saida = mask.substring(0,1); var texto = mask.substring(i)
		if (texto.substring(0,1) != saida) {
			src.value += texto.substring(0,1); 
		} 
		return true; 
	} else { 
		if (_TXT != 8) { 
			return false; 
		} else {
			return true; 
		}
	}
} 

function masktel(objeto, sMask, evtKeyPress){
	var i, nTecla;
	if(document.all) { // Internet Explorer
		nTecla = evtKeyPress.keyCode;
	} else if(document.layers) { // Nestcape
		nTecla = evtKeyPress.which;
	} else {
		nTecla = evtKeyPress.which;
		if(nTecla == 8){
		    return true;
		}
	}
	if(nTecla == 9 || nTecla == 0) return true;
	redefineMarkTel(objeto, sMask);
	if (nTecla != 8) { // backspace
	    if (sMask.charAt(i-1) == "9") { // apenas números...
	    	return ((nTecla > 47) && (nTecla < 58)); 
		} else { // qualquer caracter...
	        return true;
	    } 
	}
	else {
	    return true;
	}
}

function redefineMarkTel(objeto, sMask){
	var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;
	sValue = objeto.value;
	sValue = sValue.toString().replace( "-", "" );
	sValue = sValue.toString().replace( "-", "" );
	sValue = sValue.toString().replace( ".", "" );
	sValue = sValue.toString().replace( ".", "" );
	sValue = sValue.toString().replace( "/", "" );
	sValue = sValue.toString().replace( "/", "" );
	sValue = sValue.toString().replace( ":", "" );
	sValue = sValue.toString().replace( ":", "" );
	sValue = sValue.toString().replace( "(", "" );
	sValue = sValue.toString().replace( "(", "" );
	sValue = sValue.toString().replace( ")", "" );
	sValue = sValue.toString().replace( ")", "" );
	sValue = sValue.toString().replace( " ", "" );
	sValue = sValue.toString().replace( " ", "" );
	fldLen = sValue.length;
	mskLen = sMask.length;
	i = 0;
	nCount = 0;
	sCod = "";
	mskLen = fldLen;
	while (i <= mskLen) {
	    bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/") || (sMask.charAt(i) == ":"))
	    bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))
	    if (bolMask) {
		    sCod += sMask.charAt(i);
		    mskLen++; 
		} else {
	        sCod += sValue.charAt(nCount);
	        nCount++;
	    }
	    i++;
	}
	objeto.value = sCod;	
}

function enableTinyMCE(ids, plugins, bar_a, bar_b, g_url, filebrowser){
	return false;
	g_url = !g_url ? true : false;
	filebrowser = !filebrowser ? "filebrowser" : false;
	if(!plugins) plugins = "safari,layer,pagebreak,table,advhr,advimage,advlink,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,filebrowser";
	if(!bar_a) bar_a = "preview,print,|,cut,copy,paste,pastetext,pasteword,|,search,replace,|,undo,redo,|,link,unlink,anchor,image,removeformat,cleanup,code,|,insertdate,inserttime,|,charmap,iespell,media,advhr,table,|,ltr,rtl,|,fullscreen";
	if(!bar_b) bar_b = "formatselect,fontselect,fontsizeselect,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,outdent,indent,blockquote,sub,sup,|,bullist,numlist,|,forecolor,backcolor";
	//if(!bar_c) bar_c = "insertlayer,moveforward,movebackward,absolute,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak";
	
	tinyMCE.init({
		mode : "exact",
		elements : ids,
		language : "pt_br",
		theme : "advanced",
		plugins : plugins,

		theme_advanced_buttons1 :  bar_a,
		theme_advanced_buttons2 :  bar_b,
		theme_advanced_buttons3 :  "",
		theme_advanced_toolbar_location : "top",
		theme_advanced_toolbar_align : "left",
		file_browser_callback : filebrowser,
		theme_advanced_resizing : true,
		relative_urls : g_url,
		remove_script_host : false,		
		//document_base_url : url_default,

		content_css : "css/content.css",

		template_replace_values : {
			username : "FONACATE",
			staffid : "dsf098ads90f8a90ds8f90a8d8f0a8dsf0"
		}
	});	
}

function maxTextarea(obj, total, onalter){
	qtde=obj.value.length;
	if (qtde>total) obj.value=obj.value.substring(0,total);
	qtde=obj.value.length;
	document.getElementById(onalter).innerHTML=total-qtde;
}

function disableLinksByElement(el) {
	if (document.getElementById && document.getElementsByTagName) {
		if (typeof(el) == 'string') {
			el = document.getElementById(el);
		}
		var anchors = el.getElementsByTagName('a');
		for (var i=0, end=anchors.length; i<end; i++) {
			anchors[i].onclick = function() {
				return false;
      		};
    	}
  	}
}

function validateFileExtensionPic(fld) {
	if(!/(\.gif|\.jpg|\.png)$/i.test(fld.value)) {
		alert("O tipo de figura selecionada é inválida.\nOs tipos válidos são JPEG, GIF e PNG.");
		fld.focus();
		return false;
	}
	return true;
}

function checkIt(evt) {
	evt = (evt) ? evt : window.event;
    var charCode = (evt.which) ? evt.which : evt.keyCode;
    if (charCode > 31 && (charCode < 48 || charCode > 57)) {
        status = "This field accepts numbers only."
        return false;
    }
    status = "";
    return true;
}

function getUrlVars(){
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
 
    for(var i = 0; i < hashes.length; i++){	
        hash = hashes[i].split('=');
		hash[1] = unescape(hash[1]);
		vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
 
    return vars;
}

function getUrlHashVars(){
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('#') + 1).split('&');
 
    for(var i = 0; i < hashes.length; i++){	
        hash = hashes[i].split('=');
		hash[1] = unescape(hash[1]);
		vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
 
    return vars;
}

function isUrl(s){
	var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
	return regexp.test(s);
}

function createOption(intext, value) {
     var newoption = document.createElement("option");
	 var texto = document.createTextNode(intext); 
	 newoption.setAttribute("value", value); 
	 newoption.appendChild(texto);
	 return newoption; 
}

function selectOptionValue(id, value){
	var selectobj=document.getElementById(id);
	var on=0;
	for(var i=0; i<selectobj.length; i++){
		if(selectobj.options[i].value==value){
			selectobj.selectedIndex=i;
			on++;
		}
	}
	if(on==1) return true;
	else return false;
}

function checkDate(value){
	var allowBlank = true; 
	var minYear = 1902; 
	var maxYear = (new Date()).getFullYear()+2; 
	var errorMsg = ""; 
	
	// regular expression to match required date format 
	re = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/; 
	
	if(value != ''){ 
		if(regs = value.match(re)){ 
			if(regs[1] < 1 || regs[1] > 31){ 
				errorMsg = "O dia informado é inválido: " + regs[1]; 
			} else if(regs[2] < 1 || regs[2] > 12){ 
				errorMsg = "O mês informado é inválido: " + regs[2]; 
			} else if(regs[3] < minYear || regs[3] > maxYear){ 
				//errorMsg = "O ano informado é inválido: " + regs[3] + " - deve estar entre " + minYear + " e " + maxYear; 
				errorMsg = "O ano informado é inválido: " + regs[3];
			} 
		} else { 
			errorMsg = "O formato da data é inválida: " + value; 
		} 
	} else if(!allowBlank) { 
		errorMsg = "Data não informada ou é inválida!"; 
	} 
	
	if(errorMsg != "") {
		alert(errorMsg);
		return false; 
	} 
	return true; 
}

function checkTime(value){ 
	var errorMsg = ""; 
	
	// regular expression to match required time format 
	re = /^(\d{1,2}):(\d{2})(:00)?([ap]m)?$/; 
	
	if(value != ''){ 
		if(regs = value.match(re)){ 
			if(regs[4]){ 
				// 12-hour time format with am/pm 
				if(regs[1] < 1 || regs[1] > 12){ 
					errorMsg = "Hora inválida: " + regs[1]; 
				} 
			} else { 
				// 24-hour time format 
				if(regs[1] > 23){ 
					errorMsg = "Hora inválida: " + regs[1]; 
				} 
			} 
			
			if(!errorMsg && regs[2] > 59){ 
				errorMsg = "Minuto inválido: " + regs[2]; 
			} 
		} else { 
			errorMsg = "Hora em formato inválido: " + value; 
		} 
	} 
	
	if(errorMsg != ""){ 
		alert(errorMsg); 
		return false; 
	} 
	return true; 	
}

function checkDateTime(value){
	if(value == ""){
		alert("Por favor, informe a data e hora para validação.");
		return false;
	}
	if(value.indexOf(' ') == -1){
		alert("A data e hora informada está em um formato inválido.\nFormato padrão: dd/mm/yyyy hh:mm");
		return false;
	}
	var date_time = value.split(' '); 
	if(checkDate(date_time[0]) && checkTime(date_time[1])) return true;
	else return false;
}

function getSelectedRadio(buttonGroup) {
   // returns the array number of the selected radio button or -1 if no button is selected
   if (buttonGroup[0]) { // if the button group is an array (one button is not an array)
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            return i
         }
      }
   } else {
      if (buttonGroup.checked) { return 0; } // if the one button is checked, return zero
   }
   // if we get to this point, no radio button is selected
   return -1;
} 

function getSelectedRadioValue(buttonGroup) {
   // returns the value of the selected radio button or "" if no button is selected
   var i = getSelectedRadio(buttonGroup);
   if (i == -1) {
      return "";
   } else {
      if (buttonGroup[i]) { // Make sure the button group is an array (not just one button)
         return buttonGroup[i].value;
      } else { // The button group is just the one button, and it is checked
         return buttonGroup.value;
      }
   }
}

var global_fontsize_min = 8;
var global_fontsize_max = 14;

function increaseFontSize(idbox){
   var thebox = document.getElementById(idbox);
   if(!thebox) return false;
   var p = thebox.getElementsByTagName('p');
   if(!p) return false;
   for(i=0;i<p.length;i++) {
      if(p[i].style.fontSize) {
         var s = parseInt(p[i].style.fontSize.replace("pt",""));
      } else {
         var s = 10;
      }
      if(s!=global_fontsize_max) {
         s += 1;
      }
      p[i].style.fontSize = s+"pt";
   }
   ajustPage();
}

function decreaseFontSize(idbox){
   var thebox = document.getElementById(idbox);
   var p = thebox.getElementsByTagName('p');
   if(!p) return false;
   for(i=0;i<p.length;i++){
      if(p[i].style.fontSize){
         var s = parseInt(p[i].style.fontSize.replace("pt",""));
      } else {
         var s = 10;
      }
      if(s!=global_fontsize_min){
         s -= 1;
      }
      p[i].style.fontSize = s+"pt";
   }
   ajustPage();   
}

var global_chanfield_original = new Array();

function changeField(fieldSelect, fieldMax, onFocus, rec){
	var selectID = fieldSelect.id;
	var selectValue = fieldSelect.value;
	var selectWidth = fieldSelect.style.width;
	var onContent = fieldSelect.parentNode;
	var selectName = fieldSelect.name;
	
	if(rec){
		if(document.getElementById(selectID).type != "text") return true;
		if(!global_chanfield_original[selectName]) return true;
		var fieldText = global_chanfield_original[selectName];
	} else {
		if(selectValue != "outro") return false;
		global_chanfield_original[selectName] = onContent.innerHTML;
		var fieldText = '<input type="text" id="'+selectID+'" name="'+selectName+'" maxlength="'+fieldMax+'" class="field" style="width: '+selectWidth+'">';
	}

	onContent.innerHTML = fieldText;
	if(onFocus) document.getElementById(selectID).focus();
	return true;
}

function checkMail(str){
	if(str.indexOf('@')==-1 || str.indexOf('.')==-1) return false;
	return true;
}

function limitText(str, n){
	var nchars = str.length;
	var textre = nchars > n ? str.substring(0, (n-3))+"..." : str;
	return textre;	
}
