// JavaScript Document
///////////////////////////////////////////////////////////////////////////////////////////////
/*   
   input.invalid { background: #fa0; }
   input.valid { background: #fa0; }
*/
var needsValidation;
(function() {
    // When the document finishes loading, call init()
   	if (window.addEventListener) window.addEventListener("load", init, false);
    else if (window.attachEvent) window.attachEvent("onload", init);
    // Define event handlers for any forms and form elements that need them.
	
    function init() {
        // Loop through all forms in the document
        for(var i = 0; i < document.forms.length; i++) {
            var f = document.forms[i];  // the form we're working on now
            // Assume, for now, that this form does not need any validation
            needsValidation = false;
			
            // Now loop through the elements in our form
            for(j = 0; j < f.elements.length; j++) {
                var e = f.elements[j];  // the element we're working on
		
                // See if it has attributes that require validation
                var pattern = e.getAttribute("pattern");
                // We could use e.hasAttribute() but IE doesn't support it
                var required = e.getAttribute("required") != null;
				
				// Required is just a shortcut for a simple pattern
                if (required && !pattern) {
                    pattern = "\\S";
                    e.setAttribute("pattern", pattern);

                }				

                // If this element requires validation,
                if (pattern) {
					if(document.getElementById("pageType").value=="edit"){
						if (e.type == "file"){
							e.setAttribute("isValid", true);
							document.getElementById('vl'+e.id).className = "valid";
						}else{
							e.setAttribute("isValid", checkPattern(e,pattern));
						}
					}else{ 
						e.setAttribute("isValid", false);
					}
					
					switch(e.type){
						case "select-one":
							e.onchange = validateOnEvents;
							break;
						case "file":
							e.onchange = validateOnEvents;
							break;
						default:
							if (e.addEventListener) //Mozila
								 e.addEventListener("keyup", validateOnEvents, false);
							else e.onkeyup = validateOnEvents;	//IE				
					}
                    // Remember to add an onsubmit handler to this form
                    needsValidation = true;
                }
            }
            // If at least one of the form elements needed validation,
            // we also need an onsubmit event handler for the form
            if (needsValidation) f.onsubmit = validateOnSubmit;
        }
    }
          
    // This function is the onchange event handler for form elements that 
    // require validation.  Remember that we converted the required attribute
    // to a pattern attribute in init().
    function validateOnEvents(event) {

        var frmElement = this;                            // the frmElement
        var pattern = frmElement.getAttribute("pattern"); // the pattern
        var value = this.value;                          // the user's input
        // If the value does not match the pattern set the class to "invalid".
		
		
		var e = event||window.event;
		var keycode = e.charCode || e.keyCode;

		if(keycode != 9 && keycode != 16){
			checkPattern(frmElement,pattern);
		}

    }

    // This function is the onsubmit event handler for any form that 
    // requires validation.
    function validateOnSubmit() {
        var invalid = false;  // Start by assuming everything is valid
        // Loop through all form elements
        for(var i = 0; i < this.elements.length; i++) {
            var e = this.elements[i];

            if (e.getAttribute("isValid") == false || e.getAttribute("isValid") == "false") {
							invalid = true;
							var pattern = e.getAttribute("pattern");
							checkPattern(e,pattern);
						}

        }
        // If the form is invalid, alert user and block submission
        if (invalid) {
			//bebConfirm("<img src=img/msgBD.png align=absmiddle>&nbsp;Invalid data","The form is incompletely or incorrectly filled out.\n Please correct the  highlighted fields and try again.",null,true)
	  				alert("The form is incompletely or incorrectly filled out.\n Please correct the  highlighted fields and try again.");
            return false;
        }
    }
	
	function checkPattern(frmElement,pattern){
		var valid = false ;
		var value = frmElement.value;
		//vlImg = document.getElementById('vl'+frmElement.id)
		vlImg = document.getElementById(frmElement.id)
		
		switch(frmElement.type)
		{
		case "select-one":
			if (frmElement.selectedIndex == 0) valid = false;	
			else valid = true;
		break;    
		default:
			
			var regex = new RegExp(pattern,"i");

			if (value.search(regex) == -1) valid = false;
			else valid = true;
		}//EOSwitch
		
		if (!valid) {
			//vlImg.className = 'invalid';
			frmElement.setAttribute("isValid", "false");	
			frmElement.style.border = "1px solid #CC3300";
		}else{
			frmElement.setAttribute("isValid", "true");	
			frmElement.style.border = "1px solid #0099CC";
			//vlImg.className = 'valid';
		}				
		return valid;
	}
	
	
})();


checkUnique = function(obj,table,field,errMsg){
	if(obj.getAttribute("isValid")== 'true'){
		obj.style.background="url(images/working.gif) right no-repeat #FFFFFF";
		errDiv = document.getElementById(obj.id + "ErrMsgBox");
		var parameters = Array();
		parameters["val"] 	= obj.value;
		parameters["table"]  = table;
		parameters["field"]  = field;
		HTTP.post('checkUnique.php',parameters,
				function setItemNavi(response){
					if(response==0){
						obj.style.border = "1px solid #0099CC";
						errDiv.innerHTML = '';
						obj.setAttribute("isValid", "true");
						obj.style.background="#FFFFFF";
					}else{
						obj.style.border = "1px solid #CC3300";
						errDiv.innerHTML = errMsg;
						obj.setAttribute("isValid", "false");
						obj.style.background="#FFFFFF";
					}
				}
				,
				function(err){
					obj.style.border = "1px solid #CC3300";
					alert(err)
				}
		);
		
	}
}