// JavaScript Document



function resetFields(whichform) {
  for (var i=0; i<whichform.elements.length; i++) {
    var element = whichform.elements[i];
    if (element.type == "submit") continue;
    if (!element.defaultValue) continue;
    element.onfocus = function() {
    if (this.value == this.defaultValue) {
      this.value = "";
     }
    }
    element.onblur = function() {
      if (this.value == "") {
        this.value = this.defaultValue;
      }
    }
  }
}

function validateForm(whichform) {
	// remove any error messages
	var spans = document.getElementsByTagName("span");
	for (var i=0; i<spans.length; i++) {
		if (spans[i].getAttribute("className") == "error_msg") {
			spans[i].parentNode.removeChild(spans[i]);
			i--;
		}
	}
	//test mode
	if (whichform.className.indexOf("test") != -1) {
		if (!confirm("You are in test mode. Do you want to continue?")) return false;
	}
	var validated = true;
	for (var i=0; i<whichform.elements.length; i++) {
		var element = whichform.elements[i];
		if (element.className.indexOf("required") != -1) { //if this field is mandatory
			if (element.name.toLowerCase().indexOf("email") != -1 || element.name.toLowerCase().indexOf("ea") != -1  ) {
				if (whichform.className.indexOf("test") != -1) element.value = "Test@Value.com";
				if (!isEmail(element)) {
					createErrorMsg("Please complete, using a valid email address!", element);
					validated = false;
				}
			//call custom validation function and error messages
			/*} else if (condition) {
				if (!isFunction(element)) {
					createErrorMsg("", element);
					validated = false;
				}
			*/		
			} else if (element.name.toLowerCase().indexOf("keyphrase") != -1) {
				if (whichform.className.indexOf("test") != -1) element.value = "Test Keyphrase";
				if (!isKeyphrase(element)) {
					createErrorMsg("Please type at least TWO words into this box!", element);
					validated = false;
				}
						
				
			} else {
				if (whichform.className.indexOf("test") != -1) element.value = "Test Value";
				if (!isFilled(element)) {
					createErrorMsg("Please fill in  "+element.title+"!", element);
					validated = false;
				}
			}
		}
	}
	if (whichform.className.indexOf("test") != -1) {
		if (!confirm("Do you want to submit this form?")) return false;
	}
	return validated;
}


function createErrorMsg(msg, element) {
	var errorMsg = document.createElement("span");
	errorMsg.setAttribute("class","error_msg");
	errorMsg.setAttribute("className","error_msg");
	var emText = document.createTextNode(msg);
	errorMsg.appendChild(emText); 
	element.parentNode.insertBefore(errorMsg,element);	
}

function isFilled(field) {
  if (field.value.length < 1 || field.value == field.defaultValue) {
    return false;
  } else {
    return true;
  }
}


function isEmail(field) {

		var str = field.value;
		var at = "@";
		var dot = ".";
		var lat = str.indexOf(at);
		var lstr = str.length;
		var ldot = str.indexOf(dot)
		if (str.indexOf(at) == -1) {
		   return false;
		} else if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   return false;
		} else if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    return false;
		} else  if (str.indexOf(at,(lat+1))!=-1){
		    return false;
		} else  if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    return false;
		} else  if (str.indexOf(dot,(lat+2))==-1){
		    return false;
		} else  if (str.indexOf(" ")!=-1){
		    return false;
		} else {
			return true;
		}


//if (field.value.substr(field.value.indexOf("@")+1,1) == "." || field.value.lastIndexOf(".") < field.value.indexOf("@") || field.value.lastIndexOf(".") >= field.value.length-2 || field.value == field.defaultValue) {
//    return false;
//  } else {
//    return true;
//  }
}

function isKeyphrase(field) {
	var words = field.value.split(" ");
	if (words.length <= 1 || field.value == field.defaultValue) {
		return false;
	} else {
		return true;
	}
}

function prepareForms() {
  for (var i=0; i<document.forms.length; i++) {
    var thisform = document.forms[i];
    resetFields(thisform);
    thisform.onsubmit = function() {
      return validateForm(this);
    }
  }
}

add_load_event(prepareForms);
