
/**
 * produktpakker
 */
arrTravelOptions = new Array();

/* standard-pakke */
arrTravelOptions[1] = new Array();
arrTravelOptions[1][0] = new Array('C','Economy Car Package (up to 5 persons + car)');
arrTravelOptions[1][1] = new Array('K','Economy campervan/Caravan package');
arrTravelOptions[1][2] = new Array('B','Car package (up to 5 persons + car)');
arrTravelOptions[1][3] = new Array('A','Crossing (for passengers without car)');


/* Norge - Danmark - tur */
arrTravelOptions[2] = new Array();
arrTravelOptions[2][0] = new Array('J','Economy Car Package (up to 5 persons + car)');
arrTravelOptions[2][1] = new Array('B','Car package (up to 5 persons + car)');
arrTravelOptions[2][2] = new Array('A','Crossing (for passengers without car)'); 

/* Norge - Tyskland - tur */
arrTravelOptions[3] = new Array();
arrTravelOptions[3][0] = new Array('C','Economy Car Package (up to 4 persons + car)');
arrTravelOptions[3][1] = new Array('B','Car package (up to 2/4 persons + car)');
arrTravelOptions[3][2] = new Array('A','Crossing (for passengers without car)'); 


/* Norge - Tyskland - tur/retur */
arrTravelOptions[4] = new Array();
arrTravelOptions[4][0] = new Array('F','Color Line Cruises (no meals included)');
arrTravelOptions[4][1] = new Array('D','Color Line Cruises (2x breakfast and 2x evening buffet)');
//arrTravelOptions[4][1] = new Array('E','Color Line Cruises (2x breakfast)');
arrTravelOptions[4][2] = new Array('C','Economy Car Package (up to 4 persons + car)');
arrTravelOptions[4][3] = new Array('B','Car package (up to 2/4 persons + car)');
arrTravelOptions[4][4] = new Array('A','Crossing (for passengers without car)'); 

/**
 * kalendertekst
 */

arrInfoOptions = new Array();
/* standard */
arrInfoOptions[0] = new Array();
arrInfoOptions[0][0] = new Array('red','No spaces available');
arrInfoOptions[0][1] = new Array('green','Available');
arrInfoOptions[0][2] = new Array('border','No departure');

/* &Oslash;konomi-bilpakke Norge-Danmark */
arrInfoOptions[1] = new Array();
arrInfoOptions[1][0] = new Array('green','Economy Car Package 0<br />from &euro; 99,-');
arrInfoOptions[1][1] = new Array('yellow','Economy Car Package 1<br />from &euro; 149,-');
arrInfoOptions[1][2] = new Array('grey','Economy Car Package 2<br />from &euro; 217,-');
arrInfoOptions[1][3] = new Array('orange','Economy Car Package 3<br />from &euro; 307,-');
arrInfoOptions[1][4] = new Array('border','The car package is valid for up to 5 persons and one car, return trip, cabin is not included. Please see our timetable for cabin fares.');
arrInfoOptions[1][5] = new Array('blue','&euro; 101-237 one way<br/>Seat is not included. Please see our timetable for seat fare.');
arrInfoOptions[1][6] = new Array('red','No spaces available');
arrInfoOptions[1][7] = new Array('border','No departure');

/* &Oslash;konomi-bilpakke Bergen-Hirtshals */
arrInfoOptions[2] = new Array();
arrInfoOptions[2][0] = new Array('orange','Super-Sparpaket<br />ab &euro; 384,-');
arrInfoOptions[2][1] = new Array('brown','Autosparpaket<br />ab &euro; 426,-<br />bis &euro; 862,-');
arrInfoOptions[2][2] = new Array('red','No spaces available');
arrInfoOptions[2][3] = new Array('border','No departure');

/* &Oslash;konomi-bilpakke Oslo-Kiel */
arrInfoOptions[3] = new Array();
arrInfoOptions[3][0] = new Array('pink','Economy Car Package 0<br />from &euro; 349,- (2 Pers.)<br />from &euro; 399,- (4 Pers.)');
arrInfoOptions[3][1] = new Array('green','Economy Car Package 1<br />from &euro; 449,- (2 Pers.)<br />from &euro; 499,- (4 Pers.)');
arrInfoOptions[3][2] = new Array('lightgreen','Economy Car Package 2<br />from &euro; 549,- (2 Pers.)<br />from &euro; 599,- (4 Pers.)');
arrInfoOptions[3][3] = new Array('yellow','Economy Car Package 3<br />from &euro; 649,- (2 Pers.)<br />from &euro; 699,- (4 Pers.)');
arrInfoOptions[3][4] = new Array('grey','Economy Car Package 4<br />from &euro; 749,- (2 Pers.)<br />from &euro; 799,- (4 Pers.)');
arrInfoOptions[3][5] = new Array('orange','Economy Car Package 5<br />ab &euro; 849,- (2 Pers.)<br />ab &euro; 899,- (4 Pers.)');
arrInfoOptions[3][6] = new Array('border','The car package is valid for 2 to 4 persons and one car, return trip. Including one three star inside cabin. Supplement for other cabin categories.');
arrInfoOptions[3][7] = new Array('blue','From &euro; 438,- (2 to 4 persons - one car, one way)');
arrInfoOptions[3][8] = new Array('no-border','The car package is valid for 2 to 4 persons and one car, return trip. Including one three star inside cabins. Supplement for other cabin categories.');
arrInfoOptions[3][9] = new Array('red','No spaces available');
arrInfoOptions[3][10]= new Array('border','No departure');

/* cruiseprodukter */
arrInfoOptions[4] = new Array();
arrInfoOptions[4][0] = new Array('green','<b>EUR 149,-</b>');
arrInfoOptions[4][1] = new Array('yellow','<b>EUR 179,-</b>');
arrInfoOptions[4][2] = new Array('orange','<b>EUR 209,-</b>');
arrInfoOptions[4][3] = new Array('darkblue','<b>EUR 249,-</b>');
arrInfoOptions[4][4] = new Array('violet','<b>EUR 279,-</b>');
//arrInfoOptions[4][5] = new Array('pink','<b>EUR 279,-</b>');
arrInfoOptions[4][5] = new Array('red','No spaces available');
arrInfoOptions[4][6] = new Array('border','No departure');

/* cruiseprodukter */
arrInfoOptions[5] = new Array();
arrInfoOptions[5][0] = new Array('green','Available');
arrInfoOptions[5][1] = new Array('red','No spaces available');
arrInfoOptions[5][2] = new Array('border','No departure');

/* autospaaaarpaket oslo:kiel-kiel:oslo */
arrInfoOptions[6] = new Array();
arrInfoOptions[6][0] = new Array('blue','Car Package<br /> from &euro; 438,- (2 persons one way)<br />from &euro; 462,- (4 persons, one way)');
arrInfoOptions[6][1] = new Array('red','No spaces available');
arrInfoOptions[6][2] = new Array('border','No departure');

/* norge-sverrige */
arrInfoOptions[7] = new Array();
arrInfoOptions[7][0] = new Array('yellow','Economy Car Package 1<br />ab &euro; 44,-');
arrInfoOptions[7][1] = new Array('grey','Economy Car Package 2<br />ab &euro; 64,-');
arrInfoOptions[7][2] = new Array('orange','Economy Car Package 3<br />ab &euro; 94,-');
arrInfoOptions[7][3] = new Array('border','The car package is valid for up to 5 persons and one car, return trip.');
arrInfoOptions[7][4] = new Array('red','No spaces available');
arrInfoOptions[7][5] = new Array('border','No departure');

/* caravanpakke Norge-Danmark */
arrInfoOptions[8] = new Array();
arrInfoOptions[8][0] = new Array('yellow','Economy campervan / caravan package 1<br />from &euro; 249,-');
arrInfoOptions[8][1] = new Array('grey','Economy campervan / caravan package 2<br />from &euro; 299,-');
arrInfoOptions[8][2] = new Array('orange','Economy campervan / caravan package 3<br />from &euro; 424,-');
arrInfoOptions[8][3] = new Array('border','The economy campervan / caravan package is valid for up to 5 persons and one campervan or one car + caravan, return trip, seats are not included.');
arrInfoOptions[8][4] = new Array('blue','From &euro; 187 mid-week (one way)<br/>From &euro; 235 weekend<br />Seats are not included.');
arrInfoOptions[8][5] = new Array('red','No spaces available');
arrInfoOptions[8][6] = new Array('border','No departure');

/* cruiseprodukter */
arrInfoOptions[9] = new Array();
arrInfoOptions[9][0] = new Array('green','<b>EUR 99,-*</b>');
arrInfoOptions[9][1] = new Array('yellow','<b>EUR 129,-</b>');
arrInfoOptions[9][2] = new Array('orange','<b>EUR 159,-</b>');
arrInfoOptions[9][3] = new Array('darkblue','<b>EUR 189,-</b>');
arrInfoOptions[9][4] = new Array('pink','<b>EUR 219,-</b>');
arrInfoOptions[9][5] = new Array('red','No spaces available');
arrInfoOptions[9][6] = new Array('border','No departure');


function A_txt( dato ){
	
	switch( dato  ){
		case '0711':
		case '0712':
		case '0801':
		case '0802':
			return '<u>01.11.2007 - 29.02.2008</u><br/><b>EUR 139,-</b>';
			break;
			
		case '0803':
		case '0804':
			return '<u>01.03.2008 - 30.04.2008</u><br/><b>EUR 149,-</b>';
			break;
		case '0805':
		case '0806':
		case '0807':
		case '0808':
		case '0809':
		case '0810':
			return '<u>01.05.2008 - 30.10.2008</u><br/><b>EUR 159,-</b>';
			break;
		case '0811':
		case '0812':
			return '<u>01.11.2008 - 29.12.2008</u><br/><b>EUR 139,-</b>';
			break;
		
		default:
			return '&nbsp;';
	}
}

function B_txt( dato ){

	switch( dato  ){
		case '0711':
		case '0712':
		case '0801':
		case '0802':
			return '<u>01.11.2007 - 29.02.2008</u><br/><b>EUR 139,-</b>';
			break;
			
		case '0803':
		case '0804':
			return '<u>01.03.2008 - 30.04.2008</u><br/><b>EUR 169,-</b>';
			break;
		case '0805':
		case '0806':
		case '0807':
		case '0808':
		case '0809':
		case '0810':
			return '<u>01.05.2008 - 30.10.2008</u><br/><b>EUR 189,-</b>';
			break;
		case '0811':
		case '0812':
			return '<u>01.11.2008 - 29.12.2008</u><br/><b>EUR 139,-</b>';
			break;
		
		default:
			return '&nbsp;';
	}
}

function C_txt( dato ){
	
	switch( dato  ){
		case '0711':
		case '0712':
		case '0801':
		case '0802':
			return '<u>01.11.2007 - 29.02.2008</u><br/><b>EUR 155,-</b>';
			break;
			
		case '0803':
		case '0804':
			return '<u>01.03.2008 - 30.04.2008</u><br/><b>EUR 185,-</b>';
			break;
		case '0805':
		case '0806':
		case '0807':
		case '0808':
		case '0809':
		case '0810':
			return '<u>01.05.2008 - 30.10.2008</u><br/><b>EUR 215,-</b>';
			break;
		case '0811':
		case '0812':
			return '<u>01.11.2008 - 29.12.2008</u><br/><b>EUR 155,-</b>';
			break;
		
		default:
			return '&nbsp;';
	}
}

/**
 * Funksjoner som skal kjøres i onload-eventet legges inn her
 */
window.onload = function(){
	externalLinks();
}

/* diverse globale variabler */
var boolLoadedPage  = false;
var strBaseURL 		= '';
var boolShowDetails	= false;
var intTimeOut		= 0;
var intTimeBack		= 0;

var altcode			= 0;

/**

	DET ER IKKE MER Å KONFIGURERE UNDER DETTE NIVÅ

**/

/**
 * populerer globale variabler med avgangstidpunkter for ut- og retur-reise
 * @param	string 	out/back
 * @param	integer	unix timestamp
 * @return 	void
 */ 
function setTravelTime(val,intTime){
	if(val == 'Out'){
		intTimeOut = intTime;
	}else{
		intTimeBack = intTime;
	}
	return;
}

function setAltcode( code ){
	altcode = code;
	return;
}

/**
 * genererer en url med parametre og popper bookingvindu
 * $param	string	strBookBaseUrl
 * @return 	void
 */
function popBooker(strBookBaseUrl){
	
	var f,strPopUrl,boolRoundTrip,boolEcoPack,strTurKode,strLine;
	f = document.forms['book-form'];
	boolRoundTrip 	= (getRadioValue(f.elements['roundtrip'])=='1') ? true:false;
	boolEcoPack 	= (f.elements['produktkode'][f.elements['produktkode'].selectedIndex].value == 'C' || f.elements['produktkode'][f.elements['produktkode'].selectedIndex].value == 'J' ) ? true:false;
	strLine 		= f.elements['linje_ut'][f.elements['linje_ut'].selectedIndex].value;			
	strTurKode  	= (f.elements['produktkode'][f.elements['produktkode'].selectedIndex].value == 'B') ? '0101':'N';
		
	strPopUrl  = strBookBaseUrl;		
	strPopUrl += '&linje_ut='+f.elements['linje_ut'][f.elements['linje_ut'].selectedIndex].value;
	strPopUrl += '&dato_ut='+f.elements['curYearOut'].value+f.elements['curMonOut'].value+f.elements['curDayOut'].value;
	
	// sjekk om det er valgt avgang for b&aring;de utreise og retur. is&aring;fall m&aring;
	// returreisen ha avgang senere enn utreisen
	if((intTimeOut > 5) && (intTimeBack > 5) && (intTimeOut >= intTimeBack) ){
		alert('You must choose a departure for your outward and/or homeward journey');
		return;
	}
	// radiobutton, avgangsdetaljer	
	if(f.elements['avgang']){
		var tmpUt = '';		
		if(f.elements['avgang'].length){
			tmpUt = getRadioValue(f.elements['avgang']);						
		}else if(f.elements['avgang'].checked){
			tmpUt = f.elements['avgang'].value
		}		
		if(tmpUt.length==4){
			strPopUrl += '&kl_ut='+tmpUt;			
		}
	}
	
	// hvis tur-retur, legg p&aring; returlinje
	if(boolRoundTrip){
		strPopUrl += '&linje_hjem='+f.elements['linje_hjem'][f.elements['linje_hjem'].selectedIndex].value;
		strPopUrl += '&dato_hjem='+f.elements['curYearHome'].value+f.elements['curMonHome'].value+f.elements['curDayHome'].value;
		// radiobutton, returdetaljer	
		if(f.elements['retur']){
			var tmpHjem = '';		
			if(f.elements['retur'].length){
				tmpHjem = getRadioValue(f.elements['retur']);						
			}else if(f.elements['retur'].checked){
				var tmpHjem = f.elements['retur'].value
			}		
			if(tmpHjem.length==4){
				strPopUrl += '&kl_hjem='+tmpHjem;			
			}
		}		
	}
	// har ikke avbestillingsbeskyttelse
	if(strLine == 'SAND:STRM' || strLine == 'STRM:SAND'){
		strPopUrl += '&avbest=nei';
	}
	
	// hjelpetekst hvis det er &oslash;konomibilpakke
	if(boolEcoPack){				
			strPopUrl += '&hjelpetekst=You+can+book+tickets+for+up+to+six+people+and+one+car+per+booking';			
	}
	
	
	if( altcode != 0 ) {
		// er dette et cruiseprodukt? isåfall, sett turkode			
		strTurKode = altcode;
		strPopUrl += '&kjoretoy_nei=true';
	}else{
		// nei, det er nok overfart eller bilpakke. sett på bilparameter			
		strPopUrl += '&veh=CAR5';
	}
	
	strPopUrl += '&turkode='+strTurKode;
	// pop booking i et nytt vindu	
	winpop = window.open(strPopUrl,'flexi','status=no,toolbar=yes,scrollbars=yes,resizable=1,width=800,height=900,screenX=30,screenY=30,left=30,top=30');
	return;
	
}

/**
 * viser/skjuler rader med informasjon i kalenderforklaringen
 * $param	string	
 * @return 	none
 */
function toggleDetails(){
	var f,elmProduct,elmOut,elmBack,elmTrip,boolReturnTrip,strLine,intOption,i,boolEcoPack,len;
	
	if(!document.getElementById){
		return;
	}
		
	f 			= document.forms['book-form'];
	elmOut	 	= f.elements['linje_ut'];
	elmBack	 	= f.elements['linje_hjem'];
	elmProduct	= f.elements['produktkode'];
	elmTrip  	= f.elements['roundtrip'];
	
	boolReturnTrip	= (getRadioValue(elmTrip)==1) ? true:false;
	boolEcoPack 	= (elmProduct[elmProduct.selectedIndex].value == 'C' || elmProduct[elmProduct.selectedIndex].value == 'J' ) ? true:false;
	strLine 		= elmOut[elmOut.selectedIndex].value;	
	
	var produkt = elmProduct[elmProduct.selectedIndex].value;
	
	if( boolEcoPack && boolReturnTrip ){
	
		switch( strLine ){
		
			case 'SAND:STRM':
			case 'STRM:SAND':
				intOption = 7;
				break;
		
			case 'BERG:HIRT':
			case 'HIRT:BERG':
				intOption = 2;
				break;
		
			case 'OSLO:KIEL':
			case 'KIEL:OSLO':
				intOption = 3;
				break;			
		
			default:
				intOption = 1;
				break;
		
		}
		
	}else if( produkt == 'F' ){
    intOption   = 9;
  }else if( produkt == 'D' ){
		intOption 	= 4;
	}else if( produkt == 'E' ){
		intOption 	= 5;
	}else if( produkt == 'B' && ( strLine == 'OSLO:KIEL' || strLine == 'KIEL:OSLO' )  ){
		intOption 	= 6;
	}else if( produkt == 'K' ){
		intOption 	= 8;
	}else{
		intOption 	= 0;
	}
		
	var len 	= arrInfoOptions[intOption].length;
	var txt;
	var dato 	= f.elements['curYearOut'].value+f.elements['curMonOut'].value;
	
	for(i=0;i<10;i++){
			
		document.getElementById('a'+i).className = 'no-show';
		document.getElementById('a'+i).innerHTML = '&nbsp;';
		document.getElementById('b'+i).className = 'no-show';
		document.getElementById('b'+i).innerHTML = '&nbsp;';
	
	}
	
	for(i=0;i<len;i++){		
	
		document.getElementById('a'+i).className = arrInfoOptions[intOption][i][0];
		document.getElementById('b'+i).className = 'border';
		// her er det fryktelig mye hardkoding!! dette for å kunne vise datoperioder
		// tilknyttet cruise fra Kiel.
		if( intOption == 4 && ( i == 100 || i == 200 ) ){ // var 1 og 2
			
			switch( i ){
					
				case 1:
					txt = A_txt( dato );
					break;
					
				case 2:
					txt = B_txt( dato );
					break;
				/*	
				case 3:
					txt = C_txt( dato );
					break;*/
							
				default:
					txt = '';
			}
						
			document.getElementById('b'+i).innerHTML = txt;
			
		}
		else if( intOption == 5 && i == 0 ){

			//document.getElementById('b'+i).innerHTML = C_txt( dato );
			document.getElementById('b'+i).innerHTML = 'Available';

		}
		else{
			document.getElementById('b'+i).innerHTML = arrInfoOptions[intOption][i][1];
		}
		
	}
	
	if(boolLoadedPage){
		updatePage(strBaseURL);
	}	
	return;	
}

/**
 * denne trigges n&aring;r man klikker for &aring; finne avgangstider og setter et ekstra
 * parameter som trigger avreisedetaljer. kaller p&aring; updatePage()
 * 
 * @access	public
 * @param	string	strUrl	baseurl
 * @return	void
 * @see 	updatePage()
 */
function getDetails( strUrl ){
	/**
	 * sjekk om det er valgt avgang for både utreise og retur. ifall må
	 * returreisen ha avgang senere enn utreisen
	 */
	var f 		= document.forms['book-form'];
	var turkode = f.elements['produktkode'][f.elements['produktkode'].selectedIndex].value;
	/**
	 * sjekker ikke returtid hvis det er et cruiseprodukt
	 */
	if( turkode == 'A' || turkode == 'B' || turkode == 'C' || turkode == 'F' ){
	
		if( ( intTimeOut > 5 ) && ( intTimeBack > 5 ) && ( intTimeOut >= intTimeBack ) ){
																	
			alert('Outward journey must be earlier than homeward journey');
			return;
		
		}
	}
		
	var reloadUrl = strUrl+'&tourdetails=1';
	boolShowDetails = true;
	updatePage( reloadUrl );
	return;
}

/**
 * denne trigges n&aring;r man klikker i kalenderen for &aring; endre m&aring;ned
 * 
 * @access	public
 * @param	string	strUrl	baseurl
 * @param	string	strVal	Out/home
 * @param	string	strDate	nu dato kalenderen skal vise
 * @return	void
 */
function updatePage(strUrl,strVal,strDate){
	var strRoundTrip,strLinjeUt,strLinjeHjem,strProduktkode,reloadURL,strDatoUt,strDatoHjem,strDagUt,strDagHjem,strTextUt,strTextHjem;
	
	f = document.forms['book-form'];
	strRoundTrip 	= getRadioValue(f.elements['roundtrip']);
	strLinjeUt	 	= f.elements['linje_ut'][f.elements['linje_ut'].selectedIndex].value;
	strTextUt		= escape(f.elements['linje_ut'][f.elements['linje_ut'].selectedIndex].text);
	strLinjeHjem 	= f.elements['linje_hjem'][f.elements['linje_hjem'].selectedIndex].value;
	strTextHjem		= escape(f.elements['linje_hjem'][f.elements['linje_hjem'].selectedIndex].text);
	strProduktkode 	= f.elements['produktkode'][f.elements['produktkode'].selectedIndex].value;
	strDagUt	 	= f.elements['dayOut'].value;
	strDagHjem	 	= f.elements['dayHome'].value;	
	
	if(strVal == 'Out'){
		// trigges av kalender, utreise
		strDagUt	= '';
		strDatoHjem = f.elements['curYearHome'].value+f.elements['curMonHome'].value+f.elements['curDayHome'].value;
		strDatoUt 	= strDate;		
	}else if(strVal == 'Home'){
		// trigges av kalender, retur
		strDagHjem	= '';
		strDatoHjem = strDate;
		strDatoUt 	= f.elements['curYearOut'].value+f.elements['curMonOut'].value+f.elements['curDayOut'].value;		
	}else{
		// hvis avgangsdetaljer skal vises, s&oslash;rg for at valgte dager blir markert
		if(boolShowDetails){
			strDagUt	= ( strDagUt.length > 0 )? strDagUt:f.elements['curDayOut'].value; 		
			strDagHjem	= ( strDagHjem.length > 0 )? strDagHjem:f.elements['curDayHome'].value;
		}
		strDatoHjem = f.elements['curYearHome'].value+f.elements['curMonHome'].value+f.elements['curDayHome'].value;
		strDatoUt 	= f.elements['curYearOut'].value+f.elements['curMonOut'].value+f.elements['curDayOut'].value;
	}
	reloadUrl = strUrl
					+'&linje_ut='+strLinjeUt
					+'&linje_hjem='+strLinjeHjem
					+'&produktkode='+strProduktkode
					+'&turretur='+strRoundTrip
					+'&dato_ut='+strDatoUt
					+'&dato_hjem='+strDatoHjem
					+'&do='+strDagUt
					+'&dh='+strDagHjem
					+'&labelout='+strTextUt
					+'&labelhome='+strTextHjem;
	// last siden p&aring; nytt
	f.target = '_self';	
	location.href = reloadUrl;
}

/**
 * denne trigges når man klikker en dato i kalenderen. alle valgbare dager
 * settes til tab-størrelse. oppdaterer også et skjult felt med valgt verdi
 * 
 * @access	public
 * @param	object	objTable		aktuell kalender (utreise/hjemreise)
 * @param	object	objTD			tabellcelle som skal forbli fullfarget
 * @param	string	strDay			p&aring;klikket dag (DD) som skal huskes
 * @return	void
 */

function setDay(objTable,objTD,strDay,strVal,intStamp){
	var elmTable,arrTD,len,i,f;
	
	if(document.getElementById){
		elmTable = objTable;		
		arrTD = elmTable.getElementsByTagName('TD');
		len = arrTD.length;
		// sett alle kalender-celler til 'tab-*' istedetfor 'big-*'
		for(i=0;i<len;i++){			
			arrTD[i].className = arrTD[i].className.replace('big', 'tab');
		}
		// sett 'big-' klasse p&aring; valgt dag
		objTD.className = objTD.className.replace('tab', 'big');
		f = document.forms['book-form'];
		f.elements['curDay'+strVal].value 	= strDay;
		f.elements['day'+strVal].value 		= strDay;	
	}
	setTravelTime(strVal,intStamp)	
	return;
}

/**
 * denne trigges n&aring;r siden lastes. setter default verdier i diverse felt
 * 
 * @access	public
 * @param	string	strValOut		linje_ut
 * @param	string	strValBack		linje_hjem
 * @param	string	strValTravel	turkode
 * @param	int		boolRoundTrip	tur=0, tur/retur=1
 * @return	void
 */

function bookingInit(strValOut,strValBack,strValTravel,intRoundTrip,objRmbTable1,objRmbTD1,strRmbDay1,strRmbType1,objRmbTable2,objRmbTD2,strRmbDay2,strRmbType2){
	var argLen = arguments.length;
	var strVal;
	var f = document.forms['book-form'];
	setSelectedOption(f.elements['linje_ut'],strValOut);
	strVal = strValOut;
	if(intRoundTrip==1){
		setSelectedOption(f.elements['linje_hjem'],strValBack);
		strVal += strValBack;
	}else{
		f.elements['linje_hjem'].disabled = true;
	}
	setOptions(f.elements['produktkode'],strVal);
	setSelectedOption(f.elements['produktkode'],strValTravel);
	
	if(argLen > 4 && objRmbTable1 && objRmbTD1 && strRmbDay1 && strRmbType1){		
		setDay(objRmbTable1,objRmbTD1,strRmbDay1,strRmbType1);
	}	
	if(argLen > 8 && objRmbTable2 && objRmbTD2 && strRmbDay2 && strRmbType2){		
		setDay(objRmbTable2,objRmbTD2,strRmbDay2,strRmbType2);
	}	
	toggleDetails();
	boolLoadedPage = true;
	return;
}
/**
 * denne trigges n&aring;r man endrer linjer. kaller p&aring; funksjoner for &aring;
 * oppdatere reisetilbud og evt. returlinje hjem
 * 
 * @access	public
 * @param	object	obj	select'en som trigger scriptet
 * @return	void
 */
function selectHandler(obj){
	var f,strValue,elmSelect,elmSelectVal,elmOut,elmBack,elmTrip,boolReturnTrip;
	
	f 		 = obj.form;
	elmOut	 = f.elements['linje_ut'];
	elmBack	 = f.elements['linje_hjem'];
	elmSelect= f.elements['produktkode'];
	elmTrip  = f.elements['roundtrip'];
	strValue = obj.value;
		
	boolReturnTrip	= (getRadioValue(elmTrip)==1) ? true:false;
	
	if(obj.name == 'linje_ut'){		
		if(boolReturnTrip){				
			setSelectedOption(elmBack,flipSplit(obj.value,':'));
			strValue += flipSplit(obj.value,':');
			elmSelectVal = elmSelect[elmSelect.selectedIndex].value;
		}
	}else{
		strValue = elmOut[elmOut.selectedIndex].value + strValue;
	}
	// sett opsjoner i reisetypeelementet
	setOptions(elmSelect,strValue,elmSelectVal);	
	return;
}

/**
 * oppdaterer select'en som viser reisetilbud
 * 
 * @access	public
 * @param	object	obj				select'en som skal oppdateres
 * @param	string	strSelectValue  verdi som benyttes for &aring; finne hvilket sett av options som skal lastes
 * @param	string	strSetValue		verdien den oppdaterte select'en skal f&aring;
 * @return	void
 */
function setOptions(obj,strSelectValue,strSetValue){
	var intOption,len,i,boolIsSameLine;
	
	boolIsSameLine = true;
	/**
	 * dersom strengen er lenger enn 9 tegn indikerer dette tur/retur 
	 * sjekk om utg.linje = returlinje, hvis ikke skal default pakke vises
	 */
	if(strSelectValue.length > 9){
		var strPartA = strSelectValue.substr(0,9);
		var strPartB = flipSplit(strSelectValue.substr(9),':');		
		if(strPartA != strPartB){
			boolIsSameLine = false;
			intOption = 2;
		}
	}
	
	if(boolIsSameLine){
		switch(strSelectValue){
			// norge - danmark (danmark - norge) 1 vei
			case 'OSLO:HIRT':
			case 'HIRT:OSLO':
			case 'OSLO:FRDH':
			case 'FRDH:OSLO':
			case 'LARV:FRDH':
			case 'FRDH:LARV':
			case 'LARV:HIRT':
			case 'HIRT:LARV':
			case 'KRIS:HIRT':
			case 'HIRT:KRIS':
			case 'STAV:HIRT':
			case 'HIRT:STAV':
			case 'BERG:HIRT':
			case 'HIRT:BERG':
				intOption = 2;
			 	break;
			// oslo - kiel 1 vei
			case 'OSLO:KIEL':
			case 'KIEL:OSLO':
				intOption = 3;
				break;			
			// oslo - kiel tur/retur
			case 'OSLO:KIELKIEL:OSLO':
			case 'KIEL:OSLOOSLO:KIEL':
				intOption = 4;
				break;
			// bergen - hirtshals tur/retur
			case 'BERG:HIRTHIRT:BERG':
			case 'HIRT:BERGBERG:HIRT':
				intOption = 5;
				break;
			default:
				intOption = 1;
				break;
		}
	}

	/**
	 * oppdaterer reisetyper med korrekte options
	 */
	len = arrTravelOptions[intOption].length
	obj.options.length = 0;
	for(i=0;i<len;i++){
		obj.options[i] = new Option(arrTravelOptions[intOption][i][1],arrTravelOptions[intOption][i][0]);
	}
	// dersom en verdi er sendt inn setter vi selecten til denne verdien
	if(arguments.length == 3){
		setSelectedOption(obj,strSetValue);
	}	
	toggleDetails();
	return;
}

/**
 * setter en option som valgt i en select
 * 
 * @access	public
 * @param	object	obj select'en som skal oppdateres
 * @param	string	val verdien som skal sammenliknes
 * @return	void
 */
 
function setSelectedOption(obj,val){
	var i,len;		
	len = obj.options.length;
	for(i=0;i<len;i++){
		if(obj.options[i].value == val){
			obj.options[i].selected = true;
			break;
		}		
	}
	return;
}

/**
 * denne trigges n&aring;r man svitsjer mellom tur og tur/retur
 * setter evt. returlinje inaktiv og oppdaterer reisetyper 
 *
 * @access	public
 * @param	object	obj radioboksen som er klikket p&aring;
 * @return	void
 */
function clickHandler(obj){	
	var f,elmBack,elmOut,objSelect,strSelectValue,strSetValue;
		f = obj.form;
		elmOut  		= f.elements['linje_ut'];
		elmBack 		= f.elements['linje_hjem'];	
		strSelectValue 	= elmOut[elmOut.selectedIndex].value;
		objSelect 		= f.elements['produktkode'];
		strSetValue = objSelect[objSelect.selectedIndex].value;
		
	if(obj.value == 0 ){		
		elmBack.disabled = true;		
	}else{
		elmBack.disabled = false;				
		setSelectedOption(elmBack,flipSplit(strSelectValue,':'));
		strSelectValue += flipSplit(strSelectValue,':');
	}	
	setOptions(objSelect,strSelectValue,strSetValue);
	return;
}

/**
 * returnerer verdien av en avkrysset radiobox i en gruppe
 *
 * @access	public
 * @param 	object 	objRadio	object av typen input type radio
 * @return 	string				verdien av det avkryssede punktet, eller tom streng
 */
function getRadioValue(objRadio){
	for(i=0;i<objRadio.length;i++){
		if(objRadio[i].checked){
			return objRadio[i].value;
			break;
		}
	}
	return '';
}

/**
 * splitter en streng og reverserer verdiene. setter inne samme tegn som det splitter p&aring;
 * returner bare de to f&oslash;rste verdiene
 *
 * @access	public
 * @param 	string 	val		strengen som skal splittes
 * @param 	string	token	tegnet det skal splittes p&aring;
 * @return 	string			reversert verdi
 */
function flipSplit(val,token){
	var arrVal = val.split(token);
	if(arrVal.length > 1){
		return (arrVal[1]+token+arrVal[0]);
	}else{
		return val;
	}
}

/**
 * Sjekker alle anchors p&aring; en side og setter target="_blank" dersom de har rel="external"
 *
 * @access private
 * @return void
 * @since 1.0.1
 */
function externalLinks(){	
	if (!document.getElementsByTagName) return;
	var anchors = document.getElementsByTagName("a");
	for(var i=0;i<anchors.length; i++){ 
		var anchor = anchors[i]; 
		if(anchor.getAttribute("href") && anchor.getAttribute("rel") == "external"){
			anchor.target = "_blank";
		}
	} 
}
