﻿// validation control functions
// Created by Sajan M Singh Suwal
// 

//global var declaration
var errorMsg = "This field is invalid";
var valid = true;
var invalid = 0;
var page=false;
var PageValid = false;
//attach events to window onload
if (typeof document.attachEvent!='undefined') {
    window.attachEvent('onload',init);
}
else {
    window.addEventListener('load',init,false);
}

//Initialize controls 
//
function init(){
    //search for all the input elements
    var elements1 = document.getElementsByTagName("input");	
    scanNodeList(elements1);
    //search the <select> elements
    var elements2 = document.getElementsByTagName("select");
    scanNodeList(elements2);
    //var elements = joinNodeLists(elements1,elements2);
    //alert(elements.length);
}


function validatePage(){
    //search for all the input elements
	page=true;
    var elements1 = document.getElementsByTagName("div");	
    scanNodeList(elements1);
	return PageValid;
}

function scanNodeList(elements){
	for (i=0;i< elements.length;i++){	        
	       if (elements[i].type!='hidden')
	               scanForValidation(elements[i]);
    }
}

function scanForValidation(currentNode){
	if (!page)
	{
		if (currentNode.title!="" & typeof(currentNode.title) == 'string'){
        	validateOnblur(currentNode);
        	addErrorDisplay(currentNode);
		}
    } 

}


function validateOnblur(currentNode){
    if (typeof document.attachEvent!='undefined') {
        currentNode.attachEvent('onblur',validate);
		currentNode.valid = "false";
    }  
    else {
        currentNode.addEventListener('blur',validate,false);
		currentNode.valid= "false"
    }
    
}

function addErrorDisplay(currentNode){
    var er = document.createElement("div");
	er.title = "err";
    er.style.display = 'none';
    //er.innerHTML="error";
    currentNode.parentNode.appendChild(er);

}

function showError(node){
    node.innerHTML = errorMsg;
    node.style.display='block';
    node.previousSibling.style.border = error;
}

function hideError(node){
    node.style.display='none';
    node.previousSibling.style.border = normal;
}

function validate(){
    //alert(this.name);
    valid = true;
	if (invalid==0){
		PageValid = true;
		invalid++;
	}
	var test ="";
	if(this.title){
		test = this.title.toUpperCase();
	}
    switch(test){
        case "REQUIRED":
            //alert(this.value);
            errorMsg = "<span class='errorMsg'>This information is required</span>";
            if(isEmpty(this.value)) { valid=false;}
            break;
        case "EMAIL":
            errorMsg = "<span class='errorMsg'>Email address is not valid.</span>";
            if(!isEmail(this.value)) { valid=false;}
            break;
        case "ZIP":
			if(isEmpty(this.value)){
				 errorMsg = "<span class='errorMsg'>This information is required</span>";
				 valid=false;
			}else if(!isNumber(this.value) || (this.value.length<5))			   
			{
            	errorMsg = "<span class='errorMsg'>zip-code is not valid.</span>";
				valid=false;
			}
			break;
        case "PHONE":
            errorMsg = "<span class='errorMsg'>Phone number does not contain enough numbers.</span>";
       
        default:
            errorMsg = "This field is invalid";
            break;
    }
	//alert(this.value);
   if(!valid){ 
   		showError(this.nextSibling);
	} else {
		hideError(this.nextSibling);
	}

}