﻿/*
    Ronan Farrell: These functions are required for client side validation of QuestionControls. 
*/
function ValMinLength(sender, args){
    try {
        var hiddenControlName = sender.id + 'hiddenMin';
        var hiddenMinControl = document.getElementById(hiddenControlName);

        var charCount = args.Value.length;
        var minChars = parseInt(hiddenMinControl.value)

        if (charCount < minChars) {
            args.IsValid = false;
        }

        else {
            args.IsValid = true;
        }
    }

    catch (err) {
        args.IsValid = true;
    }
}

function ValMaxLength(sender, args){

    try {
        var hiddenControlName = sender.id + 'hiddenMax';
        var hiddenMaxControl = document.getElementById(hiddenControlName);

        var charCount = args.Value.length;
        var maxChars = parseInt(hiddenMaxControl.value)

        if (charCount > maxChars) {
            args.IsValid = false;
        }

        else {
            args.IsValid = true;
        }
    }

    catch (err) {
        args.IsValid = true;
    }
}

function ValidateRequiredDropDown(sender, args){
    try {
        var dropDownControlName = sender.id + 'dropDownControl';
        var dropDownControl = document.getElementById(dropDownControlName);

        if (dropDownControl.selectedIndex == 0) {
            args.IsValid = false;
        }

        else {
            args.IsValid = true;
        }
    }

    catch (err) {
        args.IsValid = true;
    }
}

function ValidateRequiredCheckBoxList(sender, args){

    try {
        var checkBoxListControlName = sender.id + 'chkBxControl';
        var chkList = document.getElementById(checkBoxListControlName);
        var checkbox = chkList.getElementsByTagName("input");

        args.IsValid = false;

        for (var i = 0; i < checkbox.length; i++) {
            if (checkbox[i].checked) {
                args.IsValid = true;
                return;
            }
        }
    }

    catch (err) {
        args.IsValid = true;
    }
}

function ValIsNumber(sender, args)
{
    var strString = args.Value;
    var strValidChars = "0123456789";
    var strChar;
    var blnResult = true;

    args.IsValid = true;
    
    if (strString.length == 0)
    { 
        return;
    }

    //  test strString consists of valid characters listed above
    for (i = 0; i < strString.length && blnResult == true; i++)
    {
        strChar = strString.charAt(i);
        if (strValidChars.indexOf(strChar) == -1)
        {
            blnResult = false;
        }
    }
    
    if (blnResult == false)
    {
        args.IsValid = false;
    }
}

function ShowQuestion(questionID)
{

}

// DateValidation
function DateControlValidator(sender, args){

    try
    {
       var dayControlName = sender.id + 'dropDownDay';
       var monthControlName = sender.id + 'dropDownMonth';
       var yearControlName = sender.id + 'dropDownYear';
       
       var requiredStatusControlName = sender.id + 'HiddenRequired';
       
        var temp = new Array();
        temp = requiredStatusControlName.split('_');

       var d = document.getElementById(dayControlName).value;
       var m = document.getElementById(monthControlName).value;
       var y = document.getElementById(yearControlName).value;
       var requiredStatus = document.getElementById(requiredStatusControlName);
       
       args.IsValid = true;
       if ((d != "0") && (m != "0") && (y != "0")) {
           if (IsValidDate(d, m, y)) {
               args.IsValid = true;
               return;
           }

           else {
               args.IsValid = false;
               return;
           }
       }

       else if (requiredStatus.value == "True") {
           if ((d == "0") || (m == "0") || (y != "0")) {
               args.IsValid = false;
               return;
           }

           if (IsValidDate(d, m, y))
               args.IsValid = true;
           else
               args.IsValid = false;
       }
    }
    
    catch(err)
    {
        args.IsValid = true;
    }
}


function DateRangeOneValidator(sender, args){
    try {
        var dayOneControlName = sender.id + 'dropDownDayOne';
        var monthOneControlName = sender.id + 'dropDownMonthOne';
        var yearOneControlName = sender.id + 'dropDownYearOne';

        var requiredStatusControlName = sender.id + 'HiddenRequired';

        var temp = new Array();
        temp = requiredStatusControlName.split('_');

        var d = document.getElementById(dayOneControlName).value;
        var m = document.getElementById(monthOneControlName).value;
        var y = document.getElementById(yearOneControlName).value;
        var requiredStatus = document.getElementById(temp[3]);

        args.IsValid = true;
        if ((d != "0") && (m != "0") && (y != "0")) {
            if (IsValidDate(d, m, y)) {
                args.IsValid = true;
                return;
            }

            else {
                args.IsValid = false;
                return;
            }
        }

        else if (requiredStatus.value == "True") {
            if (IsValidDate(d, m, y))
                args.IsValid = true;
            else
                args.IsValid = false;
        }
    }
    catch (err) {
        args.IsValid = true;
    }
}

function ValidateDateControlLimit(sender, args)
{
    args.IsValid = true;
    // TODO:
}

function ValidateSecondOverFirst(sender, args)
{
    try
    {
        var id = sender.id;
        var splits = id.split("_");
        var controlBaseID = splits[0] + "_" + splits[1] + "_" + splits[2];
        var questionID = splits[4];
        
        var day1ID = controlBaseID + "_control1" + questionID + "dropDownDayOne";
        var month1ID = controlBaseID + "_control1" + questionID + "dropDownMonthOne";
        var year1ID = controlBaseID + "_control1" + questionID + "dropDownYearOne";
        
        var day2ID = controlBaseID + "_control2" + questionID + "dropDownDayTwo";
        var month2ID = controlBaseID + "_control2" + questionID + "dropDownMonthTwo";
        var year2ID = controlBaseID + "_control2" + questionID + "dropDownYearTwo";
        
        var d1 = document.getElementById(day1ID).value;
        var m1 = document.getElementById(month1ID).value;
        var y1 = document.getElementById(year1ID).value;
        
        var d2 = document.getElementById(day2ID).value;
        var m2 = document.getElementById(month2ID).value;
        var y2 = document.getElementById(year2ID).value;
        
        var DateVal = m1 + "/" + d1 + "/" + y1;
        var dt1 = new Date(DateVal);
        
        var DateVal2 = m2 + "/" + d2 + "/" + y2;
        var dt2 = new Date(DateVal2);
        
        if (dt2 < dt1)
        {
            args.IsValid = false;
        }
        
        else args.IsValid = true;
    }
    
    catch(err)
    {
        args.IsValid = true;
    }

}

function DateRangeTwoValidator(sender, args){
    try {
        var dayTwoControlName = sender.id + 'dropDownDayTwo';
        var monthTwoControlName = sender.id + 'dropDownMonthTwo';
        var yearTwoControlName = sender.id + 'dropDownYearTwo';

        var requiredStatusControlName = sender.id + 'HiddenRequired';

        var temp = new Array();
        temp = requiredStatusControlName.split('_');

        var d = document.getElementById(dayTwoControlName).value;
        var m = document.getElementById(monthTwoControlName).value;
        var y = document.getElementById(yearTwoControlName).value;
        var requiredStatus = document.getElementById(temp[3]);

        args.IsValid = true;
        if ((d != "0") && (m != "0") && (y != "0")) {
            if (IsValidDate(d, m, y)) {
                args.IsValid = true;
                return;
            }

            else {
                args.IsValid = false;
                return;
            }
        }

        else if (requiredStatus.value == "True") {
            if (IsValidDate(d, m, y))
                args.IsValid = true;
            else
                args.IsValid = false;
        }
    }

    catch (err) {
        args.IsValid = true;
    }
}

 function IsValidDate(Day,Mn,Yr){
    var DateVal = Mn + "/" + Day + "/" + Yr;
    var dt = new Date(DateVal);

    if(dt.getDate()!=Day){
        return(false);
        }
    else if(dt.getMonth()!=Mn-1){
    //JavaScript starts the month from 0
        return(false);
        }
    else if(dt.getFullYear()!=Yr){
        return(false);
        }
        
    return(true);
 }


