
/*function getElementsByClassName(classname, node) {
	
	if(!node) node = document.getElementsByTagName("body")[0];
	
	var a = [];
	
	var re = new RegExp('\\b' + classname + '\\b');
	
	var els = node.getElementsByTagName("*");
	
	for(var i=0,j=els.length; i<j; i++)
	
	if(re.test(els[i].className))a.push(els[i]);
	
	return a;

}*/


function showElement(id) {
        var element = document.getElementById(id);

        if (element) {
                element.style.visibility = 'visible';
        }
}

function hideElement(id) {
        var element = document.getElementById(id);

        if (element) {
                element.style.visibility = 'hidden';
        }
}

/**
 * @returns true when IE is detected, otherwise returns false.
 */
function isIE()
{
        if (navigator.appName.indexOf("Explorer") == -1) {
                return false;
        }
        else {
                return true;
        }
}

function getPos(el) 
{
       var r = { x: el.offsetLeft, y: el.offsetTop, w: el.offsetWidth, h: el.offsetHeight};

       if (el.offsetParent) {
               var tmp = getPos(el.offsetParent);
               r.x += tmp.x;
               r.y += tmp.y;
       }
       return r;
};


/**
 * @redirects page to given url
 */
function redir(path)
{
    document.location.href = path;
}

/* Features Table 
	----------------------------------------------------------
 */
function toggleFeatureTable(id) 
{
	var element = document.getElementById(id);
	if (element) {
		if (element.style.display == 'block') {
			element.style.display = 'none';
		} else {
			element.style.display = 'block';
		}
	}
}

function popupFeatureTable(elm,popup,offset_left,offset_top)
{
	var popup  = document.getElementById(popup);
	if(popup.style.display == 'block') return;
	var elmPos = getPos(elm);
	
	if (!(typeof offset_left == 'number')) offset_left = 0;
	if (!(typeof offset_top == 'number')) offset_top = 0;
	offset_top += 9;
	
	// popup position
	popup.style.marginLeft = offset_left +"px";
	popup.style.display    = 'block';
	popup.style.top        = (elmPos.y - popup.offsetHeight + offset_top) +"px";
	
	if (typeof elm.onmouseout !== 'function'){
		elm.onmouseout = function(){
			popup.style.display = 'none';
		}
	}
}

/* Validation
	----------------------------------------------------------
 */
function validateEmail(str) {
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(str)) return true;
	else return false;
}

function validateCPF( CPF )
{ 
	var s = CPF; 

	var i; 
	//var c  = s.substr(0,9); 
	var c  = s.substr(0,3) + s.substr(4,3) + s.substr(8,3); 
	var dv = s.substr(12,2); 
	var d1 = 0; 

	for (i = 0; i < 9; i++) 	  
	{ 	  
		d1 += c.charAt(i)*(10-i); 	  
	} 
		  
	if (d1 == 0) return false; 	  
	  
	d1 = 11 - (d1 % 11); 
	  
	if (d1 > 9) d1 = 0; 
	  
	if (dv.charAt(0) != d1) return false; 	  
	  
	d1 *= 2; 
	  
	for (i = 0; i < 9; i++) 	  
	{ 	  
		d1 += c.charAt(i)*(11-i); 	  
	} 
	  
	d1 = 11 - (d1 % 11); 
	  
	if (d1 > 9) d1 = 0; 
	  
	if (dv.charAt(1) != d1) return false; 	  

	return true;
} 

function validateCNPJ( CNPJ_Orig ) 
{
	 // verifica o tamanho
	//if (CNPJ.length != 14) 
	if (CNPJ_Orig.length != 18) return false;
	
	var CNPJ = CNPJ_Orig.substr(0,2) + CNPJ_Orig.substr(3,3) + CNPJ_Orig.substr(7,3) + CNPJ_Orig.substr(11,4) + CNPJ_Orig.substr(16,2); 
	
	for (i=0;(i<=(CNPJ.length-1)); i++)
	{
		val = CNPJ.charAt(i);
		// alert (val)
		if	( (val!="9")&&(val!="0")&&(val!="1")&&(val!="2")&&(val!="3")&&(val!="4")&&(val!="5")&&(val!="6")&&(val!="7")&&(val!="8") ) 
		{
			return false;
		}
		
		m2 	= 2;
		soma1 = 0;
		soma2 = 0;
		
		for (i=11; i>=0; i--)
		{
			val = eval(CNPJ.charAt(i));
			m1 = m2;
			
			if ( m2 < 9 ) 
			{ 
				m2 = m2+1;
			}
			else 
			{
				m2 = 2;
			}
			soma1 = soma1 + (val * m1);
			soma2 = soma2 + (val * m2);
		}  // fim do for de soma

		soma1 = soma1 % 11
		if (soma1 < 2) 
		{  
			d1 = 0;
		}
		else 
		{ 
			d1 = 11- soma1;
		}
		
		soma2 = (soma2 + (2 * d1)) % 11;

		if (soma2 < 2) 
		{ 
			d2 = 0;
		}
		else 
		{ 
			d2 = 11- soma2;
		}

		if ( (d1==CNPJ.charAt(12)) && (d2==CNPJ.charAt(13)) )
			return true;
		else 
			return false;
	}
}

function validateField(fieldID, validationType, failureMessage) {
	var element = document.getElementById(fieldID);
	if (element) {
		switch (validationType){
			case "required":
				if(element.value == "") {
					alert(failureMessage);
					element.focus();
					return false;
				}
			break;
			case "email":
				if(!validateEmail(element.value)) {
					alert(failureMessage);
					element.focus();
					return false;
				}
			break;
			case "CNPJ":
				if(!validateCNPJ(element.value)) {
					alert(failureMessage);
					element.focus();
					return false;
				}
			break;
			case "CPF":
				if(!validateCPF(element.value)) {
					alert(failureMessage);
					element.focus();
					return false;
				}
			break;
			default : alert("I\'m sure it was great");
		}
	}
	return true;
}
