﻿//******************************************************************************************
// Functions to Handle .Net Validation Controls
//******************************************************************************************
// Validate the passed in validation control
function validatorValidate(val) 
{    
    val.isvalid = true;
    
    if (val.enabled != false)
        if (typeof(val.evaluationfunction) == "function")
            val.isvalid = val.evaluationfunction(val); 
    
    validatorUpdateDisplay(val);
}

// Either show or hide the validation control based on the isvalid property
function validatorUpdateDisplay(val) 
{
    if (typeof(val.display) == "string") {    
        if (val.display == "None") {
            return;
        }
        if (val.display == "Dynamic") {
            val.style.display = val.isvalid ? "none" : "inline";
            return;
        }
    }
    
    val.style.visibility = val.isvalid ? "hidden" : "visible";
}

// Reset all validation controls in the passed in array
function validatorReset(valArray)
{   
    for (var x = 0; x < valArray.length; x++)
    {
        valArray[x].isvalid = true;
        valArray[x].style.display = 'none';
    }
}

function validatorDisable(valArray)
{
    for (var x = 0; x < valArray.length; x++)
    {
        valArray[x].enabled = false;
    }
}

function validatorEnable(valArray)
{
    for (var x = 0; x < valArray.length; x++)
    {
        valArray[x].enabled = true;
    }
}

// Show the validation summary control for the given array
function validationSummary(summary, valArray) 
{
    var s;
    summary.style.display = "none";

    if (summary.showsummary != "False") {
        summary.style.display = "block";
        
        if (typeof(summary.displaymode) != "string") {
            summary.displaymode = "BulletList";
        }
        switch (summary.displaymode) {
            case "List":
                headerSep = "<br />";
                first = "";
                pre = "";
                post = "<br />";
                final = "";
                break;
            case "BulletList":
            default: 
                headerSep = "";
                first = "<ul>";
                pre = "<li>";
                post = "</li>";
                final = "</ul>";
                break;
            case "SingleParagraph":
                headerSep = " ";
                first = "";
                pre = "";
                post = " ";
                final = "<br />";
                break;
        }
        s = "";
        if (typeof(summary.headertext) == "string") {
            s += summary.headertext + headerSep;
        }
        s += first;
        
        // Add items to the 
        for (i = 0; i < valArray.length; i++) {
            if (!valArray[i].isvalid && typeof(valArray[i].errormessage) == "string") {
                s += pre + valArray[i].errormessage + post;
            }
        }  
         
        s += final;
        summary.innerHTML = s;
    }
}
//Validates that inputDate is a valid date.
function ValidDate(inputDate) 
{
	//Assumes dd/mm/ccyy as format
	rx=new RegExp('^\\d{1,2}\\/\\d{1,2}\\/\\d{4}$');
	
	if(rx.exec(inputDate)==null){
		return false;
	}
	
	var substrings=inputDate.split('/');
	var strDay = substrings[0]
	var strMonth = substrings[1]
	var strYear = substrings[2]
	var strDate = strMonth + "/" + strDay + "/" + strYear
	var testDate = new Date(strDate);
	
	return (testDate.getFullYear()==substrings[2] && (testDate.getMonth()+1)==substrings[1] && testDate.getDate()==substrings[0])
}