function formbook_roundtrip() { 
	set_by_id ( "fsttime" , "出发日期:" ) ;
	set_by_id ( "sectime" , "返回日期:" ) ;
	set_by_id ( "dstlabel" , "到达城市:" ) ;
	show_by_id ( "sectime" ) ;
	show_by_id ( "returndate" ) ;
	show_by_id ( "date2_pull" ) ;
	show_by_id ( "timergo2" ) ;
	show_by_id ( "time2_pull" ) ;
	hide_by_id ( "vialabel" ) ; 
	hide_by_id ( "viaDesp" ) ; 
	hide_by_id ( "via_pull" ) ; 
	hide_by_id ( "viaHelpInfo" ) ; 
	document.formbook.actionkind.value = "airreturn" ;
}

function show_by_id ( id ) { 
	document.getElementById ( id ) .style.visibility = "visible" ; 
}

function hide_by_id ( id ) { 
	document.getElementById ( id ) .style.visibility = "hidden" ; 
}

function set_by_id ( id , value ) { 
	document.getElementById ( id )
	.firstChild.nodeValue = value ;
}

function formbook_oneway() { 
	set_by_id ( "fsttime" , "出发日期:" ) ;
	set_by_id ( "dstlabel" , "到达城市:" ) ;
	hide_by_id ( "sectime" ) ;
	hide_by_id ( "returndate" ) ;
	hide_by_id ( "date2_pull" ) ;
	hide_by_id ( "timergo2" ) ;
	hide_by_id ( "time2_pull" ) ;
	hide_by_id ( "vialabel" ) ; 
	hide_by_id ( "viaDesp" ) ; 
	hide_by_id ( "via_pull" ) ; 
	hide_by_id ( "viaHelpInfo" ) ; 
	document.formbook.actionkind.value = "oneway" ;
}

function formbook_connect() { 
	set_by_id ( "fsttime" , "第一出发日期:" ) ;
	set_by_id ( "sectime" , "第二出发日期:" ) ;
	set_by_id ( "vialabel" , "第一到达城市:" ) ;
	set_by_id ( "dstlabel" , "第二到达城市:" ) ;
	show_by_id ( "sectime" ) ;
	show_by_id ( "returndate" ) ;
	show_by_id ( "date2_pull" ) ;
	show_by_id ( "timergo2" ) ;
	show_by_id ( "time2_pull" ) ;
	show_by_id ( "vialabel" ) ; 
	show_by_id ( "viaDesp" ) ; 
	show_by_id ( "via_pull" ) ; 
	show_by_id ( "viaHelpInfo" ) ; 
	document.formbook.actionkind.value = "muti" ;
}

function bookform_init(){
	document.getElementById ( "oneway_button" ) . click() ; 
}

bookform_init() ; 
window.onload=bookform_init;

function gobook() { 
	var qfm = document.AirbookQueryFlightForm ; 
	qfm.action = query_and_book ;
	validate_and_go ( qfm ) ; 
}

function goschedule() { 
	var qfm = document.AirbookQueryFlightForm ; 
	qfm.action = query_schedule ;
	validate_and_go ( qfm ) ; 
}

function gofee() { 
	var qfm = document.AirbookQueryFlightForm ; 
	qfm.action = query_fee ;
	var vfm = document.formbook ;
	var dto = validate_oneway ( vfm ) ; 	
	if ( !dto ) return ; 
	qfm.origin.value = vfm.org.value ; 
	qfm.dest.value = vfm.dst.value ; 
	qfm.submit() ; 
}

function validate_and_go ( qfm ) { 
	var vfm = document.formbook ;
	var toj = document.formbook.actionkind.value ;
	if ( toj == "oneway" ) go_oneway ( vfm , qfm ) ; 
  	else if ( toj == "airreturn" ) go_roundtrip ( vfm , qfm ) ; 
  	else if ( toj == "muti" ) go_roundtrip ( vfm , qfm ) ; 
  	else alert ( "unknown type of journey" ) ; 
}

function go_oneway ( vfm , qfm ) { 
	var dto = validate_oneway ( vfm ) ; 	
	if ( !dto ) return ; 
	set_query_form ( vfm , qfm , dto , dto ) ; 
	qfm.submit();		
}
	
function go_roundtrip ( vfm , qfm ) { 
	var d2 = validate_roundtrip ( vfm ) ; 
	if (!d2) return ; 
	set_query_form ( vfm , qfm , d2.date1 , d2.date2 ) ; 
	qfm.submit();		
}
	
function go_roundtrip ( vfm , qfm ) { 
	var d2 = validate_roundtrip ( vfm ) ; 
	if (!d2) return ; 
	set_query_form ( vfm , qfm , d2.date1 , d2.date2 ) ; 
	qfm.submit();		
}

function validate_oneway ( vfm ) { 
	var cur_in = vfm.orgDesp ; 
	var ctname = cur_in.value ; 
	var ct = validate_city ( ctname ) ;
	if ( ct ) { 
		vfm.org.value = ct.code ; 
		cur_in.value = ct.name ; 
	} else { 
		refill_info ( "出发城市有误" , cur_in ) ; 
		return null ; 
	} 

	cur_in = vfm.dstDesp ; 
	ctname = cur_in.value ; 
	ct = validate_city ( ctname ) ;
	if ( ct ) { 
		vfm.dst.value = ct.code ; 
		cur_in.value = ct.name ; 
	} else { 
		refill_info ( "到达城市有误" , cur_in ) ; 
		return null ; 
	} 
	
	if ( vfm.org.value == vfm.dst.value ) { 
		alert ( "到达城市与出发城市相同，请重新填写" ) ; 
		return null ; 
	}
	
	cur_in = vfm.startdate ; 
	var ds = cur_in.value ; 
	var dto = validate_date ( ds ) ; 
	if ( dto ) { 
	} else { 
		refill_info ( "出发日期有误" , cur_in ) ; 
		return null ; 
	} 
	return dto ; 

}

function validate_roundtrip ( vfm ) { 
	var cur_in = vfm.orgDesp ; 
	var ctname = cur_in.value ; 
	var ct = validate_city ( ctname ) ;
	if ( ct ) { 
		vfm.org.value = ct.code ; 
		cur_in.value = ct.name ; 
	} else { 
		refill_info ( "出发城市有误" , cur_in ) ; 
		return null ; 
	} 

	cur_in = vfm.dstDesp ; 
	ctname = cur_in.value ; 
	ct = validate_city ( ctname ) ;
	if ( ct ) { 
		vfm.dst.value = ct.code ; 
		cur_in.value = ct.name ; 
	} else { 
		refill_info ( "到达城市有误" , cur_in ) ; 
		return null ; 
	} 
	
	if ( vfm.org.value == vfm.dst.value ) { 
		alert ( "到达城市与出发城市相同，请重新填写" ) ; 
		return null ; 
	}
	
	cur_in = vfm.startdate ; 
	var ds = cur_in.value ; 
	var dto = validate_date ( ds ) ; 
	if ( dto ) { 
	} else { 
		refill_info ( "出发日期有误" , cur_in ) ; 
		return null ; 
	} 

	cur_in = vfm.returndate ; 
	ds = cur_in.value ; 
	var dtr = validate_date ( ds ) ; 
	if ( dtr ) { 
		if ( dtr.binary < dto.binary ) { 
			alert ( "出发日期不应晚于返回日期，请重新填写" ) ; 
			return null ; 
		}
	} else { 
		refill_info ( "返回日期有误" , cur_in ) ; 
		return null ; 
	} 
	
	var d2 = new Object() ; 
	d2.date1 = dto ; 
	d2.date2 = dtr ; 
	return d2 ; 
}

function validate_connect ( vfm ) { 	
	var cur_in = vfm.orgDesp ; 
	var ctname = cur_in.value ; 
	var ct = validate_city ( ctname ) ;
	if ( ct ) { 
		vfm.org.value = ct.code ; 
		cur_in.value = ct.name ; 
	} else { 
		refill_info ( "出发城市有误" , cur_in ) ; 
		return null ; 
	} 

	cur_in = vfm.viaDesp ; 
	ctname = cur_in.value ; 
	ct = validate_city ( ctname ) ;
	if ( ct ) { 
		vfm.via.value = ct.code ; 
		cur_in.value = ct.name ; 
	} else { 
		refill_info ( "第一到达城市有误" , cur_in ) ; 
		return null ; 
	} 
	
	if ( vfm.org.value == vfm.via.value ) { 
		alert ( "第一到达城市与出发城市相同，请重新填写" ) ; 
		return null ; 
	}

	cur_in = vfm.dstDesp ; 
	ctname = cur_in.value ; 
	ct = validate_city ( ctname ) ;
	if ( ct ) { 
		vfm.dst.value = ct.code ; 
		cur_in.value = ct.name ; 
	} else { 
		refill_info ( "到达城市有误" , cur_in ) ; 
		return null ; 
	} 
	
	if ( vfm.via.value == vfm.dst.value ) { 
		alert ( "第二到达城市与第一到达城市相同，请重新填写" ) ; 
		return null ; 
	}
	
	cur_in = vfm.startdate ; 
	var ds = cur_in.value ; 
	var dto = validate_date ( ds ) ; 
	if ( dto ) { 
	} else { 
		refill_info ( "第一出发日期有误" , cur_in ) ; 
		return null ; 
	} 

	cur_in = vfm.returndate ; 
	ds = cur_in.value ; 
	var dtr = validate_date ( ds ) ; 
	if ( dtr ) { 
		if ( dtr.binary < dto.binary ) { 
			alert ( "第一出发日期不应晚于第二出发日期，请重新填写" ) ; 
			return null ; 
		}
	} else { 
		refill_info ( "第二出发日期有误" , cur_in ) ; 
		return null ; 
	} 

	var d2 = new Object() ; 
	d2.date1 = dto ; 
	d2.date2 = dtr ; 
	return d2 ; 
}

function refill_info ( hint , field ) { 
	alert ( hint + ", 请重新输入" ) ; 
	field.focus() ; 
	field.select() ; 
}

function validate_date ( dts ) { 
	dts = string_trim ( dts ) ; 
	if ( ( dts.length != 10 ) || 
		( dts.charAt(4) != "-" ) ||
		( dts.charAt(7) != "-" ) 
	) return null ; 
	var y = parseInt( dts.substring(0,4) ); 
	var m = parseInt ( dts.substring(5,7) ) ;
	if (m==0) m = parseInt ( dts.substring(6,7) ) ;
	if ( (m<1) || (m>12) ) return null ; 
	var mst ; 
	switch(m) {
		case 1: mst="jan";break;
		case 2: mst="feb";break;
		case 3: mst="mar";break;
		case 4: mst="apr";break;
		case 5: mst="may";break;
		case 6: mst="jun";break;
		case 7: mst="jul";break;
		case 8: mst="aug";break;
		case 9: mst="sep";break;
		case 10: mst="oct";break;
		case 11: mst="nov";break;
		case 12: mst="dec";break;
		default: mst="non";break;
	}
	var d = parseInt ( dts.substring(8,10) ) ; 
	if (d==0) d = parseInt ( dts.substring(9,10) ) ;
	var rd = new Date ( y , m-1 , d ) ;  
	if ( rd.getDate() != d ) return null ; 
	if ( rd ) { 
		var rdate = new Object() ;
		rdate.year = dts.substring(2,4) ; 
		rdate.month = dts.substring(5,7) ; 
		rdate.month_str = mst ; 
		rdate.date = dts.substring(8,10) ;
		rdate.binary = rd  ; 
		return rdate ; 		
	} else return null ; 
}

function validate_city ( ctname ) { 
	ctname = string_trim(ctname).toUpperCase() ;  
	var ctfound=false ; 
	var cidx = 0 ; 
	while ( (!ctfound) && (cidx<(air_cities.length/2)) ) { 
		if ( air_cities[2*cidx+1].indexOf ( ctname ) >=0 ) 
		ctfound= true ; 
		else cidx++ ; 
	}
	if ( ctfound ) { 
		var city = new Object() ; 
		city.code = air_cities [ 2 * cidx ] ; 
		city.name = air_cities [ 2 * cidx + 1] ; 
		return city ; 
	} else return null ; 
	
}

function string_trim ( as ) { 
	while ( as.length > 0 && as.charCodeAt(0)==32 ) { 
		as = as.substring(1) ; 
	}
	var tc = 0 ; 
	var asl = as.length ; 
	if ( asl > 0 ) tc = as.charCodeAt ( asl - 1 ) ; 
	while ( tc==32 ) { 
		asl--;
		as = as.substring(0,asl) ; 
		if ( asl > 0 ) tc = as.charCodeAt ( asl - 1 ) ; 
	}
	return as ;
}

function set_query_form ( vfm , qfm , dto , dtr ) { 
	qfm.airkind.value = vfm.actionkind.value;
	qfm.org.value = vfm.org.value;
	qfm.via.value = vfm.via.value;
	qfm.dst.value = vfm.dst.value;

	qfm.timego.value = vfm.timego.value;
	qfm.backtimego.value = vfm.backtimego.value;
	qfm.airline.value = vfm.airline.value;
	qfm.direct.value = "";
	if ( vfm.direct[0].checked ) qfm.direct.value="d" ; 

    qfm.goyear.value = dto.year ;
	qfm.gomonth.value = dto.month_str;
	qfm.godate.value = dto.date ; 

    qfm.backyear.value = dtr.year ; 
	qfm.backmonth.value = dtr.month_str;
	qfm.backdate.value = dtr.date ; 

}



