/* JavaScript Document : Ludger Müller
* 0209 */


  $(document).ready(function(){
				
var startingDatesState = 0;	
var  selectedCourse, selectedDate, selectedWeekNumber, coursePrice, totalCoursePrice,selectedAcco,selectedAccoRoom, accoPrice, totalPrice ;
$("#matricula").val(enrollmentFee);
$("#startingDatesBox,#knowledgeBox,#courseWeeksBox,#addinfoBox,#doubleroom,#conditions").hide();
// bind conditions link to click event
$("#condslink").click(function(e){
	 $("#conditions").toggle("normal");
	 e.preventDefault();
	 });	

$("#addinfo").html(addinfoCode);
$("#addinfoBox").after("<div id=\"messagesTxtBox\"></div>");
var msgboxvar = $("#messagesTxtBox");
/* bind course and beginners checkbox to change event *
** bind startinDates and courseweeks to change event */
$("#course,#knowledge").change(function (e) {
 hsWeeksCount =0;
 selectedCourse = $("#course")[0].selectedIndex;	
 selectedDate = $("#startingDates")[0].selectedIndex;	
 selectedWeekNumber = ($("#course_weeks")[0].selectedIndex)+1;	//at least one week
 selectedAcco = $("#accommodation")[0].selectedIndex;
 selectedAccoRoom = $("#accommodation_detail")[0].selectedIndex;
 setWeeksNumber(selectedCourse);

switch (selectedCourse) {
	case 0:// no course selected
	 deleteOptions();
	 changeWeeks(0);
	 calcCoursePrice(0);
	 effects([0,0,0,0]); //call effects
    break;
    case 1: //Intensive course
	checkboxCheck();
	changeWeeks(1);
	calcHighSeasonWeeks(selectedDate,selectedWeekNumber);
	calcCoursePrice(1);
	effects([0,1,1,1]); //call effects for #addinfoBox, #knowledgeBox, #startingDatesBox, #courseWeeksBox
    break;
  case 2: //Superintensive
   uncheckCheckbox();
   checkboxCheck();
   	changeWeeks(1);
	calcHighSeasonWeeks(selectedDate,selectedWeekNumber);
	calcCoursePrice(2);
	effects([0,0,1,1]); 
    break;
	case 3: //Intensive plus
	 checkboxCheck();
	 changeWeeks(1);
	 calcHighSeasonWeeks(selectedDate,selectedWeekNumber);
	 calcCoursePrice(3);
	 effects([0,1,1,1]);
    break;
	case 4: // One to One
	uncheckCheckbox();
	checkboxCheck();
	changeWeeks(1);
	 calcCoursePrice(4);
	 effects([1,0,1,1]);
	 break;
	case 5: // Dele
	  uncheckCheckbox();
	  writeOptions(DELEDatesCode,0);
	 changeWeeks(0);
	 calcCoursePrice(5);
	 effects([0,0,1,0]);
    break;
	case 6: // Master
	  uncheckCheckbox();
	 writeOptions(masterDatesCode,0);
	 changeWeeks(0);
	 calcCoursePrice(6);
	 effects([0,0,1,0]);
    break;
	case 7: // Spanish and Surf
	    uncheckCheckbox();
      // checkboxCheck(1);
	  writeOptions(surfDatesCode,3);
	 changeWeeks(1);
	 calcHighSeasonWeeks(selectedDate,selectedWeekNumber);
	 calcCoursePrice(7);
	 effects([0,0,1,1]);
    break;
  default:
     uncheckCheckbox();
     deleteOptions();
	 changeWeeks(0);
	 effects([0,0,0,0]);
    break;
} 


});

// bind starting Date and weeks select to change event 
$("#startingDates,#course_weeks, #addinfo").change(function (e) {
									   
 hsWeeksCount = hsAccoWeeksCount = 0;
 selectedCourse = $("#course")[0].selectedIndex;	
 selectedDate = $("#startingDates")[0].selectedIndex;	
 selectedWeekNumber = ($("#course_weeks")[0].selectedIndex)+1;	//at least one week
 selectedAcco = $("#accommodation")[0].selectedIndex;
 selectedAccoRoom = $("#accommodation_detail")[0].selectedIndex;
 setWeeksNumber(selectedCourse);
 if(e.target.id == "addinfo")
 {
	 calcCoursePrice(selectedCourse);
 }
 else{
calcHighSeasonWeeks(selectedDate,selectedWeekNumber);
calcCoursePrice(selectedCourse);
 }});

// bind starting Accommodation and Acco Details to change event 
$("#accommodation,#accommodation_detail").change(function (e) {
									   
 selectedCourse = $("#course")[0].selectedIndex;	
 selectedWeekNumber = ($("#course_weeks")[0].selectedIndex)+1;	//at least one week
 selectedAcco = $("#accommodation")[0].selectedIndex;
 selectedAccoRoom = $("#accommodation_detail")[0].selectedIndex;
 setWeeksNumber(selectedCourse);
roommate(selectedAccoRoom);
 calcAccoPrice(); //calculate Accommodation Price

});

// set selected week Number for special Programmes 
function setWeeksNumber(s){
	if(s==5){
		selectedWeekNumber = 4;
	}
	if(s==6){
		selectedWeekNumber = 1;
	}
	
}
/* Functions for changing the  Starting Dates select *****************
// check if beginners checkbox is set and change starting dates */
function checkboxCheck() {
   
	if($("#knowledge")[0].checked == true){
		if(startingDatesState != 2){
	 writeOptions(beginnersDatesCode,2);
	 selectedDate = $("#startingDates")[0].selectedIndex;	//read datesselect again
	} }
	else { if(startingDatesState != 1)
		{ writeOptions(datesCode,1);
			}}
   
            }
	
//checkbocCheck end
// uncheck checkbox for other course types
function uncheckCheckbox()
{
	$("#knowledge")[0].checked = false;
}
// write or delete Starting Dates
function writeOptions(variables,stvar){
	
	$("#startingDates").html(variables);
	};
function deleteOptions(){
	$("#startingDates").html("<option>----</option>");
	startingDatesState =stvar;
};

// change Starting Dates end
/* Functions for changing weeks select ******************************** */
//change weeks standard 1-24 or according to coursweeks array
function changeWeeks(v){
var courseWeeksIndex = $("#course_weeks")[0].selectedIndex;
	if (v == 1 ) 
	{if(courseWeeksIndex == 0 ){ // Woche noch nicht gewählt 
	$("#course_weeks").html(courseWeeksCode); 
		
}}

else {
	$("#course_weeks").html("<option>----</option>")
	}
}// change weeks end

/* *************** Functions for calculating of weeks in high season ***** */
function calcHighSeasonWeeks(stDate,weeknumbers)
{
	
	if($("#knowledge")[0].checked == true)
	{
		stDate = startingDatesBeginnersCalc[selectedDate][1]
	}
	if(selectedCourse == 7)
	{
		stDate = surfDatesCalc[selectedDate][1]
	}
if(startingDates[stDate][4]==1 && startingDates[stDate + selectedWeekNumber-1][4]==1){ //if booked period in Acco high season add third option 
		changeAccoOptions(1);
		 }
		 else{changeAccoOptions(0)};
		 
	for (i=stDate; i<(stDate + weeknumbers);i++)
	{if(stDate <= highseasonEnd && startingDates[i][2]==1 ) // count high season weeks
		{
		hsWeeksCount++;
		}
	if(stDate <= accoHighSeasonEnd && startingDates[i][4]==1 ) //count acco high season weeks
		{
		hsAccoWeeksCount++;
		}
	}}//calcHighSeasonWeeks end


/* Calculate Course Prices  ************************************************** */	
	function calcCoursePrice(s) //calculate Course Prices
	{if(s==0){
		coursePrice=0;
		$("#accommodation")[0].selectedIndex =0;
	}
		if(s == 1 ) // Intensive Courses
		{
			if(selectedWeekNumber <8)
		      {	calcreg(s)}

			else{
				coursePrice = longTermPrice[0] +(selectedWeekNumber-8)*longTermPrice[1];
				coursePrice += (hsWeeksCount * hsCourseSupl);
				}
}
		if( s == 2 || s == 3 ) // Superintensive und Intensive plus  
		{calcreg(s)}
		
		if(s == 4) // one to one
		{var selectedaddinfo = $("#addinfo")[0].selectedIndex;	
			coursePrice = (selectedaddinfo + 2) * selectedWeekNumber * coursePrices[s-1][0];
			}
			
		if(s== 5 || s== 6 )// Dele + Master
		{coursePrice = coursePrices[s-1][0];
				}
			
		if(s == 7){ //Surf
			hsWeeksCount = 0;
			calcreg(s);
		}
		
				
//	************************************************ 
		function calcreg(s) //calculate Course Price for standardcourses
		{
			if(selectedWeekNumber < 3) //Price for one or two weeks
		{
			coursePrice = selectedWeekNumber * coursePrices[s-1][0];
					}
			if(selectedWeekNumber >= 3) //Price for more than two weeks = two weeks + addweek
		{
			coursePrice = (2 * coursePrices[s-1][0])+ (selectedWeekNumber-2)*coursePrices[s-1][1];
					}
	coursePrice += (hsWeeksCount * hsCourseSupl) // add High season supplement
		} //calcreg end
		
	
$("#courseFee").val(coursePrice);
if(coursePrice>0){
totalCoursePrice = coursePrice + enrollmentFee;
}else{totalCoursePrice = coursePrice;
}
$("#totalCourse").val(totalCoursePrice);
calcAccoPrice();// calc acco Price
} // calcCoursePrice end

// ************************ Accomodation functions ***************+
function changeAccoOptions(v){// add or remove option to Accommodation select
	if(v == 1 && $("#accommodation")[0].length < 4 ){
	$("#accommodation").append("<option value=\"" + accoAppTxt + "\">" + accoAppTxt + "</option>");
	}else{ if($(v == 0 && "#accommodation")[0].length >= 4){
		$("#accommodation :last-child").remove();
	}}
} //changeAccoOptions end
//********************************** Calc Acco
function calcAccoPrice(){
	if(selectedAcco > 0 && selectedCourse>0){
	if(selectedWeekNumber == 1) //Price for one weeks
		{
			accoPrice= accoPrices[selectedAcco -1][selectedAccoRoom *3];
					}
		if(selectedWeekNumber == 2) //Price for two weeks
		{
			accoPrice= (accoPrices[selectedAcco -1][selectedAccoRoom *3])+ accoPrices[selectedAcco -1][selectedAccoRoom *3 +1];
					}
		if(selectedWeekNumber >2) //Price for more than two weeks = two weeks + addweek
		{
			accoPrice = ((accoPrices[selectedAcco -1][selectedAccoRoom *3])+ accoPrices[selectedAcco -1][selectedAccoRoom *3 +1]) + (selectedWeekNumber-2)* accoPrices[selectedAcco -1][selectedAccoRoom *3 +2];
					}
	if(selectedAcco == 1 || selectedAcco == 3 ){
	   if(selectedWeekNumber == 1){
	       accoPrice += (hsAccoWeeksCount * hsAccoSupplSingleWeek[selectedAccoRoom]) // add High season supplement for one week
	   }else{
	accoPrice += (hsAccoWeeksCount * hsAccoSuppl[selectedAccoRoom]) // add High season supplement
	}}
	}else {
		accoPrice = 0
	}
 $("#accommodation_fee").val(accoPrice);
	$("#fee").val(totalCoursePrice + accoPrice);
}
	
/* Effects showing and hiding boxes ****************************************************/
function effects(boxes)
{
var boxesIDs = ["#addinfoBox","#knowledgeBox","#startingDatesBox","#courseWeeksBox"];
	for (i=0; i < boxes.length; i++)
{
	var box = boxesIDs[i];
	if (boxes[i] == 0)
	{
		$(box).hide('slow');
	}
else {
	$(box).show('slow');
}}
if(selectedCourse == 0 )
{
	msgboxvar.html("");
	}
else {
	msgboxvar.html("<p>" + messagesTxt[selectedCourse-1] + "</p>");
}
} //effects end
// show Roommate input for doubleroom only
	function roommate(v){
		if(v==1){
			$("#doubleroom").show('slow');
		}else{
			$("#doubleroom").hide('slow');
			$("#roommate").val("");

		}
	}

  });//ready end
