﻿function SetErrorClass(elementName, rootid, isvalid) {
    var elements = document.getElementsByTagName(elementName);
       
    for (var i = 0; i < elements.length; i++) {
        if (elements[i].id.indexOf(rootid) >= 0 
            || elements[i].parentNode.id.indexOf(rootid) >= 0
            || (elements[i].getAttribute('htmlFor') && elements[i].getAttribute('htmlFor').indexOf(rootid) >= 0) 
            || (elements[i].getAttribute('for') && elements[i].getAttribute('for').indexOf(rootid) >= 0)) 
        {
            if (isvalid) {
                elements[i].className = elements[i].className.replace(' error', '');
                if (elements[i].className == 'error') {
                    elements[i].className = '';
                }
            }
            else {
                elements[i].className = elements[i].className.replace(' error', '') + ' error';
            }
        }
    }
}
function SetErrorClassMultiple(arrElements, rootid, isvalid) {
    if (arrElements.length > 0) {
        for (var i = 0; i < arrElements.length; i++) {
            SetErrorClass(arrElements[i], rootid, isvalid);    
        }
    }
}
function GetRootID(id) {
    var idparts = id.split('_');
    var newid = '';
    for (var i = 0; i < idparts.length - 1; i++) {
        newid += idparts[i] + '_';
    }
    return newid;
}
function CustomRequired(source, arguments) {
    if (arguments.Value.length > 0) {
        arguments.IsValid = true;
    }
    else {
        arguments.IsValid = false;
    }

    var arrElements = new Array("div", "span", "input", "select", "label", "textarea");
    SetErrorClassMultiple(arrElements, GetRootID(source.controltovalidate), arguments.IsValid);
}
function CheckEmail(source, args) {
    var elem = document.getElementById(source.controltovalidate);    

    if (/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/i.test(elem.value)) {
        args.IsValid = true;
    }
    else {
        args.IsValid = false;
    }

    var arrElements = new Array("div", "span", "input", "select", "label", "textarea");
    SetErrorClassMultiple(arrElements, GetRootID(source.controltovalidate), args.IsValid);
}
function CustomRequiredDropdownList(source, arguments) {
    if (arguments.Value == '-1' || arguments.Value == '') {
        arguments.IsValid = false;
    }
    else {
        arguments.IsValid = true;
    }

    var arrElements = new Array("div", "span", "input", "select", "label");
    SetErrorClassMultiple(arrElements, GetRootID(source.controltovalidate), arguments.IsValid);
}
function CustomRequiredRadioList(source, arguments)
{        
    var radioList = document.getElementById(source.controltovalidate);
    var listItems = radioList.getElementsByTagName("input");
    arguments.IsValid = false;
    
    for (var i = 0; i < listItems.length; i++)
    {             
        if (listItems[i].checked)
        {                
            arguments.IsValid = true;
            break;
        }
    }

    var arrElements = new Array("div", "span", "label");
    SetErrorClassMultiple(arrElements, GetRootID(source.controltovalidate), arguments.IsValid);
}
//*** Begin Date functions ***//     
function checkDate(source, clientside_arguments)
{
	var dateok = true;
	var elID = source.id.substring(0,(source.id.length -13))
	day = document.getElementById(elID + 'tbDatum_D');
	month = document.getElementById(elID + 'tbDatum_M');
	year = document.getElementById(elID + 'tbDatum_Y');

	if (day.value != '' && month.value != '' && year.value != '') {
	    dateok = IsDateOk(day.value, month.value, year.value);
	    
	    if (dateok) {
	        year.style.color = '#000000';
	        month.style.color = '#000000';
	        day.style.color = '#000000';
	    }
	    else {
	        year.style.color = '#FF0000';
	        month.style.color = '#FF0000';
	        day.style.color = '#FF0000';
	    }
	}

    if (clientside_arguments)
    {
        clientside_arguments.IsValid = dateok;
    }
}
function checkDate1(source, clientside_arguments)
{
	var dateok = true;
	var elID = source.id.substring(0,(source.id.length -13))
	day = document.getElementById(elID + 'tbDatum_D');
	month = document.getElementById(elID + 'tbDatum_M');
	year = document.getElementById(elID + 'tbDatum_Y');
		
    if (day.value != '' && month.value != '' && year.value != '')
    {
        dateok = IsDateOk(day.value, month.value, year.value); 
        
        var arrElements = new Array("div", "span", "input", "select", "label", "textarea");
        SetErrorClassMultiple(arrElements, GetRootID(source.controltovalidate), dateok);    
	}	

    if (clientside_arguments)
    {
        clientside_arguments.IsValid = dateok;
    }
}
function checkDate2(source, arguments) {
    var dateok = false;

    if (!arguments) {return;}
    if (arguments == '') {
        dateok = false;
    }
    else {
        var dateParts = arguments.Value.replace('/', '-').replace('/', '-').replace(' ', '-').replace(',', '-').split('-');
        if (dateParts.length != 3) {
            dateok = false;
        }
        else {
            dateok = IsDateOk(dateParts[0], dateParts[1], dateParts[2]);
        }
    }
   
    arguments.IsValid = dateok;    
}
function checkDate3(source, arguments) {
    var dateok = false;

    if (!arguments) { return; }
    if (arguments == '') {
        dateok = false;
    }
    else {
        var dateParts = arguments.Value.replace('/', '-').replace('/', '-').replace(' ', '-').replace(',', '-').split('-');
        if (dateParts.length != 3) {
            dateok = false;
        }
        else {
            dateok = IsDateOk(dateParts[0], dateParts[1], dateParts[2]);
        }
    }

    arguments.IsValid = dateok;
    var arrElements = new Array("div", "span", "input", "select", "label", "textarea");
    SetErrorClassMultiple(arrElements, GetRootID(source.controltovalidate), dateok);
}
function IsDateOk(day, month, year)
{
    var dateok = true;
    var max; 
    
    if (day != '' && month != '' && year != '') {
        if (isNaN(day) || isNaN(month) || isNaN(year)) {
            dateok = false;
        }
        else {
            if (month < 1 || month > 12) {
                dateok = false;
            }
            else {
                switch (month) {
                    case '1':
                    case '01':
                    case '3':
                    case '03':
                    case '5':
                    case '05':
                    case '7':
                    case '07':
                    case '8':
                    case '08':
                    case '10':
                    case '12':
                        max = 31;
                        break;
                    case '2':
                    case '02':
                        if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) {
                            max = 29;
                        }
                        else {
                            max = 28;
                        }
                        break;
                    default:
                        max = 30;
                        break;
                }
                if (day < 1 || day > max) {
                    dateok = false;
                }
            }
        }
        if (year < 1900 || year > 2900) {
            dateok = false;
        }
    }

    return dateok;	
}
function DateMandatory(source, clientside_arguments)
{
	var elID = source.id.substring(0,(source.id.length -20))
	day = document.getElementById(elID + 'tbDatum_D');
	month = document.getElementById(elID + 'tbDatum_M');
	year = document.getElementById(elID + 'tbDatum_Y');
		
	if (day.value != '' && month.value != '' && year.value != '')	
	{
		clientside_arguments.IsValid=true;
	}
	else
	{
	    clientside_arguments.IsValid=false;	    
	}
}
function DateMandatory1(source, arguments)
{
	var elID = source.id.substring(0,(source.id.length -20))
	day = document.getElementById(elID + 'tbDatum_D');
	month = document.getElementById(elID + 'tbDatum_M');
	year = document.getElementById(elID + 'tbDatum_Y');
	
	if (day.value != '' && month.value != '' && year.value != '')	
	{
		arguments.IsValid = true;		
	}
	else
	{
	    arguments.IsValid = false;
	}

	var arrElements = new Array("div", "span", "input", "select", "label", "textarea");
	SetErrorClassMultiple(arrElements, GetRootID(source.controltovalidate), arguments.IsValid);	
}
//*** End Date functions ***// 
function ClientValidationCheckBoxList(source, args)
{
    var customValidatorID = "cfvRequiredValidator";
    var elID = source.id.substring(0,(source.id.length - customValidatorID.length)) + "cblInputField";
    var chkListTM = document.getElementById(elID);
    var chkList = chkListTM.getElementsByTagName("input");
    for(var i = 0; i < chkList.length; i++)
    {   
        if(chkList[i].checked)
        {
            args.IsValid = true;            
            return;
        }
    }    
    args.IsValid = false;     
}
function ClientValidationCheckBoxList1(source, args) {
    var customValidatorID = "cfvRequiredValidator1";
    var elID = source.id.substring(0, (source.id.length - customValidatorID.length)) + "cblInputField";
    var chkListTM = document.getElementById(elID);
    args.IsValid = false;
    var chkList = chkListTM.getElementsByTagName("input");
    for (var i = 0; i < chkList.length; i++) {
        if (chkList[i].checked) {
            args.IsValid = true;
            break;
        }
    }
    var arrElements = new Array("span", "label", "div", "select", "td");
    SetErrorClassMultiple(arrElements, GetRootID(elID), args.IsValid);
}

function ClientValidationListBox(source, args)
{
    var lsbListTM = document.getElementById ('<%= lsbInputField.ClientID %>');
    var lsbList= lsbListTM.getElementsByTagName("option");
    for(var i=0;i<lsbList.length;i++)
    {   
        if(lsbList[i].selected)
        {
            args.IsValid = true;
            return;
        }
    }
    args.IsValid = false;
}  
