/**
* Developed By pixel4 (Fabio Teles)
* http://www.pixel4.com.br
* pixel4@gmail.com
*/
// DOM
var $ = function(p){return (typeof p === 'string' ? document.getElementById(p) : p);};
var $b = function(p){return (typeof p === 'string' ? document.getElementsByName(p) : p);};
var $t = function(p){return (typeof p === 'string' ? document.getElementsByTagName(p) : p);};
// 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 getQueryString(id, str){
	var regex = new RegExp(id+"=([^&#]+)");
	var result = (str || document.location.href).match(regex);
	return (!result ? null : result.length == 2 ? result[1] : null);
}
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 = null;
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() {
	checkHash();
	if(!__idHashCheck) __idHashCheck = window.setInterval(checkHash,100);
}
function turnOffHash() {
	window.clearInterval(__idHashCheck);
	__idHashCheck=0;
}
