var tPatrn = /^[a-zA-Z0-9 \s]+$/;
var txtPatrn = /^[a-zA-Z-'\s]+$/;
var twoNumbersPatrn = /^[0-9]{2}$/i;
var NumbersPatrn = /^[0-9]+$/i;
var emailPatrn = /^[a-z0-9_.-]*[a-z0-9]+@[a-z0-9_.-]*[a-z0-9]+\.([a-z]{2,6})$/i;
var phoneNumberPatrn = /^[+]?[0-9()\- ]{9,}$/;
var namePatrn = /^[a-zA-Z0-9 \-\']+$/;
var blankNamePatrn = /[a-zA-Z0-9]{0,60}/;
var timePatrn = /^\d{2}:\d{2}$/;							//time in the format hh:mm
var whiteSpace = /^[\s]+$/;							

document.getElementsByClass = function(searchClass,tag,node) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}
$C = document.getElementsByClass;

function findPos(obj) {
	var curleft = curtop = 0;
	if(obj.offsetParent){
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		};
	};
	return [curleft,curtop];
};

function popUp(popurl,width,height,tools){
		winpops = window.open(popurl,"","width=" + width + ",height=" + height + "," + tools + ",left=0,top=0,screenX=0,screenY=100, resizable=1")
	}
function addEvent( obj, type, fn ) {
	if(obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
	} else {
		if(obj.addEventListener){
			obj.addEventListener( type, fn, false );
		}
	}
}

function removeEvent( obj, type, fn ) {
	if ( obj.detachEvent ) {
		obj.detachEvent( "on"+type, obj[type+fn] );
		obj[type+fn] = null;
	} else {
		obj.removeEventListener( type, fn, false );
	}
}
																  
function regCheckExecute( ele,patrn ){ 
	var re = new RegExp(ele.value);
  var m = re.exec(patrn);
	if(m == null){
		return false;
	}else{
		return true;
	}
}

function regCheckTest( ele,patrn ){ 
	if(ele.value.match(patrn) == null){
		return false;
	}else{
		return true;
	}
}

function trim (str) {
  str = this != window? this : str;
  return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}

function insertAfter(newElement,targetElement) {
  var parent = targetElement.parentNode;
  if (parent.lastChild == targetElement) {
    parent.appendChild(newElement);
  } else {
    parent.insertBefore(newElement,targetElement.nextSibling);
  }
}

function toggle(obj) {
	var el = $E(obj.id);
	if(obj.tagName == 'TR'){
		if(navigator.appName.indexOf("Microsoft") > -1){
			el.style.display = (el.style.display != 'none' ? 'none' : 'block' );
		}else{
			el.style.display = (el.style.display != 'none' ? 'none' : 'table-row' );
		}
	}else{
		el.style.display = (el.style.display != 'none' ? 'none' : 'block' );
	}
}

Math.FormatNumber = function(fltValue, intDecimal) {
	var total = Math.round(fltValue * Math.pow(10, intDecimal)) / Math.pow(10, intDecimal);
	if (total.toFixed) {
		total.toFixed(intDecimal);
	}	
	
	total = total.toString();
	
	if(total.indexOf('.') != -1){
		aTotal = total.split('.');
		tmpDecimal = aTotal[1];
		dec = (tmpDecimal.length == 1) ? tmpDecimal + '0' : tmpDecimal;
		return aTotal[0] + '.' + dec;
	}else{
		dec = '00'
		return total + '.' + dec;
	}
}

function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}
function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

function cancelEvent(event){
	if (event.preventDefault) {
		event.preventDefault();
		event.stopPropagation();
	} else {
		event.returnValue = false;
		event.cancelBubble = true;
	}
	
}
// Create the XMLHttpRequest object
var xmlhttp=false;
xmlhttp=null;
if (window.XMLHttpRequest){// code for all new browsers
  xmlhttp=new XMLHttpRequest();
}else if (window.ActiveXObject){// code for IE5 and IE6
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
	xmlhttp = new XMLHttpRequest();
}


var Track = {
	init : function(e){
		addEvent(window,'load',this.start);
		addEvent(window,'error',function(){return true;});
	},
	start : function(){
		if(!$E('side_bar') || !$E('main_content') || !$E('navigation') || !$E('heading')) return;
		var sl = $E('side_bar').getElementsByTagName('A');
		if ($E('search_form')){
			var sb = $E('search_form').onsubmit = function(){Track.save('sidebar','search',this.id,'search');return true};
		}
		var ml = $E('main_content').getElementsByTagName('A');
		var nl = $E('navigation').getElementsByTagName('A');
		var hl = $E('heading').getElementsByTagName('A');
		for(var i=0;i<sl.length;i++){sl[i].onclick = function(){Track.save('sidebar',this.href,this.id,this.innerHTML);};};
		for(var i=0;i<ml.length;i++){ml[i].onclick = function(){Track.save('main',this.href,this.id,this.innerHTML);};};
		for(var i=0;i<nl.length;i++){nl[i].onclick = function(){Track.save('navigation',this.href,this.id,this.innerHTML);};};
		for(var i=0;i<hl.length;i++){hl[i].onclick = function(){Track.save('heading',this.href,this.id,this.innerHTML);};};
	},
	save : function(s,h,i,t){
		xmlhttp.open("GET","/lib/track.asp?s="+s+"&h="+h+"&i="+i+"&t="+t+"&p="+window.location.href,true);
		xmlhttp.onreadystatechange=function() {
			if (xmlhttp.readyState==4) {
				
			};
		};
		xmlhttp.send(null);
	}
}

//Track.init();

function objXMLHttp(){
	var xmlhttp = false;
	try {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E) {
			xmlhttp = false;
		};
	};
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
		xmlhttp = new XMLHttpRequest();
	};
	
	return xmlhttp;
};

var Form = {
	defaultToggle : function(){
		for (var i = 0; i < arguments.length; i++) {
			var element = arguments[i];
			addEvent($E(element), 'focus', function(){ if(this.value == this.defaultValue) this.value = ""; });
			addEvent($E(element), 'blur', function(){ if(this.value == "") this.value = this.defaultValue;    });
		};
	},
	disable : function(){
		for (var i = 0; i < arguments.length; i++) {
			var element = arguments[i];
			$E(element).disabled = true;
		};
	},
	enable : function(){
		for (var i = 0; i < arguments.length; i++) {
			var element = arguments[i];
			$E(element).disabled = true;
		};
	},
	findFirst : function(form){
		for(var i=0;i<document.forms[form].elements.length;i++){
			var ele = document.forms[form].elements[i];
			if(ele.type != 'hidden' && !ele.disabled && /input|select|textarea/.test(ele.tagName.toLowerCase()) ){
				return ele;
			};  
		};
	},
	focusFirst : function(form){
		var ele = this.findFirst(form);
		ele.focus();
		if (ele.select) ele.select();
	},
	serialize : function(form){
		var string = '';
		for(var i=0;i<document.forms[form].elements.length;i++){
			var ele = document.forms[form].elements[i];
			string += ele.name + '=' + encodeURIComponent(ele.value) + '&';
		};
		return string;
	},
	getValue : function(element){
		var ele = $E(element);
		var method = ele.tagName.toLowerCase();
		switch(method){
			case 'input':
			case 'textarea':
				return ele.value ? ele.value : null;
			case 'select':
				var val = ele.options[ele.selectedIndex].value ? ele.options[ele.selectedIndex].value : ele.options[ele.selectedIndex].text;
				return  val ? val : null;
			case 'checkbox':
      case 'radio':
				return ele.checked ? ele.value : null;
		};
	}
};

var $F = Form.getValue;

String.prototype.trim = function(){
		str = this != window ? this : str;
		return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
};

function $E() {
  var elements = new Array();
  for(var i = 0; i < arguments.length; i++){
    var element = arguments[i];
    if (typeof element == 'string'){element = document.getElementById(element);}
    if (arguments.length == 1){return element;}
    elements.push(element);
  }
  return elements;
};

function yellowFade(count, ele){
	var colours = ["ff", "ee", "dd", "cc", "bb", "aa", "99"];
	if (count >= 1) {
		$E(ele).style.backgroundColor = "#ffff" + colours[count];
		if (count==1) {
			$E(ele).style.backgroundColor = "";
		};
		count--;
		setTimeout("yellowFade("+count+",'"+ele+"')", 100);
	};
};
/* 
	Based on quirksmode cookie functions
	http://www.quirksmode.org/js/cookies.html 
*/
var Cookie = {
	create : function(name, value, days){
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
	},
	read : function(name){
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
	},
	erase : function(){
		createCookie(name,"",-1);
	}
};

//News page javascript
function dateSelect(){
	var value = this.options[this.selectedIndex].value.split("-");
	location.href = ('http://' + location.hostname + '/travel_news/cat/' + value[1] + '/' + value[0] + '/');
};

function Hover(){
	var eles = $C('hover');
	for(var i=0;i<eles.length;i++){
		eles[i].onmouseover = function(){
			this.src = this.src.replace('.jpg','_over.jpg');
		};
		eles[i].onmouseout = function(){
			this.src = this.src.replace('_over.jpg','.jpg');
		};
	}
};

addEvent(window, 'load', function(){
	if($E('category_date')){addEvent($E('category_date'), 'change', dateSelect)}
	Nav.init();
	Hover();
});

window.onerror = ErrorHandler;
function ErrorHandler() {
	return true;
}

var Nav = {
	init : function(){
		var eles = $C('collapse', 'div', $E('side_bar'));
		for(var i=0;i<eles.length;i++){
			addEvent(eles[i].getElementsByTagName('h2')[0], 'click', Nav.click);
			eles[i].className = eles[i].className.replace('collapse', 'collapsable');
			if(Cookie.read(eles[i].id) == 'open') eles[i].className = eles[i].className.replace('closed', '') + ' open';
		};
	},
	click : function(){
		var curClass = this.parentNode.className;
		if(curClass.indexOf('closed') != -1){
			this.parentNode.className = curClass.replace('closed', '') + ' open';
			Cookie.create(this.parentNode.id, 'open', 1);
		}else{
			this.parentNode.className = curClass.replace('open', '') + ' closed';
			Cookie.create(this.parentNode.id, 'closed', 1);
		};
	}
};

function gwonav(){
  //Check if gwo page
  var gwo = document.getElementById('navigation_gwo');
  if(!gwo) return;
  
  //Get page id
  var id = window.location.href;
  if(id.indexOf('hotel') != -1){
    id = 'airport_hotels_tab';
  }
  if(id.indexOf('parking') != -1){
    id = 'airport_parking_tab';
  }
  if(id.indexOf('lounge') != -1){
    id = 'airport_lounges_tab';
  }
  if(id.indexOf('car-hire') != -1){
    id = 'worldwide_car_hire_tab';
  }
  if(id.indexOf('theatre') != -1){
    id = 'theatre_tickets_tab';
  }
  
  //Get the nav element, and set it style
  if(nav = document.getElementById(id)){
    nav.parentNode.className = 'current';
    nav.className = 'nav current';
  }
};
addEvent(window, 'load', function(){
  gwonav()
});
