//-------------------------------------------------------
//-- DAY
function buildDaySelect(pointer)
    {
    var dayArray    = "<option value=''> dd </option>";
    
    for(var i=1;i<=31;i++)
        {
        if(i==pointer){var s='selected="selected"';}
        else{var s='';}
        
        dayArray+='<option value="'+i+'" '+s+'>'+i+'</option>';
        }
    return dayArray;
    }

//-- MONTH
function buildMonthSelect(pointer)
    {
    var monthArray;
    var months_names = new Array("mm","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
    for(var i=0;i<=12;i++)
        {                                                  
        if(i==pointer){var s='selected="selected"';}
        else{var s='';}
        
        monthArray+='<option value="'+(i==0?"":i)+'" '+s+'>'+months_names[i]+'</option>';
        }

    return monthArray;
    }

//-- YEAR
function buildYearSelect(pointer,from,until)
    {
    var yearArray  = "<option value=''> yyyy </option>";    

    //-- year
    if(until){ var tmp = until.split("/");until_tmp = tmp[2];}
    else{var until_tmp = todaysDate("year")+10;}
    
    if(from){ var tmp = from.split("/"); from_tmp = tmp[2];}
    else{var from_tmp = todaysDate("year")-10;}
    
    for(var i=from_tmp;i<=until_tmp;i++)
        {
        if(i==pointer){var s='selected="selected"';}
        else{var s='';}

        yearArray+='<option value="'+i+'" '+s+'>'+i+'</option>';
        }

    return yearArray;
    }

//-------------------------------------------------------
function quotivaCalendar(selector,from,until)
    {
    var length_tmp = $(selector).length;

    for(var s_i=0;s_i < length_tmp;s_i++)
        {
        //-- Get ID
        var id = $(selector+':eq('+s_i+')').attr('id');
        if($('#day_'+id).val()!=undefined){ $('#day_'+id).remove(); }
        if($('#month_'+id).val()!=undefined){ $('#month_'+id).remove(); }
        if($('#year_'+id).val()!=undefined){ $('#year_'+id).remove(); }
        
        var date_tmp = $('#'+id).val().split("/");
        
        //-- Get days seted up before - sessions
        var dayOptions   = buildDaySelect(date_tmp[0]);
        var monthOptions = buildMonthSelect(date_tmp[1]);
        var yearOptions  = buildYearSelect(date_tmp[2],from,until);

        $(selector+':eq('+s_i+')').hide();
       // $(selector+':eq('+s_i+')').attr("type","hidden");
        $(selector+':eq('+s_i+')').after("<select style='background:white' id='day_"+id+"' onchange=\"dateHiddenPrint('"+id+"','"+from+"','"+until+"');return false;\">"+dayOptions+"</select>&nbsp;<select style='background:white' id='month_"+id+"' onchange=\"dateHiddenPrint('"+id+"','"+from+"','"+until+"');return false;\">"+monthOptions+"</select>&nbsp;<select style='background:white' id='year_"+id+"' onchange=\"dateHiddenPrint('"+id+"','"+from+"','"+until+"');return false;\">"+yearOptions+"</select>");
        }
    }

//-------------------------------------------------------
function dateHiddenPrint(id,from,until)
    {
    //--
    var day   = Number($('#day_'+id).val());
    $('#day_'+id).animate({backgroundColor:'#ebebeb'},200).animate({backgroundColor:'#ffffff'},200);   //highlightFade({start:'#ebebeb',end:'#FFFFFF'});

    //--
    var month = Number($('#month_'+id).val());
    $('#month_'+id).animate({backgroundColor:'#ebebeb'},200).animate({backgroundColor:'#FFFFFF'},200); //highlightFade({start:'#ebebeb',end:'#FFFFFF'});

    //--
    var year  = Number($('#year_'+id).val());
    $('#year_'+id).animate({backgroundColor:'#ebebeb'},200).animate({backgroundColor:'#FFFFFF'},200); //highlightFade({start:'#ebebeb',end:'#FFFFFF'});
    
    if(day!="" && month!="" && year!="")
        {
        //--
        if(until)
            {
            var untilYear = dateToArray(until,2);
            var untilMonth = dateToArray(until,1);
            var untilDay = dateToArray(until,0);
       
            //-- testing
            if(year > untilYear || (year == untilYear && month > untilMonth) || (year == untilYear && month == untilMonth && day > untilDay))
                {
                alert("The maximum date alowed is today. Please select the correct date.");
                $('#day_'+id).animate({backgroundColor:'#FFFFFF'},200).animate({backgroundColor:'#FFCC00'},200); //highlightFade({start:'#ffffff',end:'#ffcc00'});
                $('#month_'+id).animate({backgroundColor:'#FFFFFF'},200).animate({backgroundColor:'#FFCC00'},200); //highlightFade({start:'#ffffff',end:'#ffcc00'});
                $('#year_'+id).animate({backgroundColor:'#FFFFFF'},200).animate({backgroundColor:'#FFCC00'},200);// highlightFade({start:'#ffffff',end:'#ffcc00'});
                return 0;
                }
            }
        $('#'+id).val(day+"/"+month+"/"+year);
            
        //--
        if(from)
            {
            var fromYear  = dateToArray(from,2);
            var fromMonth = dateToArray(from,1);
            var fromDay   = dateToArray(from,0);
       
            //-- testing
            if(year < fromYear || (year == fromYear && month < fromMonth) || (year == fromYear && month == fromMonth && day < fromDay))
                {
                alert("The minimum date alowed is today. Please select the correct date.");
                $('#day_'+id).animate({backgroundColor:'#FFFFFF'},200).animate({backgroundColor:'#FFCC00'},200); //highlightFade({start:'#ffffff',end:'#ffcc00'});
                $('#month_'+id).animate({backgroundColor:'#FFFFFF'},200).animate({backgroundColor:'#FFCC00'},200); //highlightFade({start:'#ffffff',end:'#ffcc00'});
                $('#year_'+id).animate({backgroundColor:'#FFFFFF'},200).animate({backgroundColor:'#FFCC00'},200); //highlightFade({start:'#ffffff',end:'#ffcc00'});
                return 0;
                }
            }
        }
    $('#'+id).val(day+"/"+month+"/"+year);
    
    }

function dateToArray(date,w)
    {
    var dateArray = date.split("/");
    return dateArray[w];
    }

function todaysDate(w)
    {
    var currentTime = new Date();
    var day = new String(currentTime.getDate());
    var month = new String(currentTime.getMonth() + 1);
    var year = currentTime.getFullYear();
    
    if(w == 'month'){ return Number(month);}
    if(w == 'day'){ return Number(day);}
    if(w == 'year'){ return Number(year);}
    if(w == 'full'){ return day + "/" + month + "/" + year; }
    }
