﻿var SelectedLanguage = 0; 		// 0 - english (by default), 1- french

var EnteredDay, EnteredMonth, EnteredYear;

var DateD = new Array();

var DateEvent = new Array();

var DateObject = new Array();

var EventArray = new Array(); 

var EventNameArray = new Array(); 



var today = new Date();

var currentDay, currentMonth, currentYear;

currentDay = today.getDate();

currentMonth = today.getMonth()+1;

currentYear = today.getYear();

	if(currentYear<1000) currentYear+=1900

	 





				  

				  

				  

// Function used in index.html to set browser to the planner page with date parameters

function LoadWeddingDate(){

var TD = document.WeddingPlan.weddingDate.value

	if(ValidateDate(TD)) {

		if(SelectedLanguage)

			//window.location.href = "planner-fr.php?day="+EnteredDay+"&month="+EnteredMonth+"&year="+EnteredYear;

			window.location.href = "wedding-countdown-calendar-fr.php?day="+EnteredDay+"&month="+EnteredMonth+"&year="+EnteredYear;

		else

			//window.location.href = "planner.php?day="+EnteredDay+"&month="+EnteredMonth+"&year="+EnteredYear;

			window.location.href = "wedding-countdown-calendar.php?day="+EnteredDay+"&month="+EnteredMonth+"&year="+EnteredYear;

	}

}

function ResetPlanner() {

	if(SelectedLanguage)

		window.location.href = "planner-fr.php";

	else

		window.location.href = "planner.php";

}





function ReadLocation() {

var Location = window.location.href.split("?"); 

	if(Location[1]) {

		var TempData = Location[1].split("&")

		var Tar = new Array()

			for(i=0; i<TempData.length; i++) {

				var T = TempData[i].split("=");

				Tar[i] = T[1]

			}

		EnteredDay = Tar[0]

		EnteredMonth = Tar[1]

		EnteredYear = Tar[2]

			

		document.WeddingPlanning.EnteredName.value = EnteredDay+"."+EnteredMonth+"."+EnteredYear

		ConvertDates();				//accually replaces default dates with new ones

	}

}





// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 



function GetEnteredDate() {

EnteredDay = "";

EnteredMonth = "";

EnteredYear = "";



var TString = document.WeddingPlanning.EnteredName.value;

	if (ValidateDate(TString)) {

			ConvertDates();		//accually replaces default dates with new ones

	}		

}





var PlannerAlerts = new Array();

	PlannerAlerts[0] = new Array("Please enter a date!","Please enter a date in proper format!","is not valid!","Entered Year","Entered month","Entered day")

	PlannerAlerts[1] = new Array("Veuillez entrer une date!","Veuillez entrer une date bien format?e!","est mal inscrit!","L'ann?e","Le mois","Le jour")



function ValidateDate(Tstring) {

var Tarray = new Array();



	if(!Tstring) {

		alert(PlannerAlerts[SelectedLanguage][0])

		//alert("Please enter a date!")

		return false;

	}

	else if(isWhitespace(Tstring)) {

		alert(PlannerAlerts[SelectedLanguage][0])

		return false;

	}

	else if(!isDigitFormat(Tstring)) {

		alert(PlannerAlerts[SelectedLanguage][1])

		//alert("Please enter a date in proper format!")

		return false;

	}

	else {

		Tarray = Tstring.split('.')

		if ((Tarray[2].length != 4) || ((Tarray[2] < 2000) || (Tarray[2] > 2100))) {

			//"Entered Year "" not valid

			alert(PlannerAlerts[SelectedLanguage][3] + " " + Tarray[2] + " " + PlannerAlerts[SelectedLanguage][2])

			return false;

		}

		else if ((Tarray[1] > 12) || (Tarray[1] < 1)) {

			//"Entered month " not valid

			alert(PlannerAlerts[SelectedLanguage][4] + " " + Tarray[1] + " " + PlannerAlerts[SelectedLanguage][2])

			return false;

		}

		else if ((Tarray[0] > 31) || (Tarray[0] < 1)) {

			//"Entered day " not valid

			alert(PlannerAlerts[SelectedLanguage][5] + " " + Tarray[0] + " " + PlannerAlerts[SelectedLanguage][2])

			return false;

		}

		else {

			//alert(document.WeddingPlanning.EnteredName.value + " - VALID!")

			EnteredDay = Tarray[0];

			EnteredMonth = Tarray[1];

			EnteredYear = Tarray[2];

			return true;

		}	

	}	

}





// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 



var reWhiteSpace = /^\s+$/

function isWhitespace (s){   

       return reWhiteSpace.test(s)

}



/*

Regular expressions are a notation for describing sequences of characters. For example, the sequence of characters for a real number can be described in English as "zero or more digits, followed by a period, followed by one or more digits." The same sequence of characters can be described in regular expression notation as /\d*\.\d+/. The regular expression starts and ends with a forward slash; \d means "digit between zero and nine"; \. means "period"; * means "zero or more"; and + means "one or more." 

*/



var reDigitFormat = /\d+\.\d+.\d\d\d\d/

function isDigitFormat (s){   

	//alert("reg:" +reDigitFormat.test(s))

       return reDigitFormat.test(s)

}





// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 



function CreateOneDateObject (i,n) {

	DateObject[DateObject.length] = new OneDate(i,n)

	//alert(i + "\nn= " + n)

}



function OneDate (idd,nm) {

	this.id = idd

	this.name = name

	this.date = ""

	this.listOfEvents = new Array()

	this.addChild = function (nn) {

		this.listOfEvents[this.listOfEvents.length] = nn

	}

	

	this.listOfEventText = new Array()

	this.addChildText = function (tt) {

		this.listOfEventText[this.listOfEventText.length] = tt

	}

}



var ArrayOfDatesCreated = false;

var InitialData = new Array();

//this function creates two arrays:

// DateEvent[]

// DateObject[]

function GetDates() {

var AllDivsArray = document.getElementsByTagName("td") 

        for(i=0; i<AllDivsArray.length; i++) { 

        

                if (AllDivsArray[i].className == "DateCell") { 

                    AllDivsArray[i].id =  DateD.length + "|DateCell"; 

                    DateD[DateD.length] = AllDivsArray[i].id; 

					if(!ArrayOfDatesCreated) {

						InitialData[InitialData.length] = AllDivsArray[i].innerHTML

						CreateOneDateObject(AllDivsArray[i].id,AllDivsArray[i].innerHTML)

					}

                }         



                else if (AllDivsArray[i].className == "EventCell") { 

                        AllDivsArray[i].id =  DateEvent.length + "|EventCell"; 

                        DateEvent[DateEvent.length] = AllDivsArray[i].id; 

                }         

        } 

ArrayOfDatesCreated = true;

	//alert(DateEvent)

} 









function GetDateEvents() {

    for(i=0; i<DateEvent.length; i++) { 

		CreateArrayOfInputChildren(i,document.getElementById(DateEvent[i])) 

		for(j=0; j<EventArray.length; j++) {

			// DateObject gets array of checkbox inputs 

			DateObject[i].addChild(EventArray[j])

		}

		//EventNameArray.reverse()

		for(j=0; j<EventNameArray.length; j++) {

			// DateObject gets array of text associated with checkboxes 

			DateObject[i].addChildText(EventNameArray[j])

		}

				

		EventArray = new Array()

		EventArray.length = null

		

		EventNameArray = new Array()

		EventNameArray.length = null

    } 



}







function CreateArrayOfInputChildren(parentIndex, n) {       

    if (n.nodeType == 3 ) {    // Reverse Text nodes 

		// It is a leaf - do nothing 

    } 

    else if (n.nodeName == "INPUT" || n.nodeName == "input" ) { 

		n.id = parentIndex + "|" + EventArray.length + "|" + n.className;

		EventArray[EventArray.length] = n.id  

		//alert(n.nodeName)

    } 

	else if ((n.nodeName == "SPAN" || n.nodeName == "span" ) && (n.className == "eventName") ) { 

		n.id = parentIndex + "|" + EventNameArray.length + "|" + n.className;

		EventNameArray[EventNameArray.length] = n.id  

	

	}

    else {  // For non-Text nodes, recursively reverse the order of the children 

        var kids = n.childNodes; 

        var numkids = kids.length; 

        for(var ch = 0; ch <numkids; ch++) {       // Loop through kids 

            CreateArrayOfInputChildren(parentIndex,kids[ch]);         

        } 

    } 



	

} 

var CrossedElements = new Array();

function ActCheckBox(calledId) {

	var TArr = calledId.split('|')

	var ChildTextId = TArr[0] +"|"+ TArr[1] + "|eventName"

	var Caller = document.getElementById(calledId) 

	var Tobj = document.getElementById(ChildTextId) 

		if (Caller.checked){ 

			Tobj.style.color = "#999999"

			Tobj.style.textDecoration = "line-through"

			CrossedElements[CrossedElements.length] = Tobj.id

			HideAndShow('PlannerFilterHideDisabled','PlannerFilterHide')

		}	

		else {

			Tobj.style.color = "#000000"

			Tobj.style.textDecoration = "none"

			UnCrossElement(Tobj.id) 

			if((CrossedElements.length == null)||(CrossedElements.length == 0)) {

				HideAndShow('PlannerFilterShow','PlannerFilterShowDisabled')

				HideAndShow('PlannerFilterHide','PlannerFilterHideDisabled')

			}

		}	

}



function UnCrossElement(SomeName) {

	//alert(CrossedElements)

	var TempArr = new Array()

		for (s=0; s<CrossedElements.length; s++) {

			if(SomeName!=CrossedElements[s]) {

				TempArr[TempArr.length] = CrossedElements[s]

			}

		}

		CrossedElements = new Array()

		CrossedElements.length = null

		

		for (s=0; s<TempArr.length; s++) {

			CrossedElements[s] = TempArr[s];

		}

	//alert(CrossedElements)

}



//HideAndShow('PlannerFilterHide','PlannerFilterShow');

//HideAndShow('PlannerFilterShow','PlannerFilterHide');



function HideCrossedEvents() {

	HideAndShow('PlannerFilterShowDisabled','PlannerFilterShow')

	for(h=0; h<CrossedElements.length; h++) {

		var TO = document.getElementById(CrossedElements[h])

		TO.parentNode.style.display = "none" //TO.parentNode.style.display = "none"

	}

}

function ShowCrossedEvents() {

	for(h=0; h<CrossedElements.length; h++) {

		var TO = document.getElementById(CrossedElements[h])

		TO.parentNode.style.display = "block"

	}

	HideAndShow('PlannerFilterShow','PlannerFilterShowDisabled');

}



// ========================================================================================================================= 



var Month = new Array()

	Month[0] = new Array ("","January","February","March","April","May","June","July","August","September","October","November","December");

	Month[1] = new Array ("","Janvier","F&eacute;vrier","Mars","Avril","Mai","Juin","Juillet","Ao&ucirc;t","Septembre","Octobre","Novembre","D&eacute;cembre");

var MonthDays = new Array ("","31","28","31","30","31","30","31","31","30","31","30","31");

var PreviousFebruaryDays;

var PreviousYear;

var PastDueMessage = new Array ("(past due!)", "(en retard!)")





// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 

function ConvertDates() {

PreviousYear = EnteredYear - 1;

var pastDue = 0;	

var notDday = true;

	for(i=0; i<InitialData.length; i++) {

		var Tob = document.getElementById(DateD[i])

		var TAR = InitialData[i].split(' ')

		

		

			if(TAR[0].indexOf("-")!=-1) {

				var TAAR = TAR[0].split("-")

				TAR[0] = TAAR[0];

				//if(TAAR[0]<TAAR[1])

				//	TAR[0] = TAAR[1];

			}

				

		var TempYear = EnteredYear;

		var TempMonth = Month[SelectedLanguage][(EnteredMonth*1)];

		var TempMonthIndex = 0;

		var TempDay = EnteredDay;	

		

		var TempPreviousMonthIndex = (EnteredMonth*1) - 1;

			if (TempPreviousMonthIndex==0) TempPreviousMonthIndex = 12;

			

		

		if ((TAR[1]=="day") || (TAR[1]=="days") || (TAR[1]=="jour") || (TAR[1]=="jours")) {

			

			//alert(TAR[0] + " -" +TempPreviousMonthIndex)

			TempDay = EnteredDay - TAR[0]

			if (TAR[0]>=31) {

				var AlertWeeks = new Array();

					AlertWeeks[0] = new Array("Please change this date to \"# weeks or month/s before\"!","")

					AlertWeeks[1] = new Array("Veuillez changer la date pour # semaines ou mois  pr?c?dents!","")

					alert(AlertWeeks[SelectedLanguage][0])

				

				

				TempDay ="<span class='error'>"+AlertWeeks[SelectedLanguage][0]+"</span>";

				TempMonth = "";

				TempYear = "";

			}

			else if (TempDay<=0) {

				TempDay = MonthDays[TempPreviousMonthIndex]	

				TempMonth = Month[SelectedLanguage][TempPreviousMonthIndex]

				TempMonthIndex = TempPreviousMonthIndex;

				//alert(" days : TempDay = " + TempDay + "\n" + TempMonth)

				if (EnteredMonth==1) 

					TempYear = PreviousYear;

			}	

			else {

				// one day before

				//alert("!TempDay " + TempDay)

				TempMonthIndex = EnteredMonth;

			}



		}

		else if ((TAR[1]=="week") || (TAR[1]=="weeks") || (TAR[1]=="semaine") || (TAR[1]=="semaines")) {

			// 5 weeks - 35 days - can span on three months

			if(TAR[0]>=5)	{

				//alert("Please change this date to \"1 month before\"!")

				var Alertmonth = new Array();

					Alertmonth[0] = new Array("Please change it to \"1 month before\"!","")

					Alertmonth[1] = new Array("Veuillez changer la date pour UN mois pr?c?dent!","")

				alert(Alertmonth[SelectedLanguage][0])

				

				TempDay ="<span class='error'>"+Alertmonth[SelectedLanguage][0]+"</span>";

				TempMonth = "";

				TempYear = "";

			}

			else {

				TempDay = (EnteredDay*1) - TAR[0]*7;	

							

				//alert("Weeks to days - " + TempDay + " : " +TempMonth + "\nTempPreviousMonthIndex = " + TempPreviousMonthIndex)	

				

				if (TempDay==0) {

					TempDay = MonthDays[TempPreviousMonthIndex];

					TempMonth = Month[SelectedLanguage][TempPreviousMonthIndex];

					TempMonthIndex = TempPreviousMonthIndex;

				}

				else if  (TempDay<0) {

					TempDay = MonthDays[TempPreviousMonthIndex]*1 + TempDay;	

					TempMonth = Month[SelectedLanguage][TempPreviousMonthIndex]

					TempMonthIndex = TempPreviousMonthIndex;

					if (EnteredMonth==1)	

							TempYear = PreviousYear;

				}

				else {

					TempMonthIndex = EnteredMonth*1

					//alert("TempDay >0 = " +TempDay + "\nTempMonthIndex = " + TempMonthIndex)

				}

			}

		}	

		else if ((TAR[1]=="month") || (TAR[1]=="months")  || (TAR[1]=="months")  || (TAR[1]=="mois") ){

			TempDay = "";

			

			if ((TAR[1]=="months") || ((TAR[1]=="mois") && (TAR[0]!="1")) ){

				if (TAR[0]==12) {

				

					TempMonth = Month[SelectedLanguage][EnteredMonth*1];

					TempMonthIndex = EnteredMonth*1;

					TempYear = PreviousYear;

					

					//alert(EnteredMonth + " " +TempMonth)

				}

				else { 

					TempPreviousMonthIndex = EnteredMonth*1 - (TAR[0]*1)

					if (TempPreviousMonthIndex==0) {

						TempMonth = Month[SelectedLanguage][12];

						TempMonthIndex = 12;

						TempYear = PreviousYear;

					}

					else if	(TempPreviousMonthIndex<0) {

						//alert("EnteredMonth = " + EnteredMonth + " TAR[0] = " + TAR[0] + " TempPreviousMonthIndex = " + TempPreviousMonthIndex)

						TempPreviousMonthIndex = 12  + (TempPreviousMonthIndex*1)

						//alert(TempPreviousMonthIndex)

						TempMonth = Month[SelectedLanguage][TempPreviousMonthIndex];

						TempMonthIndex = TempPreviousMonthIndex;

						TempYear = PreviousYear;

					}	

					else {

						TempMonth = Month[SelectedLanguage][TempPreviousMonthIndex];

						TempMonthIndex = TempPreviousMonthIndex;

					}

				}		

				

			}	

			else {

			//TAR[1]=="month"

				TempDay = (EnteredDay*1)

				TempDay = TempDay + (MonthDays[TempPreviousMonthIndex]*1)

				TempDay = TempDay - (MonthDays[EnteredMonth*1])

				

				TempMonth = Month[SelectedLanguage][TempPreviousMonthIndex];

				TempMonthIndex = TempPreviousMonthIndex;

				//alert("One month before " + TempPreviousMonthIndex)

				if (EnteredMonth==1)	

					TempYear = PreviousYear;

			}		

			

		}	

		else {	

			notDday = false;

			TempMonthIndex = EnteredMonth;

		}

var NewDateString = ""		

var StringBefore = "";

var StringAfter = "";

var PastDue = "";

var PastDueFlag = false;

		

		if (currentYear>TempYear) {

			pastDue++;	

			PastDueFlag = true;

		}

		else if (currentYear==TempYear) {

			//alert("currentYear==TempYear :"+TempYear+"\nTempDay : "+TempDay+"\nTempMonth : " +TempMonth + " TempMonthIndex = " +TempMonthIndex)

			if (currentMonth>TempMonthIndex) {

				pastDue++;	

				PastDueFlag = true;

			}	

			else if(currentMonth==TempMonthIndex) {

			//alert("TempMonthIndex = " +TempMonthIndex+ "\ncurrentDay "+currentDay+"\nTempDay = "+TempDay +"\n" + MonthDays[TempMonthIndex])

					

					if((currentDay>TempDay)&&(TempDay!="")) {

						pastDue++;	

						PastDueFlag = true;

						//alert("TempDay - " + TempDay + "\n"+TempMonthIndex)

					}

			}	

			

		}

		//alert(currentMonth+ " : " + TempPreviousMonthIndex+" - " + pastDue)

		

		if (PastDueFlag) {

			StringBefore = "<div class='pastDue'>";

			StringAfter = "</div>";

			PastDue = PastDueMessage[SelectedLanguage]

		}	

			

		if (notDday) {

			NewDateString = TempDay + " " + TempMonth + ", " + TempYear + "<div class='OriginalData'>" + InitialData[i] +"</div>";

			Tob.innerHTML =  NewDateString + StringBefore + PastDue + StringAfter ;

		}	

			

	}

}



function DisplayEventNumbers() {

var SecuenceCount = 1

var AllDivsArray = document.getElementsByTagName("div") 

        for(i=0; i<AllDivsArray.length; i++) { 

			if (AllDivsArray[i].className == "DateSequenceNumber") 

					AllDivsArray[i].innerHTML = SecuenceCount ++;

		}

		





}


