﻿
function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}


function daysInMonth(month,year) {
    var m = [31,28,31,30,31,30,31,31,30,31,30,31];
    if (month != 2) return m[month - 1];
    if (year%4 != 0) return m[1];
    if (year%100 == 0 && year%400 != 0) return m[1];
    return m[1] + 1;
} 
 
function ValidateBirthDate(sender, args)
{
    ctrlDate = $get(birthDateId);
    args.IsValid = ValidateDate(ctrlDate);
    return;
}
function ValidatePassportIssueDate(sender, args)
{
    ctrlDate = $get(passportIssueDateId);
    args.IsValid = ValidateDate(ctrlDate);
    return;
}

function CompareDates(sender, args)
{
    ctrlBirthDate = $get(birthDateId);
    ctrlPassportIssueDate = $get(passportIssueDateId);
        
    if (!ValidateDate(ctrlBirthDate) || !ValidateDate(ctrlPassportIssueDate)) 
        args.IsValid = true; // возвращаем true, поскольку будет обработано RequiredFieldValidator'ами
    else //оба валидные, сравниваем их
    {
        if(GetDateValue(ctrlBirthDate) >= GetDateValue(ctrlPassportIssueDate))
           args.IsValid = false;
        else
           args.IsValid = true;
    }
    
}

function GetDateValue(dateControl)
{
    var options = dateControl.getElementsByTagName('select');
    if (options.length == 3)
    {
        month = options[1].value;
        day = options[0].value;
        if (month.length == 1) month = "0" + month;
        if (day.length == 1) day = "0" + day;
        
       return options[2].value + "-" + month + "-" + day;
    }
    return "";
}

function ValidateDate(dateControl)
   {
       var options = dateControl.getElementsByTagName('select');
       valid = false;

       if (options.length == 3)
            valid = isDate(options[2], options[1], options[0]);

       return valid;
   }

function isDate(selectYear, selectMonth, selectDay)
{
    month=parseInt(selectMonth.value);
	day=parseInt(selectDay.value);
	year=parseInt(selectYear.value);
    
    if (year == 0)
        return false;
        
	if (month<1 || month>12)
		return false;

	if (day<1 || day>31 || day > daysInMonth(month, year))
		return false; 
	
	return true;
}

