var W3CDOM = (document.getElementsByTagName && document.createElement);
var whitespace = " \t\n\r";
function isEmpty(s) {
   return ((s == null) || (s.length == 0))
}

function isWhitespace (s) {
	var i;

    // Is s empty?
    if (isEmpty(s)) return true;

    for (i = 0; i < s.length; i++) {   
        var c = s.charAt(i);

        if (whitespace.indexOf(c) == -1) return false;
    }

    return true;
}

function isEmail (s) {  
	
	if (isEmpty(s)) 
    	if (isEmail.arguments.length == 1) return defaultEmptyOK;
    else 
		return (isEmail.arguments[1] == true);
   
    if (isWhitespace(s)) return false;
    var i = 1;
    var sLength = s.length;

    // look for @
    while ((i < sLength) && (s.charAt(i) != "@")) { i++ }

    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;

    while ((i < sLength) && (s.charAt(i) != ".")) { i++ }

    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}

function isUrl(s) {
	var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
	return regexp.test(s);
}

function isNumeric(value) {
  if (value == null || !value.toString().match(/^[-]?\d*\.?\d*$/)) return false;
  return true;
}

function verificarForm(objForm) {
    for(i = 0; i < objForm.length; i++) {
		//Quando campo obrigatório
	    if( objForm[i].getAttribute('msgErro') && 
			( objForm[i].value == "" || 
				( objForm[i].getAttribute('verificar') == "validar_email" && !isEmail(objForm[i].value) ||  objForm[i].getAttribute('verificar') == "validar_url" && !isUrl(objForm[i].value) ) 
			) 
		) {
		    alert(objForm[i].getAttribute('msgErro'));
		    objForm[i].focus();
		    return false;
	    } else 
		//Quando campo não é obrigatório
		if( objForm[i].getAttribute('msgAlerta') && 
			( objForm[i].value != "" && 
				( objForm[i].getAttribute('verificar') == "validar_email" && !isEmail(objForm[i].value) || objForm[i].getAttribute('verificar') == "validar_url" && !isUrl(objForm[i].value) ) 
			) 
		) {
			alert(objForm[i].getAttribute('msgAlerta'));
			objForm[i].focus();
			return false;
		}
    }
	return true;
}

var boxerror = null;
function verificarFormBox(objForm,objBoxError) {
    for(i = 0; i < objForm.length; i++) {
		//Quando campo obrigatório
	    if( objForm[i].getAttribute('msgErro') && 
			( objForm[i].value == "" || 
				( objForm[i].getAttribute('verificar') == "validar_email" && !isEmail(objForm[i].value) ||  objForm[i].getAttribute('verificar') == "validar_url" && !isUrl(objForm[i].value) ) 
			) 
		) {
			boxerror = objBoxError;
			writeError(objForm[i],objForm[i].getAttribute('msgErro'));
		    objForm[i].focus();
		    return false;
	    } else 
		//Quando campo não é obrigatório
		if( objForm[i].getAttribute('msgAlerta') && 
			( objForm[i].value != "" && 
				( objForm[i].getAttribute('verificar') == "validar_email" && !isEmail(objForm[i].value) || objForm[i].getAttribute('verificar') == "validar_url" && !isUrl(objForm[i].value) ) 
			) 
		) {
			boxerror = objBoxError;
			writeError(objForm[i],objForm[i].getAttribute('msgAlerta'));
		    objForm[i].focus();
		    return false;
		}
    }
	return true;
}

/*var objDisplay = document.getElementById('display_error');
function writeError(obj,message) {
	validForm = false;
	if (obj.hasError) return;
	if (W3CDOM) {
		obj.onchange = removeError;
		//err = document.createTextNode(message);
		//dv = document.createElement('div');
		//dv.appendChild(document.createTextNode(message));
		//dv.id = 'display_error';
		//obj.parentNode.parentNode.parentNode.parentNode.appendChild(dv);
		if (document.all) { // IE;
			objDisplay.innerText = message;
		} else {
			objDisplay.textContent = message;
		}
		obj.hasError = objDisplay;
	}
	else {
		errorstring += obj.name + ': ' + message + '\n';
		obj.hasError = true;
	}
}*/
function writeError(obj,message) {
	validForm = false;
	if (obj.hasError) return;
	if (W3CDOM) {
		obj.onchange = removeError;
		$(boxerror).text(message);
		obj.hasError = boxerror;
	} else {
		errorstring += obj.name + ': ' + message + '\n';
		obj.hasError = true;
	}
}

function removeError(){
	boxerror.hide();
	this.hasError = null;
	this.onchange = null;
}

