var MINUTE=60*1000;
var HOUR=MINUTE*60;
var DAY=HOUR*24;
var DUEDAY=28*DAY;
var datTodaysDate=new Date();
var datZeroDate=new Date(0);

 datDateObject1=new Date(Date.parse(datZeroDate));
 datDateObject2=new Date(Date.parse(datZeroDate));
 datDateObject3=new Date(Date.parse(datZeroDate));

function ClearAnswers(){
  document.OvulationForm.Cycle.value='';
  document.OvulationForm.Nextperiod.value='';
  document.OvulationForm.Fertile2.value='';
  document.OvulationForm.Fertile1.value='';
}

function AdjustDates(objCaller){
  ClearAnswers();
  var objCallerStr=objCaller.name;
  if((objCallerStr=='month1')||(objCallerStr=='day1')){
    setDateObj1();
  }
  if((objCallerStr=='month2')||(objCallerStr=='day2')){
    setDateObj2();
  }
  if((objCallerStr=='month3')||(objCallerStr=='day3')){
    setDateObj3();
  }
}
function setDateObj1(){
  if(  ((gIsNumber((document.OvulationForm.month1.options[document.OvulationForm.month1.selectedIndex]).value))>0)  
    && ((gIsNumber((document.OvulationForm.day1.options[document.OvulationForm.day1.selectedIndex]).value))>0)){ 
      var strDate1 = (document.OvulationForm.month1.selectedIndex) + '/' + document.OvulationForm.day1.selectedIndex + '/' + getCorrectYear(document.OvulationForm.month1.selectedIndex) ;

        if (gIsValidDateStr(strDate1)) {
		datDateObject1.setUTCFullYear(getCorrectYear(document.OvulationForm.month1.selectedIndex));
		datDateObject1.setUTCMonth(document.OvulationForm.month1.selectedIndex-1);
		datDateObject1.setUTCDate(document.OvulationForm.day1.selectedIndex);
  		return true;
	} else { alert('Geçerli bir tarih giriniz'); return false;  }

  } else  datDateObject1.setTime(0);
}

function setDateObj2(){
  if(  ((gIsNumber((document.OvulationForm.month2.options[document.OvulationForm.month2.selectedIndex]).value))>0)
    && ((gIsNumber((document.OvulationForm.day2.options[document.OvulationForm.day2.selectedIndex]).value))>0)){
      var strDate2 = (document.OvulationForm.month2.selectedIndex) + '/' + document.OvulationForm.day2.selectedIndex + '/' + getCorrectYear(document.OvulationForm.month2.selectedIndex) ;
	if (gIsValidDateStr(strDate2)) {
		datDateObject2.setUTCDate(document.OvulationForm.day2.selectedIndex);
		datDateObject2.setUTCMonth(document.OvulationForm.month2.selectedIndex-1);
		datDateObject2.setUTCFullYear(getCorrectYear(document.OvulationForm.month2.selectedIndex));
  
         } else { alert('Geçerli bir tarih giriniz'); }

   }  else  datDateObject2.setTime(0);
}

function setDateObj3(){
  if(  ((gIsNumber((document.OvulationForm.month3.options[document.OvulationForm.month3.selectedIndex]).value))>0) && ((gIsNumber((document.OvulationForm.day3.options[document.OvulationForm.day3.selectedIndex]).value))>0)){  
	
      var strDate3 = (document.OvulationForm.month3.selectedIndex) + '/' + document.OvulationForm.day3.selectedIndex + '/' + getCorrectYear(document.OvulationForm.month3.selectedIndex) ;
        if (gIsValidDateStr(strDate3)) {
		datDateObject3.setUTCDate(document.OvulationForm.day3.selectedIndex);
		datDateObject3.setUTCMonth(document.OvulationForm.month3.selectedIndex-1);
		datDateObject3.setUTCFullYear(getCorrectYear(document.OvulationForm.month3.selectedIndex));
        } else { alert('Geçerli bir tarih giriniz'); }

  }  else  datDateObject3.setTime(0);
}
   
function getCorrectYear( dateToCheck ) {

  if ( dateToCheck > (datTodaysDate.getMonth() + 1) ) {
    return datTodaysDate.getFullYear() - 1;
  } else { 
    return datTodaysDate.getFullYear();
  }

}

function Reset(){
  datDateObject1=new Date(Date.parse(datZeroDate));
  datDateObject2=new Date(Date.parse(datZeroDate));
  datDateObject3=new Date(Date.parse(datZeroDate));
  ClearAnswers();
}

function CalculateAnswer(){
  var intNumberOfDatesSelected=intDividend=intDivisor=intQuotient=0;

  if(Date.parse(datDateObject1)!=0) intNumberOfDatesSelected++;
  if(Date.parse(datDateObject2)!=0) intNumberOfDatesSelected++;
  if(Date.parse(datDateObject3)!=0) intNumberOfDatesSelected++;

  if (intNumberOfDatesSelected<1){
    alert('Tarih girmeden hesaplama yapamazsınız.');
    return;
  }

  if (intNumberOfDatesSelected==1)
  {    
      if(Date.parse(datDateObject1)!=0){
          datDateObject2=new Date(datDateObject1.valueOf() - (28*24*60*60*1000));
          document.OvulationForm.month2.selectedIndex = datDateObject2.getUTCMonth()+1;
          document.OvulationForm.day2.selectedIndex = datDateObject2.getUTCDate();
          datDateObject3=new Date(datDateObject2.valueOf() - (28*24*60*60*1000) );
          document.OvulationForm.month3.selectedIndex = datDateObject3.getUTCMonth()+1;
          document.OvulationForm.day3.selectedIndex = datDateObject3.getUTCDate();       
      }
      else if(Date.parse(datDateObject2)!=0){
          datDateObject1=new Date(datDateObject2.valueOf()+ DUEDAY);
          document.OvulationForm.month1.selectedIndex = datDateObject1.getUTCMonth()+1;
          document.OvulationForm.day1.selectedIndex = datDateObject1.getUTCDate();
          datDateObject3=new Date(datDateObject2.valueOf()-DUEDAY);
          document.OvulationForm.month3.selectedIndex = datDateObject3.getUTCMonth()+1;
          document.OvulationForm.day3.selectedIndex = datDateObject3.getUTCDate();      
      }else if(Date.parse(datDateObject3)!=0){
          datDateObject1=new Date(datDateObject3.valueOf()+DUEDAY+DUEDAY);
          document.OvulationForm.month1.selectedIndex = datDateObject1.getUTCMonth()+1;
          document.OvulationForm.day1.selectedIndex = datDateObject1.getUTCDate();
          datDateObject2=new Date(datDateObject3.valueOf()+DUEDAY);
          document.OvulationForm.month2.selectedIndex = datDateObject2.getUTCMonth()+1;
          document.OvulationForm.day2.selectedIndex = datDateObject2.getUTCDate();
      }
  }

  if ( ( Date.parse( datDateObject1 ) != 0 ) 
       && ( Date.parse( datDateObject2 ) != 0 ) ) { 
    if ( Date.parse( datDateObject1 ) < Date.parse( datDateObject2 ) ) {
      while ( Date.parse( datDateObject1 ) < Date.parse( datDateObject2 ) ) {
        datDateObject2.setYear( datDateObject2.getYear() - 1 );
      }
    }
    var intDateObject1N2Deviation=(Date.parse(datDateObject1)-Date.parse(datDateObject2));
    intDivisor++;
  }else{
    var intDateObject1N2Deviation=0;
  }

  if((Date.parse(datDateObject2)!=0)&&(Date.parse(datDateObject3)!=0)){
    if(Date.parse(datDateObject2)<Date.parse(datDateObject3)){
      while(Date.parse(datDateObject2)<Date.parse(datDateObject3)){
        datDateObject3.setYear(datDateObject3.getYear()-1);
      }
    }
    var intDateObject2N3Deviation=(Date.parse(datDateObject2)-Date.parse(datDateObject3));
    intDivisor++;
  }else{
    var intDateObject2N3Deviation=0;
  }

  if((Date.parse(datDateObject1)!=0)&&(Date.parse(datDateObject3)!=0)){
    if(Date.parse(datDateObject1)<Date.parse(datDateObject3)){
      while(Date.parse(datDateObject1)<Date.parse(datDateObject3)){
        datDateObject3.setYear(datDateObject3.getYear()-1);
      }
    }
    var intDateObject1N3Deviation=(Date.parse(datDateObject1)-Date.parse(datDateObject3));
    intDivisor+=2;
  }else{
    var intDateObject1N3Deviation=0;
  }

  if(intDateObject2N3Deviation/DAY != 0)
  {
    if((intDateObject1N2Deviation/DAY<21) || (intDateObject1N2Deviation/DAY>35) || (intDateObject2N3Deviation/DAY<21) || (intDateObject2N3Deviation/DAY>35))
    {
      alert("Adet aralıklarınız düzensiz lütfen doktorunuzla görüşün");
      return;
    }
  }
  
  if(intDateObject2N3Deviation/DAY != 0)
  {
    var numCycleVariance = 0;
    numCycleVariance = Math.abs((intDateObject1N2Deviation/DAY)-(intDateObject2N3Deviation/DAY));
    if(numCycleVariance >3)
    {
      alert("Adet aralıklarınız düzensiz lütfen doktorunuzla görüşün");
      return;
    }
  }

  if(intDateObject2N3Deviation/DAY != 0)
  {
    if(numCycleVariance !=0)
    {
      alert("Adet aralıklarınız değişkenlik gösterdiğinden gerçeğe en yakın hesaplama yapılmıştır");
    }
  }

  intDividend=(intDateObject1N2Deviation/DAY)+(intDateObject2N3Deviation/DAY)+(intDateObject1N3Deviation/DAY);
  if ( intDivisor != 0 ) {
    intQuotient = intDividend / intDivisor;
  }
  
  if((intQuotient<21)||(intQuotient>35)){
      alert("Adet aralıklarınız düzensiz lütfen doktorunuzla görüşün");
    return;
  }
  document.OvulationForm.Cycle.value=Math.round(intQuotient);

  var datNextPeriod=new Date(0);
  if(Date.parse(datDateObject1)!=0){
    datNextPeriod=new Date(Date.parse(datDateObject1)+((intQuotient+1)*DAY));
  }else if(Date.parse(datDateObject2)!=0){
    datNextPeriod=new Date(Date.parse(datDateObject2)+(((intQuotient+1)*DAY)*2));
  }else if(Date.parse(datDateObject3)!=0){
    datNextPeriod=new Date(Date.parse(datDateObject1)+(((intQuotient+1)*DAY)*3));
  }else{
    return;
  }

  if(Date.parse(datNextPeriod)!=0){
    document.OvulationForm.Nextperiod.value=(datNextPeriod.getMonth()+1)+'.'+datNextPeriod.getDate()+'.'+gReturnY2KDate(datNextPeriod);

    var datEndFertitlity=new Date(Date.parse(datNextPeriod)-(DAY*14));
    document.OvulationForm.Fertile2.value=(datEndFertitlity.getMonth()+1)+'.'+datEndFertitlity.getDate()+'.'+gReturnY2KDate(datEndFertitlity);

    var datStartFertitlity=new Date(Date.parse(datEndFertitlity)-(DAY*5));
    document.OvulationForm.Fertile1.value=(datStartFertitlity.getMonth()+1)+'.'+datStartFertitlity.getDate()+'.'+gReturnY2KDate(datStartFertitlity);
  }
}

function adBannerCalc(strQuery) {
   document.OvulationForm.month1.selectedIndex = strGetQueryValue(strQuery, 'Month');
   document.OvulationForm.day1.selectedIndex = strGetQueryValue(strQuery, 'Day');
   if (setDateObj1() ) {
        CalculateAnswer();
   }
}
