var TextCounter = Class.create();
TextCounter.prototype = {
    initialize: function(textareaid, inputid, maxLength) {
        this.maxLength = maxLength - 1;
        this.textarea = $(textareaid);
        this.input = $(inputid);
        this.input.update(maxLength);
        Event.observe(this.textarea, 'keyup', this.checkChars.bindAsEventListener(this));
        Event.observe(this.textarea, 'keydown', this.checkChars.bindAsEventListener(this));
        this.checkChars();
    }, 
    checkChars: function(e) {
        var includeBreaksInCount = false; // false = don't count a return (\r or \n) in the count.
        var charCount = this.textarea.value.length;
        var breaks = 0;
        if (!includeBreaksInCount) {
            var lines = this.textarea.value.split('\n');
            breaks = lines.length;
            // check for /r at the end of the lines (IE)
            for (var i=0; i<lines.length; i++) {
                var line = lines[ i ];                
                if (line.charCodeAt(line.length-1) == 13)
                    breaks++;
            }
            
        }
        
        // check if over limit
        if ((charCount-breaks) > this.maxLength) {            
            this.textarea.value = this.textarea.value.substring(0, (this.maxLength + breaks) );
        }
        
        // update counter
        if (this.input) {
            if ((charCount-breaks) > this.maxLength) {
                this.input.update(0);
            } else {
                this.input.update( (this.maxLength + breaks) - charCount );
            }        
        }
    }
}

function trim(str){ var str = str.toString();return str.replace(/^\s+|\s+$/g,""); }

function validateEmail(email){
	var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
	
	return filter.test(email);
}

function $RF(el, radioGroup) {
	if($(el).type && $(el).type.toLowerCase() == 'radio') {
		var radioGroup = $(el).name;
		var el = $(el).form;
	}else if ($(el).tagName.toLowerCase() != 'form') {
		return false;
	}

	var checked = $(el).getInputs('radio', radioGroup).find(
		function(re) {return re.checked;}
	);

	return (checked) ? $F(checked) : null;
}

function lengthTextArea(field,length,count){  
	var size = $(field).value.length;
	var text = $(field).value;
	var remaining = length - size;
	
  if(count == 'undefined')
    var count = true;
  else
    var count = false;

	if (size >= length){
		$(field).value = text.substring(0,length);
	}

  if(count == true){
    if(remaining > 1)
      $(field).next('span').innerHTML = remaining + ' caracteres';
    else if(remaining < 1)
      $(field).next('span').innerHTML = '0 caracteres';
    else
      $(field).next('span').innerHTML = remaining + ' caractere';
  }

	return true;
}

function isChecked(field){
	fieldLength = field.length; 

	if(fieldLength == undefined){
		if(field.checked == true)
			return true;
	}else{
		for(i = 0; i < field.length; i++){
			if(field[i].checked)
				return true;
		}
	}

	return false;
}

function checkAll(form){
	var statement = '#'+ form + ' input[type=checkbox]';
	var checkboxes = $$(statement);

	checkboxes.each(function(item){
		item.checked = 1;
	});
}

function checkAllName(form,field){
	var statement = '#'+ form + ' input[name=' + field + ']';
	var checkboxes = $$(statement);

	checkboxes.each(function(item){
		item.checked = 1;
	});
}

function Checked(id){
	var checked = false;
	var checkbox = $$(id);
	
	checkbox.each(
		function(item){
			if(item.checked == true){
				checked = true;
				throw $break;
			}
		}
	);
	
	return checked;
}

function IsNumeric(strString){
	var strValidChars = "0123456789";
	var strChar;
	var blnResult = true;
	
	if (strString.length == 0) return false;
	
	for (i = 0; i < strString.length && blnResult == true; i++){
		strChar = strString.charAt(i);
		if (strValidChars.indexOf(strChar) == -1){
			blnResult = false;
		}
	}

	return blnResult;
}

function PhoneMask(objeto){
	if(objeto.value.length == 0)objeto.value = '(' + objeto.value;
	if(objeto.value.length == 3)objeto.value = objeto.value + ')';
	if(objeto.value.length == 8)objeto.value = objeto.value + '-';
}

function ClearSelectBox(SelectElement){
	var el = $(SelectElement);
	while(el.firstChild){
		el.removeChild(el.firstChild);
	}
}
