/*
  Form.js
*/


function magicSubmit() {  // magic submit makes 
	// javascript submit() actually work as it should
   var sub = document.createElement("INPUT");
   sub.type="submit";
   sub.value="";
   sub.style.display="none";
   this.appendChild(sub);
   sub.click();
}
function focusField(form, fieldName) 
{

    if (form[fieldName]) {
        if (!form[fieldName].disabled) {
            if (form[fieldName].focus) {
                try {
                    form[fieldName].focus();
                } catch (e) { }
                
            }
            
        }
    }
    else
    {
        var thing = document.getElementById(fieldName);
        var fn = thing.getAttribute("fieldName");
        
        if (!form[fn].disabled) {
            if (form[fn].focus) {
                try {
                    form[fn].focus();
                } catch (e) { }
                
            }
            
        }
        
    }
    
}


function focusFirst(form) {
    if (form.controls == null) {
        return;
    }
	if (!form.controls)
		return;
    for (var i = 0 ; i < form.controls.length ; i++) {  
        if (form.controls[i]) {
	    if ((form.controls[i].className == "invalid") && (!form.controls[i].disabled)) {
                if (form.controls[i].focus) {
                    try {
                        form.controls[i].focus();
                        return;
                    } catch (e) { }
                }
            } 
        }
    }

    for (var i = 0 ; i < form.controls.length ; i++) {
        if (!form.controls[i].disabled) {
            if (form.controls[i].focus) {
                try {
                    form.controls[i].focus();
                    return;
                } catch (e) { }
            }
        }
    }

}

function addValidationEvent(form, control, func) {
    if (form.controls == null) {
        form.controls = new Array();
        form.functions = new Array();
    }
    form.controls[form.controls.length] = control;
    form.functions[form.functions.length] = func;
}

function addControl(form, control) {
    if (form.controls == null) {
        form.controls = new Array();
        form.functions = new Array();
    }
    form.controls[form.controls.length] = control;
    form.functions[form.functions.length] = null;
}


function validateModelForm(form) {
    if (form.controls ==  null) {
        return true;
    }


    var div = document.getElementById("div"+form.getAttribute("name"));

    var error = false;
    var firstControl = null;
    var cleared = false;

    for (var i = 0 ; i < form.controls.length ; i++) {
        form.controls[i].errorCount = 0;
    }
 
    for (var i = 0 ; i < form.functions.length ; i++) {
        var func = form.functions[i];
        var ret;
        
        if (func != null) {
            ret = func();
        } else {
            ret = null;
        }
        
        if (ret!=null) {
            if (!cleared) {
                while (div.hasChildNodes()) {
                    div.removeChild(div.firstChild);
                }
                cleared = true;
            }
            div.appendChild(createDiv(ret, form, form.controls[i], div));
            form.controls[i].errorCount++;
            if (firstControl == null) {
                firstControl = form.controls[i];
            }
            error = true;
        }

    }

    for (var i = 0 ; i < form.controls.length ; i++) {
        if (form.controls[i].errorCount > 0) {
            form.controls[i].className = "invalid";
        } else {
            form.controls[i].className = "";
        }

    }


    if ((firstControl != null) && (!firstControl.length)) {
        firstControl.focus();
    }
    if (!error) {
        var inputs = form.getElementsByTagName("input");
        for (var i = 0 ; i < inputs.length ; i++) {
            if ((inputs[i].type.toLowerCase() == "submit") 
                || (inputs[i].type.toLowerCase() == "button")) {         
                inputs[i].disabled = true;
            }
        }
        var img = document.getElementById("img" + form.name);
        if (img) {
            var d = getWindowDimensions();
            img.style.display="block";
            img.style.position = "absolute";
            img.style.left = (d.width / 2) - 120;
            img.style.top = (d.height / 2) - 200;
            img.zIndex = 500;
            
            hideAllSelects();
            
            var msg = form.getAttribute("longTimeMessage");
            if (msg != null) {
                var md = document.createElement("SPAN");
                md.nowrap = true;
                
                md.className="enqhdr";
                md.innerHTML = msg;
                img.parentNode.appendChild(md);

                var width = md.offsetWidth;
                
                md.style.display="block";
                md.style.position = "absolute";
                md.style.left = (d.width / 2) - (width / 2);
                md.style.top = (d.height / 2) - 20;
                md.zIndex = 600;
                
                
                
            }
            
        }
        
    } else {
        div.scrollIntoView();
        
    }
    
        
    
    return !error;
}

function createDiv(ret, form, control, parent) {
    var newDiv = document.createElement("DIV");
    var newImg =  document.createElement("IMG");
    var newA = document.createElement("A");
    var newSpan =  document.createElement("SPAN");

    newA.innerHTML = unescape(ret).replace(/\+/g, " ");
    newA.className="errorMessage";
    
    newA.href="javascript:document."+form.name+"."+control.name+".focus();";
    newImg.src = parent.getAttribute("image");
    newImg.border = 0;
    newImg.align = "absmiddle";
    newSpan.innerHTML = "&nbsp;";
    newDiv.appendChild(newImg);
    newDiv.appendChild(newSpan);
    newDiv.appendChild(newA);
    return newDiv;
}





