$(document).ready(function(){
	$(".popupdate").each(function(i,e) { 
        var basename = e.id.substr(6);         
        format=$('#dateformat'+basename).val();
        language=$('#datelanguage'+basename).val();
        yearrange=$('#dateyearrange'+basename).val();
        range=yearrange.split(':');
        $(e).datepicker({ dateFormat: format,  
                          showOn: 'both',
                          changeYear: true, 
                          changeMonth: true,
                          yearRange: yearrange,
                          defaultDate: +0,
                          minDate:new Date(range[0],0,1),
                          maxDate: new Date(range[1],11,31),
                          duration: 'fast'
                        }, $.datepicker.regional[language]);
    });
    $('.month').change(dateUpdater);
    $('.day').change(dateUpdater)
    $('.year').change(dateUpdater);
    $('.year').change();
});


function dateUpdater() {

    if(this.id.substr(0,3)=='yea')
    {
        thisid=this.id.substr(4);
    }
    if(this.id.substr(0,3)=='mon')
    {
        thisid=this.id.substr(5);
    }
    if(this.id.substr(0,3)=='day')
    {
        thisid=this.id.substr(3);
    }

    
    if (($('#year'+thisid).val()=='') && ($('#month'+thisid).val()=='') && ($('#day'+thisid).val()=='')){
        $('#qattribute_answer'+thisid).val('');
        $('#answer'+thisid).val('');
    }
    else if (($('#year'+thisid).val()=='') || ($('#month'+thisid).val()=='') || ($('#day'+thisid).val()=='')){
        $('#qattribute_answer'+thisid).val('Please complete all parts of the date!');
        $('#answer'+thisid).val('');
    }
    else
    {
         ValidDate(this,$('#year'+thisid).val()+'-'+$('#month'+thisid).val()+'-'+$('#day'+thisid).val());          
         parseddate=$.datepicker.parseDate( 'dd-mm-yy', $('#day'+thisid).val()+'-'+$('#month'+thisid).val()+'-'+$('#year'+thisid).val());
         $('#answer'+thisid).val($.datepicker.formatDate( $('#dateformat'+thisid).val(), parseddate)); 
         $('#answer'+thisid).change();
         $('#qattribute_answer'+thisid).val('');
    }
}


function ValidDate(oObject, value) {// Regular expression used to check if date is in correct format 
    var str_regexp = /[1-9][0-9]{3}-(0[1-9]|1[0-2])-([0-2][0-9]|3[0-1])/; 
    var pattern = new RegExp(str_regexp); 
    if ((value.match(pattern)!=null)) 
    {
        var date_array = value.split('-'); 
        var day = date_array[2]; 
        var month = date_array[1]; 
        var year = date_array[0]; 
        str_regexp = /1|3|5|7|8|10|12/; 
        pattern = new RegExp(str_regexp); 
        if ( day <= 31 && (month.match(pattern)!=null)) 
        { 
            return true; 
        } 
        str_regexp = /4|6|9|11/; 
        pattern = new RegExp(str_regexp); 
        if ( day <= 30 && (month.match(pattern)!=null)) 
        { 
            return true; 
        } 
        if (day == 29 && month == 2 && (year % 4 == 0)) 
        { 
            return true; 
        } 
        if (day <= 28 && month == 2) 
        { 
            return true; 
        }         
    } 
    window.alert('Date is not valid!'); 
    oObject.focus(); 
    return false; 
} 