function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function swapLanguage(){
    var tempUrl=location.toString();
    var lang=info.lang=="en"?"tc":"en";
    var re=new RegExp("/"+info.lang+"/");
    var url=tempUrl.replace(re,"/"+lang+"/");
    window.open(url,"_self");
}

function FormatNumber(number) {
    number = '' + number;
    var prefix = number.substring(0,number.indexOf('.'));
    var remain = number.substring(number.indexOf('.'));
    if (prefix.length > 3) {
        var mod = prefix.length % 3;
        var output = (mod > 0 ? (prefix.substring(0,mod)) : '');
        for (FormatNumberi=0 ; FormatNumberi < Math.floor(prefix.length / 3); FormatNumberi++) {
            if ((mod == 0) && (FormatNumberi == 0))
            output += prefix.substring(mod+ 3 * FormatNumberi, mod + 3 * FormatNumberi + 3);
            else
            output+= ',' + prefix.substring(mod + 3 * FormatNumberi, mod + 3 * FormatNumberi + 3);
        }
        return (output+remain);
    }
    else return number;
}

function switchPanel(hideObj,showObj){
	document.getElementById(hideObj).style.display = 'none';
    //$(hideObj).style.display = 'none';
    document.getElementById(showObj).style.display = '';
    //$(showObj).style.display = '';
}

var getParam = getQueryVariable();

var tourInterval = null;
var LastTour = null;

function UpdateSchoolTourInfo(id){
	
	new Ajax.Request('/booking/' + info.lang + '/tour/service/Tour Info.html?lang=' + info.lang + '&tour_id=' + id + '&type=ST&st=Primary', {onSuccess : function(response){ 
		$('Tour_info').update(response.responseText);
	$('selectBooking').show();
	$('bookingList').hide();
	$('Tour_info').select("input.btnA").each(function(o){
		o.stopObserving('mouseover');
		o.stopObserving('mouseout');
		o.observe("mouseover", function(ee){o.addClassName("btnAHover");});
		o.observe("mouseout", function(ee){o.removeClassName("btnAHover");});
	});
	$('Tour_info').select(".Infobuttons .button").each(function(o){
		o.stopObserving('mouseover');
		o.stopObserving('mouseout');
		o.observe("mouseover", function(ee){o.addClassName("buttonHover");});
		o.observe("mouseout", function(ee){o.removeClassName("buttonHover");});
	});
	
	}});
}
function UpdateSchoolCOInfo(id){
	new Ajax.Request('/booking/' + info.lang + '/tour/service/SCOInfo.html?lang=' + info.lang + '&id=' + id, {onSuccess : function(response){ 
		$('Tour_info').update(response.responseText);
	$('selectBooking').show();
	$('bookingList').hide();
	$('Tour_info').select("input.btnA").each(function(o){
		o.stopObserving('mouseover');
		o.stopObserving('mouseout');
		o.observe("mouseover", function(ee){o.addClassName("btnAHover");});
		o.observe("mouseout", function(ee){o.removeClassName("btnAHover");});
	});
	$('Tour_info').select(".Infobuttons .button").each(function(o){
		o.stopObserving('mouseover');
		o.stopObserving('mouseout');
		o.observe("mouseover", function(ee){o.addClassName("buttonHover");});
		o.observe("mouseout", function(ee){o.removeClassName("buttonHover");});
	});
	}});
}

function updateTourInfo(tourid, dtype){
	if(tourInterval == null){
		tourInterval = setInterval(function (e){
			if(window.location.hash != LastTour){
				LastTour = window.location.hash;
				updateTourInfo("", dtype);
			}
		}, 100);
		return ;
	}
	if(tourid == ""){
		var hash = window.location.hash.substring(1);
		if(hash.substring(0, 1) == 'S'){
		 	updateSCOInfo(parseInt(hash.substring(1)));
		 	return false;
		}
		tourid = parseInt(window.location.hash.substring(1));
		if(isNaN(tourid)){
			tourid = -1;
		}
	}
	
	$$(".Accordion").each(function(object){
		object.childElements().each(function(item){
			if(tourid == -1){
				if(item.select("li[default]").length == 0){
					Accordion_Close(item);
				}else{
					Accordion_Open(item);
				}
			}else{
				if(item.select("li[nodeid='"+ tourid +"']").length == 0){
					Accordion_Close(item);
				}else{
					Accordion_Open(item);
				}
			}
		}.bind(object));
	});
	
	
	var type = "";
	var subType = "";
	if(dtype == undefined){
		type = "PT";
		subType = "Public";
	}else{
		type = dtype;
		subType = "Primary";
	}
	if(type=="PT"){
		subType = "Public";
	}
	if(getParam.get('st') != null){
		subType = getParam.get('st');
	}
	
	if(document.getElementById("Tour_info") != null && getParam.get("stype") == null){
		if(tourid != -1){
			window.location.hash = tourid;
		}
		new Ajax.Request('/booking/' + info.lang + '/tour/service/Tour Info.html?lang=' + info.lang + '&tour_id=' + tourid + '&type=' + type + '&st=' + subType, {onSuccess : function(response){ 
		$('Tour_info').update(response.responseText);
	$('Tour_info').select("input.btnA").each(function(o){
		o.stopObserving('mouseover');
		o.stopObserving('mouseout');
		o.observe("mouseover", function(ee){o.addClassName("btnAHover");});
		o.observe("mouseout", function(ee){o.removeClassName("btnAHover");});
	});
	$('Tour_info').select(".Infobuttons .button").each(function(o){
		o.stopObserving('mouseover');
		o.stopObserving('mouseout');
		o.observe("mouseover", function(ee){o.addClassName("buttonHover");});
		o.observe("mouseout", function(ee){o.removeClassName("buttonHover");});
	});
	}});
	}else{
		location = '/booking/' + info.lang + '/info.html' + '?type=' + type + '&st='+subType+'#' + tourid;
	}
}

var seminarInfo = null;
var LastSeminar = null;
function updateSeminarInfo(seminarid){
	if(seminarInfo == null){
		seminarInfo = setInterval(function (e){
			if(window.location.hash != LastSeminar){
				LastSeminar = window.location.hash;
				updateSeminarInfo("");
			}
		}, 500);
	}
	if(seminarid == ""){
		if(getParam.get("seminar_id") != null){
			seminarid = parseInt(getParam.get("seminar_id"));
		}else{
			seminarid = parseInt(window.location.hash.substring(1));
		}
		if(isNaN(seminarid)){
			seminarid = -1;
		}
		
	}
	
	$$(".Accordion").each(function(object){
		object.childElements().each(function(item){
			if(seminarid == -1){
				if(item.select("li[default]").length == 0){
					Accordion_Close(item);
				}else{
					Accordion_Open(item);
				}
			}else{
				if(item.select("li[nodeid='"+ seminarid +"']").length == 0){
					Accordion_Close(item);
				}else{
					Accordion_Open(item);
				}
			}
		}.bind(object));
	});
	
	if(document.getElementById("Seminar_info") != null){
		if(seminarid != -1){
			window.location.hash = seminarid;
		}
		if(getParam.get("key") == null){
			new Ajax.Request('/booking/' + info.lang + '/seminar/service/seminarInfo.html?lang=' + info.lang + '&seminar_id=' + seminarid, {onSuccess : function(response){ 
		$('Seminar_info').update(response.responseText);
				
	$('Seminar_info').select("input.btnA").each(function(o){
		o.stopObserving('mouseover');
		o.stopObserving('mouseout');
		o.observe("mouseover", function(ee){o.addClassName("btnAHover");});
		o.observe("mouseout", function(ee){o.removeClassName("btnAHover");});
	});
	$('Seminar_info').select(".Infobuttons .button").each(function(o){
		o.stopObserving('mouseover');
		o.stopObserving('mouseout');
		o.observe("mouseover", function(ee){o.addClassName("buttonHover");});
		o.observe("mouseout", function(ee){o.removeClassName("buttonHover");});
	});
	}});
		}else{
			new Ajax.Request('/booking/' + info.lang + '/seminar/service/seminarInfo.html?lang=' + info.lang + '&seminar_id=' + seminarid + "&key=" + getParam.get("key"), {onSuccess : function(response){ 
		$('Seminar_info').update(response.responseText);
	$('Seminar_info').select("input.btnA").each(function(o){
		o.stopObserving('mouseover');
		o.stopObserving('mouseout');
		o.observe("mouseover", function(ee){o.addClassName("btnAHover");});
		o.observe("mouseout", function(ee){o.removeClassName("btnAHover");});
	});
	$('Seminar_info').select(".Infobuttons .button").each(function(o){
		o.stopObserving('mouseover');
		o.stopObserving('mouseout');
		o.observe("mouseover", function(ee){o.addClassName("buttonHover");});
		o.observe("mouseout", function(ee){o.removeClassName("buttonHover");});
	});
	}});
		}
	}else{
		location = '/booking/' + info.lang + '/Seminar/info.html' + '#' + seminarid;
	}
}

var SCOInterval = null;
var LastSCO = null;
function updateSCOInfo(tourid, dtype){

	if(tourid == ""){
		tourid = parseInt(window.location.hash.substring(1));
		if(isNaN(tourid)){
			tourid = -1;
		}
	}
	var type = "";
	if(dtype == undefined){
		type = "SCO";
	}else{
		type = dtype;
	}
	
	if(document.getElementById("Tour_info") != null){
		if(tourid != -1){
			window.location.hash = "S" + tourid;
		}
		new Ajax.Request('/booking/' + info.lang + '/tour/service/SCOInfo.html?lang=' + info.lang + '&id=' + tourid, {onSuccess : function(response){ 
		$('Tour_info').update(response.responseText);
	$('Tour_info').select("input.btnA").each(function(o){
		o.stopObserving('mouseover');
		o.stopObserving('mouseout');
		o.observe("mouseover", function(ee){o.addClassName("btnAHover");});
		o.observe("mouseout", function(ee){o.removeClassName("btnAHover");});
	});
	$('Tour_info').select(".Infobuttons .button").each(function(o){
		o.stopObserving('mouseover');
		o.stopObserving('mouseout');
		o.observe("mouseover", function(ee){o.addClassName("buttonHover");});
		o.observe("mouseout", function(ee){o.removeClassName("buttonHover");});
	});
	}});
	}else{
		location = '/booking/' + info.lang + '/info.html' + '?type=SCO#' + tourid;
	}
}

function registerNow(tourid){
	if(tourid == ""){
		return ;
	}
	
	location = '/booking/' + info.lang + '/tour/registration.html?tour_id=' + tourid ;
}

function registerSeminarNow(seminarid, type){
	if(seminarid == ""){
		return -1;
	}
	var key = getParam.get("key");
	if(key != null){
		location = '/booking/' + info.lang + '/seminar/registration.html?seminar_id=' + seminarid + "&type=" + type + "&key=" + key;
	}else{
		location = '/booking/' + info.lang + '/seminar/registration.html?seminar_id=' + seminarid + "&type=" + type;
	}
}

function reserveNow(tourid){
	if(tourid == ""){
		return ;
	}
	var type = ""
	if(getParam.get('type') != null){
		type = "&type=" + getParam.get('type');
	}else{
		type = "ST";
	}
	var subType = ""
	if(getParam.get('st') != null){
		subType = "&st=" + getParam.get('st');
	}
	
	location = '/booking/' + info.lang + '/SCO/registration.html?id=' + tourid + type + subType;
}

function checkPassword(){
	form = document.forms.changePwd;
	npwd = form.Newpassword.value;
	cpwd = form.Cpassword.value;
	opwd = form.oldPassword.value;
	
	if(npwd != cpwd){
		// alert not same
		alert("the passwords are not the same");
		return false;
	}
	var objExp=new RegExp(/^[a-zA-Z0-9]{8,}$/g);
	if (!(objExp.test(npwd))){
		alert("not enough or contain invalid characters");
		return false;
	}
	return true;
}

function redirectToLogin(){
	location = '/booking/' + info.lang + '/Login.html';
}

function redirectToPayment(){
	location = '/booking/' + info.lang + '/tour/booking_payment.html';
}

function redirectToHome(){
	location = '/booking/' ;
}

function getY( oElement )
{
var iReturnValue = 0;
while( oElement != null ) {
iReturnValue += oElement.offsetTop;
oElement = oElement.offsetParent;
}
return iReturnValue;
}

function getX( oElement )
{
var iReturnValue = 0;
while( oElement != null ) {
	iReturnValue += oElement.offsetLeft;
	oElement = oElement.offsetParent;
}
return iReturnValue;
}

function getQueryVariable() { 
  var query = window.location.search.substring(1); 
  var vars = query.split("&"); 
  var queryVars = new Hash();
  for (var i=0;i<vars.length;i++) { 
    var pair = vars[i].split("="); 
    queryVars.set(pair[0], pair[1]);
    //queryVars[pair[0]] = unescape(pair[1]);
  } 
  return queryVars;
} 
function getParamName(name){
	var output = getParam.get(name);
	if(output == null){
		return "";
	}else{
		return output;
	}
}

Event.observe(window, 'load', function(e){
	var hash = window.location.hash.substring(1);
	tourid = parseInt(window.location.hash.substring(1));
	if(isNaN(tourid)){
		tourid = -1;
	}
	$$(".Accordion").each(function(object){
		object.childElements().each(function(item){
/*			if(tourid == -1){
				if(item.select("li[default]").length == 0){
					Accordion_Close(item);
				}else{
					Accordion_Open(item);
				}
			}else{
				if(item.select("li[nodeid='"+ tourid +"']").length == 0){
					Accordion_Close(item);
				}else{
					Accordion_Open(item);
				}
			}
*/			
			item.down().addClassName("clickable");
			item.down().observe('click', function(ee){
				object.select(".Opened").each(function(o){
					if(o != item){
						Accordion_Close(o);
					}
				});
				if(!item.hasClassName("Opened")){
					Accordion_Open(item);
				}
			}.bind(item, object));
		}.bind(object));
	});
	if($('SelectGroup')){
		SelectTheme_Change($('SelectGroup'));
	}
});


function Accordion_Open(item){
	var obj = item.down().next();
	if(obj != null){
		if(!item.hasClassName("Opened")){
			item.addClassName("Opened");
			Effect.BlindDown(obj, {duration: 0.5});
		}
	}
}
function Accordion_Close(item){
	//if(item.hasClassName("Opened")){
	var obj = item.down().next();
	if(obj != null){
		item.removeClassName("Opened");
		Effect.BlindUp(item.down().next(), {duration: 0.5});
	}
	//}
}

function ShowPopUpBox(id, obj){
	var content = $(id).innerHTML;
	if(info.lang == "tc"){
		DisplayLightBoxByContent('<div class="lightboxheader"><div class="title">'+obj.innerHTML+'</div><div class="close" onclick="HideLightBox()">&nbsp;</div></div><div class="lightboxcontent">' + content + "</div>", "", null, null, "black");
	}else{
		DisplayLightBoxByContent('<div class="lightboxheader"><div class="title">'+obj.innerHTML+'</div><div class="close" onclick="HideLightBox()">&nbsp;</div></div><div class="lightboxcontent">' + content + "</div>", "", null, null, "black");
	}
}

function SelectTheme_Change(box){
	var value = box.value;
	var tours = $('SelectTour').select(":not(option.select)").invoke('remove');
	//tours.invoke('remove');
	
	if(value != ""){
		$('realTour').select("option").each(function (o){
			if(o.hasClassName("select") || o.hasClassName("g" + value)){
				var option = new Element("option", {value: o.value}).update(o.innerHTML);
				$('SelectTour').insert(option);
				//o.show();
			}
		});
	}
}
function SelectTour_Change(box){
	var value = box.value;
	if(value != ""){
		var isSCO = value.charAt(0) == "S";
		if(isSCO){
			UpdateSchoolCOInfo(value.substring(1));
		}else{
			UpdateSchoolTourInfo(value);
		}
	}
	/*
	var object = $$(".bookingList")[0];
	if(value == ""){
		object.select(".hide").invoke("removeClassName", "hide");
	}else{
		if(value.indexOf("|") == -1){
			var groupid = value;
			object.select("[groupid]").invoke("addClassName", "hide");
			var group = object.select("[groupid='"+ groupid +"']")[0];
			group.removeClassName("hide");
			group.select(".hide").invoke("removeClassName", "hide");
		}else{
			var groupid = value.split("|")[0];
			var tourid = value.split("|")[1];
			
			object.select("[groupid]").invoke("addClassName", "hide");
			var group = object.select("[groupid='"+ groupid +"']")[0];
			group.removeClassName("hide");
			group.select("[tourid]").invoke("addClassName", "hide");
			group.select("[tourid='"+tourid+"']")[0].removeClassName("hide");
		}
		
	}*/
}

var ScrollHeadline_Var=[];
Event.observe(window, 'load', function(e){
	$$(".ScrollAnnouncement").each(function (object){
		if(object.down().childElements().length < 4){
			object.style.height = object.down().childElements().length * 19;
		}else{
			object.style.height = 4 * 19;
			ScrollHeadline_Register(object.down(),4,19);
		}
	});
	
	$$("input.btnA").each(function(o){
		o.observe("mouseover", function(ee){o.addClassName("btnAHover");});
		o.observe("mouseout", function(ee){o.removeClassName("btnAHover");});
	});
	$$(".Infobuttons .button").each(function(o){
		o.observe("mouseover", function(ee){o.addClassName("buttonHover");});
		o.observe("mouseout", function(ee){o.removeClassName("buttonHover");});
	});
	
});

function ScrollHeadline_Register(d,b,a){
	var c=$(d).identify();
	ScrollHeadline_Var[c]=1;
	Event.observe($(d),"mouseover",function(f){ScrollHeadline_Var[c]=0});
	Event.observe($(d),"mouseout",function(f){ScrollHeadline_Var[c]=1});
	setInterval(function(){
		if(ScrollHeadline_Var[c]==1){
			var g=$(d).childElements();
			if(g.length > b){
				if(b*2>g.length){b=g.length-b}
				for(var f=0;f<g.length;f+=b){
					for(var e=0;e<b&&f+e<g.length;e++){
						if(f==0){
							g[f+e].addClassName("goToBottom")
						}
					}
				}
				new Effect.Move($(d),{x:0,y:-1*a*b,afterFinish:function(h){
					for(var j=0;j<g.length;j++){	
						if(g[j].hasClassName("goToBottom")){		
							$(d).appendChild(g[j].remove());		
							g[j].removeClassName("goToBottom")	
						}
					}
					h.element.style.top="0px"
				}})
			}
		}
	}.bind(c, b, a),3000)
};


