/**
* Developed By pixel4 (Fabio Teles)
* http://www.pixel4.com.br
* pixel4@gmail.com
*/
// DOM

// EVENTS
function addOnload(fn) {
	var nowOnload = window.onload;
	window.onload = function() {
		fn();
		if(nowOnload != null && typeof(nowOnload) == 'function') nowOnload();
	}
}

function addOnresize(fn) {
	var nowOnresize = window.onresize;
	window.onresize = function() {
		fn();
		if(nowOnresize != null && typeof(nowOnresize) == 'function') nowOnresize();
	}
}
// VALIDATION
function isDate(dateStr,format){
	for (var i=0,fo,ds,d="",m="",y="";i<format.length;ds=dateStr.charAt(i),fs=format.charAt(i),((fs=="D")?d+=ds:(fs=="M")?m+=ds:(fs=="Y")?y+=ds:void(0)),i++);
	return ((!isNaN(d) && !isNaN(m) && !isNaN(y)) ?
	((d<1||d>31) || (m<1||m>12) || ((m==4||m==6||m==9||m==11)&&d==31) || (y.toString().length<4)) ? false :
	((m == 2) ? ((d>29 || (d==29 && !((y%4)==0&&((y%100)!=0||(y%400)==0)))) ? false : true ) : true ) : false );
}
function isEmail(email){
	var res1=!(/(\.\.)+|(__)+|(--)+/.test(email));
	var res2=(/^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/.test(email));
	return (res1 && res2)
}
function isCPFCNPJ(str){
	str=str.replace(/[^0-9]/gi,"");
	if (str.length == 14 || str.length == 11){
		var val = str.substring(0,str.length-2);
		val+=dig(val);val+=dig(val);
		return (str==val);
	}else
		return false;
	function dig(str){
		for (var i=0,k,s=0,l=str.length;i<l;k=(l>=12)?(2+i%8):(i+2),s+=parseInt(str.charAt(l-i-1))*k,i++);
		return (((10*s)%11)%10).toString();
	}
}
function validateKey(field, regex, event){
	var code = event[(navigator.appName.indexOf("Netscape")!=-1 ? "which" : "keyCode")];
	var k = String.fromCharCode(code);
	//alert( 'key: ' + code + ' -> str: ' + k + ' -> value: ' + field.value);	
	return code==13 ? true : (code==0&&!window.event) ? true : code==8 ? true : regex.test(k);
}
// UTILS
function checkNextField(f){
	if(f.value.length==f.maxLength){
  	for(var i=0;i<f.form.length;i++){
    	if(f.form[i]==f&&f.form[i+1]){f.form[i+1].focus();break}
		}
	}
}
function textLimit(field,maxlimit,div){
	if (field.value.length > maxlimit)
		field.value = field.value.substring(0, maxlimit);
	if (div) if($(div))
		$(div).innerHTML = (maxlimit-field.value.length);
}
function onlyNumbers(s) {
	return typeof(s)=='string' ? s.replace(/[^0-9]/gi,"") : s;
}
function popWin(URLStr, popName, width, height, left, top, p_scroll)
{
  if(p_scroll!="yes") p_scroll="no";
  vpopName=popName;
  if(!left) left=(screen.availWidth-width)/2;
  if(!top) top=(screen.availHeight-height)/2;
  vpopName = window.open(URLStr, popName, 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars='+p_scroll+',resizable=no,copyhistory=yes,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
}
String.prototype.trim = function(p){
	var s;
	s=this;
	if (!s || s=="") return "";
	if(p=='left'||p==undefined)while((s.charAt(0)==" ")||(s.charCodeAt(0)==9)||(s.charAt(0)=='\n')||(s.charAt(0,1)=='\r')){s=s.substr(1,s.length-1);}
	if(p=='right'||p==undefined)while((s.charAt(s.length-1)==" ")||(s.charCodeAt(s.length-1)==9)||(s.charAt(s.length-1)=='\n')||(s.charAt(s.length-1)=='\r')){s=s.substr(0,s.length-1);}
	if(p=='br')s=s.split(String.fromCharCode(13)).join("");
	return s;
}

// HASH MANAGER
var __idHashCheck=0;
var __lastHash = "";
function checkHash() {
	if(document.location.hash.substring(1)!=__lastHash) {
		var $data = {newHash:document.location.hash.substring(1), oldHash:__lastHash};
		EventManager.dispatchEvent("onHashChange",$data);
		__lastHash=document.location.hash.substring(1);
	}
}
function turnOnHash() {
	if(!__idHashCheck) __idHashCheck = window.setInterval(checkHash,100);
}
function turnOffHash() {
	window.clearInterval(__idHashCheck);
	__idHashCheck=0;
}