﻿var LastPeriod;
var MonthBeforChnage;
var LastPeriodN;
var MonthBeforChnageN;
var LastPeriodb;
var max_month;
var stratedDate;
var isFirst = true;
var add = true;
function CalculatFertile() {
    
    var calTD = document.getElementById("calTD");
    var StratOfNextPeriod = CalculatePeriodFertile();
    StratOfNextPeriod = new Date(StratOfNextPeriod.getFullYear(), StratOfNextPeriod.getMonth(), StratOfNextPeriod.getDate());
  //  alert(StratOfNextPeriod);
    // end of  the period
    
    if (max_month > 12) {
        alert("لا يمكن الحصول على نتائخ اكثر من عام إلى الامام");
        // go back two month
        var Avg = document.getElementById("FertileAvg").value;

        LastPeriod.setDate(LastPeriod.getDate() - parseInt(Avg));
        LastPeriod.setDate(LastPeriod.getDate() - parseInt(Avg));
        

        // go back two month
        LastPeriodN.setDate(LastPeriod.getDate() - parseInt(Avg));
        LastPeriodN.setDate(LastPeriod.getDate() - parseInt(Avg));
        

        //go two month back
        LastPeriodb.setDate(LastPeriodb.getDate() - parseInt(Avg));
        LastPeriodb.setDate(LastPeriodb.getDate() - parseInt(Avg));


        calTD.innerHTML = dispCal(StratOfNextPeriod.getFullYear(), MonthBeforChnage);
        max_month = max_month - 1;
        MonthBeforChnage = MonthBeforChnage - 1;
        MonthBeforChnageN = MonthBeforChnageN - 1;
        MonthBeforChnageb = MonthBeforChnageb - 1;   
        CalculatFertile();
        
        return false;
    }
    
  //  if (max_month < -12) {
  //      calTD.innerHTML = dispCal(StratOfNextPeriod.getFullYear(), MonthBeforChnage);
  //      alert("لا يمكن الحصول على نتائخ أقل من عام إلى الخلف");
  //      return false;
    //  }
    
    if (max_month < 0) {

        SetLastPeriod();
        CalculatFertile();
        alert("لا يمكن الحصول على نتائخ أقل ");
        return false;
    }

    // chnage the calender month depend of the selected month
    if (isFirst) {
        calTD.innerHTML = dispCal(StratOfNextPeriod.getFullYear(), MonthBeforChnage + 1);
        isFirst = false;
    }

    
    // 6 days 
    var G1;
    var G2;
    var G3;
    var G4;
    var G5;
    var G6;

    //6 days month 
    var GM1;
    var GM2;
    var GM3;
    var GM4;
    var GM5;
    var GM6;

    // set value for the 6 days
    
    // 12 is the range for the best days
    StratOfNextPeriod.setDate(StratOfNextPeriod.getDate() - 12);


    StratOfNextPeriod.setDate(StratOfNextPeriod.getDate() - 1);
  //  alert(StratOfNextPeriod);
    G1 = StratOfNextPeriod.getDate();
    GM1 = StratOfNextPeriod.getMonth();

    StratOfNextPeriod.setDate(StratOfNextPeriod.getDate() - 1)
  //  alert(StratOfNextPeriod);
    G2 = StratOfNextPeriod.getDate();
    GM2 = StratOfNextPeriod.getMonth();

    StratOfNextPeriod.setDate(StratOfNextPeriod.getDate() - 1);
//    alert(StratOfNextPeriod);
    G3 = StratOfNextPeriod.getDate();
    GM3 = StratOfNextPeriod.getMonth();

    StratOfNextPeriod.setDate(StratOfNextPeriod.getDate() - 1);
  //  alert(StratOfNextPeriod);
    G4 = StratOfNextPeriod.getDate();
    GM4 = StratOfNextPeriod.getMonth();
    
    StratOfNextPeriod.setDate(StratOfNextPeriod.getDate() - 1);
    G5 = StratOfNextPeriod.getDate();
    GM5 = StratOfNextPeriod.getMonth();
    
    StratOfNextPeriod.setDate(StratOfNextPeriod.getDate() - 1);
    G6 = StratOfNextPeriod.getDate();
    GM6 = StratOfNextPeriod.getMonth();

  //  alert(MonthBeforChnage);
   // alert(GM1);
    var cal = document.getElementById("cal");
    var calTable = cal.getElementsByTagName("table");
    var tds = calTable[0].getElementsByTagName("td");
    for (var index = 0; index < tds.length; index++) {
        if (!isNaN(tds[index].innerHTML)) {
            if (tds[index].innerHTML != " ") {
                if ((((tds[index].innerHTML) == G1) && (GM1 == MonthBeforChnage)) || (((tds[index].innerHTML) == G2) && (GM2 == MonthBeforChnage)) || (((tds[index].innerHTML) == G3) && (GM3 == MonthBeforChnage)) || (((tds[index].innerHTML) == G4) && (GM4 == MonthBeforChnage)) || (((tds[index].innerHTML) == G5) && (GM5 == MonthBeforChnage)) || (((tds[index].innerHTML) == G6)) && (GM6 == MonthBeforChnage)) {
                    tds[index].style.backgroundColor = "Green";
                }
            }
        }
    }




    // set the value for MonthBeforChnage to be the next month

    MonthBeforChnage = MonthBeforChnage + 1;
    if (MonthBeforChnage == 12)
        MonthBeforChnage = 0;

    CalculatFertileNextMonth();
    CalculatFertilebeforeMonth();
    
    return false;
}


function CalculatePeriodFertile() {
    var Avg = document.getElementById("FertileAvg").value;
    LastPeriod.setDate(LastPeriod.getDate() + parseInt(Avg));
    return LastPeriod;
}

function SetLastPeriod() {
    var day = document.getElementById("FertileDay").value;
    var month = document.getElementById("FertileMonth").value;
    var year = document.getElementById("FertileYear").value;
    var PeriodDate = new Date(year, month, day);
    LastPeriod = new Date(year, month, day);
    stratedDate = new Date(year, month, day);
    //stratedDate.setDate(stratedDate.getDate() + 50);
    MonthBeforChnage = LastPeriod.getMonth();
    MonthBeforChnageN = LastPeriod.getMonth();
    MonthBeforChnageb = LastPeriod.getMonth();
    isFirst = true;
    max_month = 0;
}


function CalculatFertileNextMonth() {
    
    var StratOfNextPeriod = CalculatePeriodFertileN();
    
    StratOfNextPeriod = new Date(StratOfNextPeriod.getFullYear(), StratOfNextPeriod.getMonth(), StratOfNextPeriod.getDate());
    // end of  the period
    

    // 6 days 
    var G1;
    var G2;
    var G3;
    var G4;
    var G5;
    var G6;

    //6 days month 
    var GM1;
    var GM2;
    var GM3;
    var GM4;
    var GM5;
    var GM6;

    // set value for the 6 days

    // 12 is the range for the best days
    StratOfNextPeriod.setDate(StratOfNextPeriod.getDate() - 12);


    StratOfNextPeriod.setDate(StratOfNextPeriod.getDate() - 1);
    G1 = StratOfNextPeriod.getDate();
    GM1 = StratOfNextPeriod.getMonth();

    StratOfNextPeriod.setDate(StratOfNextPeriod.getDate() - 1)
    G2 = StratOfNextPeriod.getDate();
    GM2 = StratOfNextPeriod.getMonth();

    StratOfNextPeriod.setDate(StratOfNextPeriod.getDate() - 1);
    G3 = StratOfNextPeriod.getDate();
    GM3 = StratOfNextPeriod.getMonth();

    StratOfNextPeriod.setDate(StratOfNextPeriod.getDate() - 1);
    G4 = StratOfNextPeriod.getDate();
    GM4 = StratOfNextPeriod.getMonth();

    StratOfNextPeriod.setDate(StratOfNextPeriod.getDate() - 1);
    G5 = StratOfNextPeriod.getDate();
    GM5 = StratOfNextPeriod.getMonth();

    StratOfNextPeriod.setDate(StratOfNextPeriod.getDate() - 1);
    G6 = StratOfNextPeriod.getDate();
    GM6 = StratOfNextPeriod.getMonth();


    var cal = document.getElementById("cal");
    var calTable = cal.getElementsByTagName("table");
    var tds = calTable[0].getElementsByTagName("td");
    for (var index = 0; index < tds.length; index++) {
        if (!isNaN(tds[index].innerHTML)) {
            if (tds[index].innerHTML != " ") {
                if ((((tds[index].innerHTML) == G1) && (GM1 == MonthBeforChnageN)) || (((tds[index].innerHTML) == G2) && (GM2 == MonthBeforChnageN)) || (((tds[index].innerHTML) == G3) && (GM3 == MonthBeforChnageN)) || (((tds[index].innerHTML) == G4) && (GM4 == MonthBeforChnageN)) || (((tds[index].innerHTML) == G5) && (GM5 == MonthBeforChnageN)) || (((tds[index].innerHTML) == G6)) && (GM6 == MonthBeforChnageN)) {
                    tds[index].style.backgroundColor = "Green";
                }
            }
        }
    }
    // set the value for MonthBeforChnage to be the next month
    MonthBeforChnageN = MonthBeforChnageN + 1;
    if (MonthBeforChnageN == 12)
        MonthBeforChnageN = 0;

}

function CalculatFertilebeforeMonth() {

    var StratOfNextPeriod = CalculatePeriodFertileb();

    StratOfNextPeriod = new Date(StratOfNextPeriod.getFullYear(), StratOfNextPeriod.getMonth(), StratOfNextPeriod.getDate());
    // end of  the period


    // 6 days 
    var G1;
    var G2;
    var G3;
    var G4;
    var G5;
    var G6;

    //6 days month 
    var GM1;
    var GM2;
    var GM3;
    var GM4;
    var GM5;
    var GM6;

    // set value for the 6 days

    // 12 is the range for the best days
    StratOfNextPeriod.setDate(StratOfNextPeriod.getDate() - 12);


    StratOfNextPeriod.setDate(StratOfNextPeriod.getDate() - 1);
    
    G1 = StratOfNextPeriod.getDate();
    GM1 = StratOfNextPeriod.getMonth();

    StratOfNextPeriod.setDate(StratOfNextPeriod.getDate() - 1)
    
    G2 = StratOfNextPeriod.getDate();
    GM2 = StratOfNextPeriod.getMonth();

    StratOfNextPeriod.setDate(StratOfNextPeriod.getDate() - 1);
    G3 = StratOfNextPeriod.getDate();
    GM3 = StratOfNextPeriod.getMonth();

    StratOfNextPeriod.setDate(StratOfNextPeriod.getDate() - 1);
    G4 = StratOfNextPeriod.getDate();
    GM4 = StratOfNextPeriod.getMonth();

    StratOfNextPeriod.setDate(StratOfNextPeriod.getDate() - 1);
    G5 = StratOfNextPeriod.getDate();
    GM5 = StratOfNextPeriod.getMonth();

    StratOfNextPeriod.setDate(StratOfNextPeriod.getDate() - 1);
    G6 = StratOfNextPeriod.getDate();
    GM6 = StratOfNextPeriod.getMonth();


    var cal = document.getElementById("cal");
    var calTable = cal.getElementsByTagName("table");
    var tds = calTable[0].getElementsByTagName("td");
    for (var index = 0; index < tds.length; index++) {
        if (!isNaN(tds[index].innerHTML)) {
            if (tds[index].innerHTML != " ") {
                if ((((tds[index].innerHTML) == G1) && (GM1 == MonthBeforChnageb)) || (((tds[index].innerHTML) == G2) && (GM2 == MonthBeforChnageb)) || (((tds[index].innerHTML) == G3) && (GM3 == MonthBeforChnageb)) || (((tds[index].innerHTML) == G4) && (GM4 == MonthBeforChnageb)) || (((tds[index].innerHTML) == G5) && (GM5 == MonthBeforChnageb)) || (((tds[index].innerHTML) == G6)) && (GM6 == MonthBeforChnageb)) {
                    tds[index].style.backgroundColor = "Green";
                }
            }
        }
    }
    // set the value for MonthBeforChnage to be the next month
    MonthBeforChnageb = MonthBeforChnageb + 1;
    if (MonthBeforChnageb == 12)
        MonthBeforChnageb = 0;

}

function CalculatePeriodFertileN() {
    var Avg = document.getElementById("FertileAvg").value;
    LastPeriodN = new Date(LastPeriod.getFullYear(), LastPeriod.getMonth(), LastPeriod.getDate());
    LastPeriodN.setDate(LastPeriodN.getDate() + parseInt(Avg));
    return LastPeriodN;
}
function CalculatePeriodFertileb() {
    var Avg = document.getElementById("FertileAvg").value;
    LastPeriodb = new Date(LastPeriod.getFullYear(), LastPeriod.getMonth(), LastPeriod.getDate());
    LastPeriodb.setDate(LastPeriodb.getDate() - parseInt(Avg));
    return LastPeriodb;
}

function breclick() {

    
    if ((max_month < 0)) {
        return;
    }
    else {
        max_month = max_month - 1;
    }
    
    var Avg = document.getElementById("FertileAvg").value;

// go back two month
    LastPeriod.setDate(LastPeriod.getDate() - parseInt(Avg));
    LastPeriod.setDate(LastPeriod.getDate() - parseInt(Avg));
    
// go back two month
    LastPeriodN.setDate(LastPeriod.getDate() - parseInt(Avg));
    LastPeriodN.setDate(LastPeriod.getDate() - parseInt(Avg));

    //go two month back
    LastPeriodb.setDate(LastPeriodb.getDate() - parseInt(Avg));
    LastPeriodb.setDate(LastPeriodb.getDate() - parseInt(Avg));

    if ( ! (max_month <= -12) ) {
        MonthBeforChnage = MonthBeforChnage - 2;
    }
    

    if (MonthBeforChnage == -1)
        MonthBeforChnage = 11;
    if (MonthBeforChnage == -2)
        MonthBeforChnage = 10;
    
    MonthBeforChnageN = MonthBeforChnageN - 2;
    if (MonthBeforChnageN == -1)
        MonthBeforChnageN = 11;
    if (MonthBeforChnageN == -2)
        MonthBeforChnageN = 10;


    MonthBeforChnageb = MonthBeforChnageb - 2;
    if (MonthBeforChnageb == -1)
        MonthBeforChnageb = 11;
    if (MonthBeforChnageb == -2)
        MonthBeforChnageb = 10;
}

function clicknext() {
    if (!(max_month == 13)) {

        max_month++;
    }
    
    
}
