// *********************************************************
// Div functions
// *********************************************************

var searchTimesValue = new Array(28);
var searchTimesText = new Array(28);
var searchIataCode = new Array(48);
var searchCity = new Array(48);	

searchTimesValue[0]= "MO"; searchTimesValue[1] = "AM"; searchTimesValue[2] = "PM";
searchTimesValue[3]= "EV"; searchTimesValue[4] = "AD"; searchTimesValue[5] = "01";
searchTimesValue[6]= "02"; searchTimesValue[7] = "03"; searchTimesValue[8] = "04";
searchTimesValue[9]= "05"; searchTimesValue[10]= "06"; searchTimesValue[11]= "07";
searchTimesValue[12]= "08"; searchTimesValue[13]= "09"; searchTimesValue[14]= "10";
searchTimesValue[15]= "11"; searchTimesValue[16]= "12"; searchTimesValue[17]= "13";
searchTimesValue[18]= "14"; searchTimesValue[19]= "15"; searchTimesValue[20]= "16";
searchTimesValue[21]= "17"; searchTimesValue[22]= "18"; searchTimesValue[23]= "19";
searchTimesValue[24]= "20"; searchTimesValue[25]= "21"; searchTimesValue[26]= "22";
searchTimesValue[27]= "23"; searchTimesValue[28]= "24";
			
searchTimesText[0]= "06:00-10:00"; searchTimesText[1] = "09:00-15:00"; searchTimesText[2] = "15:00-19:00";
searchTimesText[3]= "18:00-24:00"; searchTimesText[4] = "Hela dagen"; searchTimesText[5] = "01:00";
searchTimesText[6]= "02:00"; searchTimesText[7] = "03:00"; searchTimesText[8] = "04:00";
searchTimesText[9]= "05:00"; searchTimesText[10]= "06:00"; searchTimesText[11]= "07:00";
searchTimesText[12]= "08:00"; searchTimesText[13]= "09:00"; searchTimesText[14]= "10:00";
searchTimesText[15]= "11:00"; searchTimesText[16]= "12:00"; searchTimesText[17]= "13:00";
searchTimesText[18]= "14:00"; searchTimesText[19]= "15:00"; searchTimesText[20]= "16:00";
searchTimesText[21]= "17:00"; searchTimesText[22]= "18:00"; searchTimesText[23]= "19:00";
searchTimesText[24]= "20:00"; searchTimesText[25]= "21:00"; searchTimesText[26]= "22:00";
searchTimesText[27]= "23:00"; searchTimesText[28]= "24:00";

searchIataCode[0]=	"SDL"; searchIataCode[1]= "LLA"; searchIataCode [2]= "OSD";
searchIataCode[3]= "SFT"; searchIataCode[4]= "UME"; searchIataCode[5]= "LLA"; 
searchIataCode[6]= "STO"; searchIataCode[7]= "GOT"; searchIataCode[8]= "MMX"; 
searchIataCode[9]= "VBY"; searchIataCode[10]= "KLR"; searchIataCode[11]= "JKG";
searchIataCode[12]= "KSD"; searchIataCode[13]= "THN"; searchIataCode[14]= "KID";
searchIataCode[15]= "HAD"; searchIataCode[16]= "AGH"; searchIataCode[17]= "OSL+";
searchIataCode[18]= "CPH"; searchIataCode[19]= "HEL"; searchIataCode[20]= "LON";
searchIataCode[21]= "PAR"; searchIataCode[22]= "HAM"; searchIataCode[23]= "FRA";
searchIataCode[24]= "DUS"; searchIataCode[25]= "BER"; searchIataCode[26]= "HAJ";
searchIataCode[27]= "MAN"; searchIataCode[28]= "ZRH"; searchIataCode[29]= "GVA";
searchIataCode[30]= "BGO"; searchIataCode[31]= "SVG"; searchIataCode[32]= "AAR";
searchIataCode[33]= "AMS"; searchIataCode[34]= "BRU"; searchIataCode[35]= "MAD";
searchIataCode[36]= "BCN"; searchIataCode[37]= "PRG"; searchIataCode[38]= "BUD";
searchIataCode[39]= "ROM"; searchIataCode[40]= "MIL"; searchIataCode[41]= "LIS";
searchIataCode[42]= "MIA"; searchIataCode[43]= "CHI"; searchIataCode[44]= "NYC";
searchIataCode[45]= "TYO"; searchIataCode[46]= "HKG"; searchIataCode[47]= "SIN";

searchCity[0]=	"sundsvall"; searchCity[1]= "luleå"; searchCity [2]= "östersund";
searchCity[3]= "skellefteå"; searchCity[4]= "umeå"; searchCity[5]= "piteå";
searchCity[6]= "stockholm"; searchCity[7]= "göteborg"; searchCity[8]= "malmö";
searchCity[9]= "visby"; searchCity[10]= "kalmar"; searchCity[11]= "jönköping";
searchCity[12]= "karlstad"; searchCity[13]= "trollhättan"; searchCity[14]= "kristianstad";
searchCity[15]= "halmstad"; searchCity[16]= "ängelholm"; searchCity[17]= "oslo";
searchCity[18]= "köpenhamn"; searchCity[19]= "helsingfors"; searchCity[20]= "london";
searchCity[21]= "paris"; searchCity[22]= "hamburg"; searchCity[23]= "frankfurt";
searchCity[24]= "dusseldorf"; searchCity[25]= "berlin"; searchCity[26]= "hannover";
searchCity[27]= "mancehster"; searchCity[28]= "zurich"; searchCity[29]= "geneve";
searchCity[30]= "bergen"; searchCity[31]= "stavanger"; searchCity[32]= "århus";
searchCity[33]= "amsterdam"; searchCity[34]= "bryssel"; searchCity[35]= "madrid";
searchCity[36]= "barcelona"; searchCity[37]= "prag"; searchCity[38]= "budapest";
searchCity[39]= "rom"; searchCity[40]= "milano"; searchCity[41]= "lissabon";
searchCity[42]= "miami"; searchCity[43]= "chicago"; searchCity[44]= "new york";
searchCity[45]= "tokyo"; searchCity[46]= "hong kong"; searchCity[47]= "singapore";		
		
function initDates(depMonthObj,depDayObj,retMonthObj,retDayObj){

	var monthNames = new Array(11);
	monthNames[0]= "jan"; monthNames[1] = "feb"; monthNames[2] = "mar";
	monthNames[3]= "apr"; monthNames[4] = "maj"; monthNames[5] = "jun";
	monthNames[6]= "jul"; monthNames[7] = "aug"; monthNames[8] = "sep";
	monthNames[9]= "okt"; monthNames[10]= "nov"; monthNames[11]= "dec";

	var vString = ""
	var tString = ""
	var today = new Date()
	var thisYear = today.getFullYear()
	var thisMonth = today.getMonth()

	depMonthObj.length = 0
	retMonthObj.length = 0
	depDayObj.length = 0
	retDayObj.length = 0
	
	for(var i= thisMonth; i<(thisMonth+12);i++) {
		timeA = new Date(thisYear,i,1)
		month = timeA.getMonth()
		year  = timeA.getFullYear()
		tString = year+" "+monthNames[month]
		if ((month+1) > 9){
			vString = "" + year + "" + (month+1)
		}
		else {
			vString = "" + year + "0" + (month+1)
		}
		depMonthObj.options[i-thisMonth] = new Option(tString)
		depMonthObj[i-thisMonth].value=vString
		retMonthObj.options[i-thisMonth] = new Option(tString)
		retMonthObj[i-thisMonth].value=vString
	}

	for(var i= 0; i<31;i++) {
		tString = "" + (i+1)
		if ((i+1) > 9) {
			vstring = i+1
		}
		else {
			vstring = "0" + (i+1)
		}
		depDayObj.options[i] = new Option(tString)
		depDayObj[i].value=vstring
		retDayObj.options[i] = new Option(tString)
		retDayObj[i].value=vstring
	}
	
	sDepIndex = 0
	sDepYear  = thisYear
	sDepMonth = thisMonth + 1
	sDepDay  = today.getDate()
	sRetIndex = 0
	sRetYear  = sDepYear
	sRetMonth = sDepMonth
	sRetDay  = sDepDay

	setNumberOfDays("depMonth", depMonthObj, depDayObj);
	setNumberOfDays("retMonth", retMonthObj, retDayObj);

	depMonthObj[0].selected=true
	depDayObj[sDepDay-1].selected=true
	retMonthObj[0].selected=true
	retDayObj[sRetDay-1].selected=true
	
	changeTimeList ("M");
}

var multimontharray = new Array(12);
multimontharray[0] = "31"; multimontharray[1] = "28"; multimontharray[2]  = "31";  multimontharray[3] = "30";
multimontharray[4] = "31"; multimontharray[5] = "30"; multimontharray[6]  = "31";  multimontharray[7] = "31";
multimontharray[8] = "30"; multimontharray[9] = "31"; multimontharray[10] = "30";  multimontharray[11]= "31";

function changeMonthReturn(selboxnumber,selmonthform,seldayform) {
  var beginmonthform     = "";
  var begindayform       = "";

  if(selboxnumber == 1) {
    beginmonthform     = eval(selmonthform+".BMonth");
    begindayform       = eval(seldayform+".BDay");
  }
  if(selboxnumber == 2) {
    beginmonthform     = eval(selmonthform+".EMonth");
    begindayform       = eval(seldayform+".EDay");
  }

  var selectedBYear      = beginmonthform.options[beginmonthform.selectedIndex].value.substring(0,4);
  var selectedBMonth     = myIntParser(beginmonthform.options[beginmonthform.selectedIndex].value.substring(4,6));
  var daysofBMonth       = getDaysOfMonthMulti(selectedBYear,selectedBMonth);
  var selectedmonthindex = beginmonthform.selectedIndex;
  var selecteddayindex   = begindayform.selectedIndex;

  var mstart = selmonthform+".BMonth";
  var dstart = selmonthform+".BDay";
  var mend   = selmonthform+".EMonth";
  var dend   = selmonthform+".EDay";

  if(selboxnumber == 1) {
    setMultiMonths(mstart,dstart,selectedBYear,selectedBMonth,daysofBMonth,selectedmonthindex,selecteddayindex);
    setMultiMonths(mend,dend,selectedBYear,selectedBMonth,daysofBMonth,selectedmonthindex,selecteddayindex);


  }
  if(selboxnumber == 2) {
    setMultiMonths(mend,dend,selectedBYear,selectedBMonth,daysofBMonth,selectedmonthindex,selecteddayindex);
  }
}


function changeDayReturn(selboxnumber,selmonthform,seldayform) {
  var beginmonthform     = "";
  var begindayform       = "";

  if(selboxnumber == 1) {
    beginmonthform     = eval(selmonthform+".BMonth");
    begindayform       = eval(seldayform+".BDay");
  }
  if(selboxnumber == 2) {
    beginmonthform     = eval(selmonthform+".EMonth");
    begindayform       = eval(seldayform+".EDay");
  }

  var selectedBYear      = beginmonthform.options[beginmonthform.selectedIndex].value.substring(0,4);
  var selectedBMonth     = myIntParser(beginmonthform.options[beginmonthform.selectedIndex].value.substring(4,6));
  var daysofBMonth       = getDaysOfMonthMulti(selectedBYear,selectedBMonth);
  var selectedmonthindex = beginmonthform.selectedIndex;
  var selecteddayindex   = begindayform.selectedIndex;

  var mstart = selmonthform+".BMonth";
  var dstart = selmonthform+".BDay";
  var mend   = selmonthform+".EMonth";
  var dend   = selmonthform+".EDay";

  if(selboxnumber == 1) {
    setMultiDays(mstart,dstart,selectedBYear,selectedBMonth,daysofBMonth,selectedmonthindex,selecteddayindex);

    var valueBDay = dstart + ".value";
    var valueEDay = dend + ".value";
    var valueBMonth = mstart + ".value";
    var valueEMonth = mend + ".value";

    if((eval(valueBDay) > eval(valueEDay)) && (eval(valueBMonth) == eval(valueEMonth))){
      setMultiDays(mend,dend,selectedBYear,selectedBMonth,daysofBMonth,selectedmonthindex,selecteddayindex);
    }

  }
  if(selboxnumber == 2) {
    setMultiDays(mend,dend,selectedBYear,selectedBMonth,daysofBMonth,selectedmonthindex,selecteddayindex);
  }
}


function setNumberOfDaysMulti(monthform,dayform,daysofBMonth) {
  var bmonthform = eval(monthform);
  var bdayform   = eval(dayform);

  bdayform.length = 0

  for(var i= 0 ;i<daysofBMonth;i++) {
    {
      bdayform.options[i] = new Option(""+(i+1));
		  bdayform[i].value=""+filloutZerosMulti(i+1);
    }
  }
}



function filloutZerosMulti(number) {
  if(number<10)
    return "0"+number;
  else
    return number;
}



function getDaysOfMonthMulti(selectedBYear,selectedBMonth) {
  var daysofmonth = multimontharray[parseInt(selectedBMonth)-1]; //contains days in selected month

  if(parseInt(selectedBYear)%4 == 0 && daysofmonth == "28")
    daysofmonth = 29;

  return daysofmonth;
}

function setMultiMonths(monthform,dayform,selectedBYear,selectedBMonth,daysofBMonth,selectedmonthindex,selecteddayindex) {
  var bdayform = eval(dayform);
  var bmonthform = eval(monthform);

  bmonthform.options[selectedmonthindex].selected=true;
}

function setMultiDays(monthform,dayform,selectedBYear,selectedBMonth,daysofBMonth,selectedmonthindex,selecteddayindex) {
  var bdayform = eval(dayform);
  
  if((selecteddayindex+1)>daysofBMonth) {
    bdayform.options[(daysofBMonth-1)].selected = true;
  }
  else {
    bdayform.options[selecteddayindex].selected = true;
  }

}

function setDate(ym,d,formmonth,formday) {
  var monthform = eval(formmonth);
  var dayform = eval(formday);

  changeMonthCalender(ym,d,formmonth,formday);
}


function myIntParser(num) {
  var strnum = ""+num;
  var ret;
  var firstdig = strnum.substring(0,1);

  if(firstdig=="0") {
    ret = strnum.substring(1,2);
    return parseInt(ret);
  }
  else {
    return parseInt(strnum);
  }
}

function setNumberOfDays(boxtochange, monthObj, dayObj) {

	var numDays = 0
	var iLen    = 0
	var oneDay  = 24*60*60*1000
	var sYear	= monthObj[monthObj.selectedIndex].value.substring(0,4)
	var sMonth	= monthObj[monthObj.selectedIndex].value.substring(4)
	var sDay	= dayObj.selectedIndex + 1
	var tString = ""

	timeA = new Date(sYear, sMonth, 1);
	timeDifference = timeA - oneDay;
	timeB = new Date(timeDifference);
	numDays = timeB.getDate();
	iLen = dayObj.length
	dayObj.length = numDays
	for (var i = iLen; i<numDays; i++) {
		tString	= "" + (i+1)
		dayObj[i].text = tString
		dayObj[i].value = i+1
	}
	if (sDay > numDays)
		dayObj[numDays-1].selected = true;
}


function setDivProps(){
	initDates(document.qsForm.BMonth, document.qsForm.BDay, document.qsForm.EMonth, document.qsForm.EDay);
}

function addOption(selectbox,text,value,index)
{
	selectbox.options[index] = new Option(text,value, false, true);
}

function removeAllOptions(selectbox)
{
	var i;
	for(i=selectbox.options.length-1;i>=0;i--){
		selectbox.remove(i);
	}
}

function removeOptions(selectbox, myValue)
{
	var i;
	for(i=selectbox.options.length-1;i>=0;i--)
	{
		if(selectbox.options[i].value == myValue)
			selectbox.remove(i);
	}
}

function changeTimeList (searchType){
	removeAllOptions (document.qsForm.BTime);
	if (searchType == "M"){
		selectBBox = document.qsForm.BTime;
		selectEBox = document.qsForm.ETime;
		var timeText;
		var timeValue;
		for (i=0;i<29;i++){
			timeText = searchTimesText[i];
			timeValue = searchTimesValue[i];
			addOption (selectBBox, timeText, timeValue, i);
			addOption (selectEBox, timeText, timeValue, i);
		}
		selectBBox.selectedIndex = 4;
		selectEBox.selectedIndex = 4;
	}
	
	
	if (searchType == "T"){
		selectBBox = document.qsForm.BTime;
		selectEBox = document.qsForm.ETime;
		var timeText;
		var timeValue;
		for (i=5;i<29;i++){
			timeText = searchTimesText[i];
			timeValue = searchTimesValue[i];
			addOption (selectBBox, timeText, timeValue, i-5);
			addOption (selectEBox, timeText, timeValue, i-5);
		}
		selectBBox.selectedIndex = 6;
		selectEBox.selectedIndex = 16;
	}
}


// *********************************************************
// Validation functions
// *********************************************************
function checkFields(){
	
	var bLocation = replaceIata(document.qsForm.selectedBLocation.value);
	var eLocation = replaceIata(document.qsForm.selectedELocation.value);
	
	document.qsForm.selectedBLocation.value = bLocation;
	document.qsForm.BLocation.value = bLocation;
	document.qsForm.selectedELocation.value = eLocation;
	document.qsForm.ELocation.value = eLocation;	
	

	var sErrorMessage="";
	var isOK=true;

	if(bLocation==""){
		sErrorMessage = sErrorMessage + '* Du måste ange avreseort';
		isOK=false;
	}
	if (eLocation==""){
		sErrorMessage = sErrorMessage + "\n"+'* Du måste ange destination';
		isOK=false;
	}
	if(bLocation==eLocation){
		sErrorMessage = sErrorMessage + "\n"+'* Du har angivit samma avreseort och destination';
		isOK=false;
	}

	if(isOK) {
		document.qsForm.submit();
	} else {
		alert(sErrorMessage);
	}
}


function replaceIata(myLocation){	
	for (i=0;i<searchCity.length;i++){
		if (myLocation.toLowerCase() == searchCity[i])
			return searchIataCode[i];
	}
	return myLocation
}




