/*!
 * PowerV JavaScript Library v1.0.0 beta
 * http://powerv.com/
 *
 * Copyright (c) 2009 Jonas Lopes
 * Dual licensed under the MIT and GPL licenses.
 * http://docs.powerv.com/License
 *
 * Date: 2009-08-24 12:00:00 -0500 (Segunda-Feira, 19 Fev 2009)
 * Revision: 0000
 */
var Powerv = {
	isEmpty : function(inputStr){
		if ( null == inputStr || "" == inputStr )
			return true;
		return false;
	},
	getRadioValue : function(objRadio){
		var i = 0;
		while ( radio = objRadio[i++] ){
			if ( radio.checked ){
				return radio.value;
				break;
			}
		}
	},
	isValidEmail : function (inputEmail){
		if (this.isEmpty(inputEmail))
			return false;
		var reEmail = /^[\w-]+(\.[\w-]+)*@(([A-Za-z\d][A-Za-z\d-]{0,61}[A-Za-z\d]\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
		if(inputEmail.match(reEmail))
			return true
		return false
	},
	isValidDate : function (inputDateValue){
		if (this.isEmpty(inputDateValue))
			return false;
		var er			= /^((((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;
		var dataAtual = new Date();
		var anoAtual	= dataAtual.getFullYear();
		var diaForm		= inputDateValue.substring(0,2);
		var mesForm		= inputDateValue.substring(3,5);
		var anoForm		= inputDateValue.substring(6,10);
		if(!inputDateValue.match(er) || diaForm == '00' || mesForm == '00' || parseInt(anoForm) < (parseInt(anoAtual)-100) || parseInt(anoForm) > parseInt(anoAtual)) {
			return false;
		}
		return true;
	},
	inputMask : function (type, text){
		var keynum;
		var keychar;
		var numcheck;
		
		if (this.isEmpty(type) && type != 'D' || type != 'A'){
			alert('Máscara inválida!');
			return text;
		}
		if(window.event){ // IE
			keynum = text.keyCode;
		}else if(text.which){ // Netscape/Firefox/Opera
			keynum = text.which;
		}
		if (keynum != 8 && (keynum+"" != "undefined")){
			keychar = String.fromCharCode(keynum);
			numcheck = /\d/;
			return numcheck.test(keychar);
		}else{
			return text;
		}
	},
	clearComboBox : function (oList){
		for (var i = oList.options.length - 1; i >= 0; i--){
			oList.options[i] = null;
		}
		oList.selectedIndex = -1;
	},
	numberControl : function (type, text){
		this.decimalSeparator = "",
		this.integerSeparator = "",
		this.currencySymbol = "",
		this.mountNumber = function (value){  
			number = value.toString();
			
			number = number.replace(this.currencySymbol, "")
			number = number.replace(/[.]/g, "")
			number = number.replace(/[,]/g, "")
			
			totalString = number.length;
			
			decimals = number.substr(totalString-2,totalString);
			integers = number.substr(0,(totalString-2));
			totalIntegers = integers.length;
			
			if (totalIntegers > 3){
				totalSeparator = Math.floor(totalIntegers / 3);
			} else {
				totalSeparator = 0
			}
			arrayString = integers.split("");
			totalIntegers--;
			separator = 1;
			finalNumber = "";
			while (totalIntegers >= 0){
				finalNumber = arrayString[totalIntegers] + finalNumber;
				if (separator >= 3 && totalSeparator > 0 && totalIntegers > 0){
					finalNumber = this.integerSeparator+finalNumber;
					separator = 1
				} else {
					separator++;
				}
				totalIntegers--;
			}
			finalNumber = finalNumber+this.decimalSeparator+decimals
			return finalNumber;
		},
		this.numberFormatExec = function (value){
			if (value > 0 && !isNaN(value)){
				formattedNumber = this.mountNumber(value)
				return formattedNumber;
			} else {
				return "0"+this.decimalSeparator+"00";
			}
		},
		this.currencyFormatExec = function (value){
			if (value > 0 && !isNaN(value)){
				formattedNumber = this.mountNumber(value)
				formattedNumber = this.currencySymbol+" "+formattedNumber
				return formattedNumber;
			} else {
				return "0"+this.decimalSeparator+"00";
			}
		}
	}
};
window.prototype = Powerv;
