var makeSelect, makeDate, makeForm, makeTypeEvent, submit_reservation;
window.addEvent('domready', function(){	
	function makeDate(){		
		myCal1 = new Calendar({ departDate: 'd-m-Y' }, { classes: ['dashboard'], direction: 1, tweak: {x: 3, y: -3}});
	}
	
	var ErrBox = new ErrorBox({ closeBx:true });
	var LB = new ErrorBox({ width: 400, closeBx:true });
	var form = 'reservation';
	var depart_pickup = {
		'name': 'd_pick_opt',
		'msg': 'Departing trip: Pick up location',
		'show': 'd_pick_hotel', 
		'hide': 'requestPickHotel',
		'default_text': "Input your hotel's name"
	};
	var depart_drop = {
		'name': 'd_drop_opt',
		'msg': 'Departing trip: Drop off location',
		'show': 'd_drop_hotel',
		'hide': 'requestDropHotel',
		'default_text': "Input your hotel's name"
	};
	var depart_feild = {
		'departRoute': 'Departing Route',
		'departDate': 'Departure Date', 
		'departTime': 'Departing Time'
	};
	
	function makeSelect(){
		new ProToPage( form, { selectText: 'please select' } );	
	}
		
	function makeForm(){
		makeSelect();
	}
	
	function makeTypeEvent(){
		$$('#' + form + ' input').each(function(el){
			if(el.name == depart_pickup.name){
				switch(el.value){
					case '0':
						el.addEvent('click', function(){
							toggle(true, depart_pickup.show);
						});
						el.addEvent('click', function(){
							toggle(false, depart_pickup.hide);
						});
						break;
					case '1': 
						el.addEvent('click', function(){
							toggle(false, depart_pickup.show);
						});
						el.addEvent('click', function(){
							toggle(true, depart_pickup.hide);
						});
						break;
					case '2': 
						el.addEvent('click', function(){
							toggle(false, depart_pickup.show);
						});
						el.addEvent('click', function(){
							toggle(false, depart_pickup.hide);
						});
						break;
				}
				
				if(el.checked)
					el.fireEvent('click');
			}
			
			if(el.name == depart_drop.name){
				switch(el.value){
					case '0':
						el.addEvent('click', function(){toggle(true, depart_drop.show);});
						el.addEvent('click', function(){toggle(false, depart_drop.hide);});
						break;
					case '1':
						el.addEvent('click', function(){toggle(false, depart_drop.show);});
						el.addEvent('click', function(){toggle(true, depart_drop.hide);});
						break;
					case '2':
						el.addEvent('click', function(){toggle(false, depart_drop.show);});
						el.addEvent('click', function(){toggle(false, depart_drop.hide);});
						break;
				}
					
				if(el.checked)
					el.fireEvent('click');
			}			
		});
	}
	
	function toggle(opt, show){
		//new Fx.Slide( $(show), { mode: 'vertical', duration: 500 } ).toggle();
		if(opt){
			new Fx.Slide( $(show), { mode: 'vertical', duration: 500 } ).slideIn();
		}else{
			new Fx.Slide( $(show), { mode: 'vertical', duration: 500 } ).slideOut();
		}
	}
	
	function submit_reservation(){
		if( checkeValue() ) {
			var _submit_ = _submit;
			var req = new Request({
				url: "_ajax/valid-pickup.php",
				onSuccess: function(txt) {
					var arr = txt.split("::");
					
					if( ($('d_pick_opt').checked && $('d_pick_opt').value == 0) && ($('d_drop_opt').checked && $('d_drop_opt').value == 0) ){
						if(arr[0] > 0 && arr[1] > 0)
							_submit_();	
						else if(arr[0] <= 0 && arr[1] > 0){	
							ErrBox.start('<span class="error">Your hotel is not in our service area. Please selecte office and add your request in the box.</span>');
						}else if(arr[0] > 0 && arr[1] <= 0){	
							ErrBox.start('<span class="error">Your hotel is not in our service area. Please selecte office and add your request in the box.</span>');
						}else{
							ErrBox.start('<span class="error">Your hotel is not in our service area. Please selecte office and add your request in the box.</span>');
						}
					}else if( ($('d_pick_opt').checked && $('d_pick_opt').value == 0) && ($('d_drop_opt').checked && $('d_drop_opt').value != 0) ){
						if(arr[0] <= 0)
							ErrBox.start('<span class="error">Your hotel is not in our service area. Please selecte office and add your request in the box.</span>');
						else
							_submit_();	
					}else if( ($('d_pick_opt').checked && $('d_pick_opt').value != 0) && ($('d_drop_opt').checked && $('d_drop_opt').value == 0) ){
						if(arr[1] <= 0)	
							ErrBox.start('<span class="error">Your hotel is not in our service area. Please selecte office and add your request in the box.</span>');
						else
							_submit_();	
					}else{
						_submit_();	
					}
				}
			});
			req.send(getValue($('reservation')));
		}
	}
	
	function _submit(){
		__doPostBack('saveBtn$Click', '', form);
	}
	
	function checkeValue(){
		var error = "";
		error += RequireItem('departRoute', "Route");
		error += RequireItem('departDate', "Date");
		error += RequireItem('departTime', "Time");
		
		if( $('d_pick_opt').checked && $('d_pick_opt').value == 0 ){
			if( $('depart_pickup').value ==  '' || $('depart_pickup').value == depart_pickup.default_text ){
				error += '<span class="error">Pickup Hotel</span>';
			}
		}
		
		if( $('d_drop_opt').checked && $('d_drop_opt').value == 0 ){
			if( $('depart_drop').value ==  '' || $('depart_drop').value == depart_drop.default_text ){
				error += '<span class="error">Drop Off Hotel</span>';
			}
		}
		
		if(error!=""){
			ErrBox.start( error.replace(/\n/g, '<br />') );
			return false;
		}
		return true;	
	}
	
	function start_up(){
		$$('#'+depart_pickup.show + ' input').each(function(el){
			if(el.value == "") el.value = depart_pickup.default_text;
			el.addEvents({
				'focus': function(){
					if(el.value == depart_pickup.default_text) el.value = '';
				},
				'blur': function(){
					if(el.value == '') el.value = depart_pickup.default_text;
				}
			});
		});
		
		$$('#'+depart_drop.show + ' input').each(function(el){
			if(el.value == "") el.value = depart_drop.default_text;
			el.addEvents({
				'focus': function(){
					if(el.value == depart_drop.default_text) el.value = '';
				},
				'blur': function(){
					if(el.value == '') el.value = depart_drop.default_text;
				}
			});
		});		
		
		$$('#'+depart_pickup.hide + ' input').each(function(el){
			if(el.value == "") el.value = "Input your pick-up request here";
			el.addEvents({
				'focus': function(){
					if(el.value == "Input your pick-up request here") el.value = '';
				},
				'blur': function(){
					if(el.value == '') el.value = "Input your pick-up request here";
				}
			});
		});
		
		$$('#'+depart_drop.hide + ' input').each(function(el){
			if(el.value == "") el.value = "Input your drop-off request here";
			el.addEvents({
				'focus': function(){
					if(el.value == "Input your drop-off request here") el.value = '';
				},
				'blur': function(){
					if(el.value == '') el.value = "Input your drop-off request here";
				}
			});
		});	
		
		makeDate();
		makeForm();
		makeTypeEvent();
	}


	start_up();
	
	if($('submit_reservation')) $('submit_reservation').addEvent('click', submit_reservation);
	
	$$('#'+depart_pickup.show + ' input').each(function(el){
		var departPickUp = new Suggestion2( $(el), {
			'url':'getLocationPickUp.php',
			'MapUrl':'getAreaMap.php',
			'PickUrl':'getPickUp.php',
			'showPick': 'showPickUp',
			'parent': 'departRoute',
			'form': 'reservation'
		}); 
	});
	
	$$('#'+depart_drop.show + ' input').each(function(el){
		var departDropOff = new Suggestion2( $(el), {
			'url':'getLocationDropOff.php',
			'MapUrl':'getAreaMap.php',
			'PickUrl':'getPickUp.php',
			'parent': 'departRoute',
			'form': 'reservation'
		}); 
	});
	
	[$('busFair'), $('meetPoint'), $('Important'), $('useFul'), $('PrintRoute'), $('HowRoute')].each(function(el){
		el.addEvent('click', function(){
			if( $('departRoute').value != '' ) {
				new Request({
					url: "_ajax/routeInfo.php?ID=" + $('departRoute').value + '&EL=' + el.id,
					onSuccess: function(text){
						LB.start(text);
					},
					onFailure: function() {
						ErrBox.start('Sorry!! Connecting error please try again.');
					}
				}).send();
			} else {
				ErrBox.start("Please select route.");
			}
			return false;
		});
	});
});

//http://www.asus,co.th / http://www.dcomputer.com 