
function RefreshImg()
{
uniq = new Date();
uniq = "?"+uniq.getTime();
newImage = document.imgToLoad.src;
index = newImage.indexOf("?", 0);
if (index > 0)
{
newImage = newImage.substr(0, index);
}
document.imgToLoad.src = "http://sky-tours.co.nz/tabi_cam.jpg"+uniq;
}



function AJLcommon() {
	this.env  = {};
	this.ns   = {};
	this.prfx = {};
	this.geom = {};

	this.env.ua       = navigator.userAgent;
	this.env.isMac    = this.env.ua.match(/Mac/);
	this.env.isWin    = this.env.ua.match(/Win/);
	this.env.isNN     = document.layers;
	this.env.isMoz    = this.env.ua.match(/Gecko\//);
	this.env.isSafari = this.env.ua.match(/AppleWebKit/);
	this.env.isOpera  = window.opera;
	this.env.isIE     = (document.all && !this.env.isOpera);
	this.env.DOMok    = (document.documentElement && document.getElementsByTagName);
	this.ns.rootNS    = (this.env.DOMok) ? document.documentElement.namespaceURI : null;
	this.ns.xhtml1    = 'http://www.w3.org/1999/xhtml';
	this.ns.bAattrs   = 'urn:bA.attrs';
	this.prfx.bAattrs = 'bAattrs:';
	this.sharedDir    = this.getSharedDir();

	this.showErrMsg   = true;
	window.onerror    = this.errorHandler;
}

AJLcommon.prototype = {
	getSharedDir : function() {
		var sheets = document.styleSheets;
		var ptn    = /(.*\/?shared\/).+$/;
		return (sheets && sheets.length && sheets[0].href && sheets[0].href.match(ptn)) ? RegExp.$1 : null;
	},

	loadReviseCSS : function() {
		var prefix = 'revise_';
		var suffix = '.css';
		var label  = (AJL.env.isIE  && AJL.env.isWin) ? ''     :
		             (AJL.env.isIE  && AJL.env.isMac) ? 'mie'  :
		             (AJL.env.isMoz && AJL.env.isWin) ? 'wmoz' :
		             (AJL.env.isMoz && AJL.env.isMac) ? 'mmoz' :
		             (AJL.env.isSafari)              ? 'sfri' :
		             '';

		if (label && AJL.sharedDir) {
			var href = AJL.sharedDir + 'css/' + prefix + label + suffix;
			document.write('<link rel="stylesheet" type="text/css" href="' + href + '">')
		}
	},

	openWindow : function (url, title, width, height, options, move) {
		if (!url)         return;
		if (window.event) window.event.returnValue = false;
		if (!title)       title   = '_blank';
		if (!options)     options = 'toolbar=yes,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,favorites=no';
		var geom = 'width=' + width + ',height=' + height;
		var newWin = window.open(url, title, geom  + ',' + options);
		newWin.focus();
		if (!move && title != '_blank') newWin.moveTo(0, 0);
	},

	preloadImage : function(src) {
		if (!document.images || !src) return null;
		var img = new Image();
		img.src = src;
		return img;
	},

	getElementsByTagName : function(tagName, baseNode) {
		if (!tagName) tagName = '*';
		if (tagName.toLowerCase() == 'body' && document.body) return [document.body]; // measure for Netscape7.1
		if (!baseNode || !baseNode.nodeType || baseNode.nodeType != 1) baseNode = document;

		if (baseNode == document && tagName == '*' && document.all) {
			var elms = document.all, ret = [];
			for (var i = 0; i < elms.length; i++) {
				if (elms[i].nodeType == 1) {
					ret[ret.length] = elms[i];
				}
			}
			return ret;
		}
		return (!baseNode.getElementsByTagName) ?
			null :
			(AJL.ns.rootNS) ? baseNode.getElementsByTagNameNS(env.ns.xhtml1, tagName) :
			                 baseNode.getElementsByTagName(tagName);
	},

	getElementsByClassName : function(className, tagName, baseNode) {
		if (!className) return null;
		var ret  = [];
		var objs = AJL.getElementsByTagName(tagName, baseNode);
		for (var i = 0; i < objs.length; i++) {
			if (!objs[i].className) continue;
			var classes = objs[i].className.split(' ');
			for (var j = 0; j < classes.length; j++)
				if (classes[j] == className) { ret[ret.length] = objs[i]; break; }
		}
		return ret;
	},

	concatNodeList : function() {
		var ret = [];
		if (typeof arguments[0] != 'object' && typeof arguments[0] != 'function') // Safari returns 'function' when arg is [NodeList]
			return ret;
		for (var i = 0; i < arguments.length; i++)
			for (var j = 0; j < arguments[i].length; j++) 
				ret[ret.length] = arguments[i][j];
		return ret;
	},


	createElement : function(tagName) {
		return (AJL.ns.rootNS) ?
			document.createElementNS(env.ns.xhtml1, tagName) :
			document.createElement(tagName);
	},

	createText : function(str, node) {
		if (!str || !node || node.nodeType != 1) return;
		if (AJL.env.isMac && AJL.env.isIE && AJL.env.ua.match(/MSIE 5.0/))
			node.innerHTML += str;
		else
			node.appendChild(document.createTextNode(str));
		return node;
	},

	getAttr : function(node, attr) {
		if (!node || !attr || node.nodeType != 1) return null;
		attr += (document.all && attr == 'class') ? 'Name' : ''; // Measure for IE
		var ret = node.getAttribute(attr);
		if (!ret && node.getAttributeNS && attr.match(/:/)) {
			var prfx = attr.split(':')[0];
			var attr = attr.split(':')[1];
			return node.getAttributeNS(AJL.ns[prfx], attr)
		} else
			return ret;
	},

	setAttr : function(node, attr, value) {
		if (!node || !attr) return;
		if (attr.match(/:/)) {
			var prfx = attr.split(':')[0];
			var attr = attr.split(':')[1];
			if (node.setAttributeNS && node.namespaceURI || AJL.env.isSafari)
				node.setAttributeNS(AJL.ns[prfx], attr, value);
			else {
				node.setAttribute('xmlns:' + prfx, AJL.ns[prfx]);
				node.setAttribute(prfx + ':' + attr, value);
			}
		} else {
			attr += (document.all && attr == 'class') ? 'Name' : ''; // Measure for IE
			node.setAttribute(attr, value);
		}
	},

	classAttr : {
		check : function(node, value) {
			var ret = false;
			if (node && value && AJL.getAttr(node, 'class')) {
				var names = AJL.getAttr(node, 'class').split(' ');
				for (var i = 0; i < names.length && !ret; i++)
					ret = (names[i] == value)
			}
			return ret;
		},
		
		add : function(node, value) {
			if (!node)
				return null;
			if (value && !AJL.classAttr.check(node, value))
				AJL.setAttr(node, 'class', ((node.className) ? node.className + ' ' + value : value))
			return AJL.getAttr(node, 'class');
		},
	
		remove : function(node, value) {
			if (!node)
				return null;
			if (value && AJL.classAttr.check(node, value)) {
				var names  = AJL.getAttr(node, 'class').split(' ');
				var nNames = [];
				for (var i = 0; i < names.length; i++)
					if (names[i] != value)
						nNames[nNames.length] = names[i];
				AJL.setAttr(node, 'class', nNames.join(' '));
			}
			return AJL.getAttr(node, 'class');
		}
	},

	getInnerText : function(node) {
		if (node.innerText) return node.innerText;
		var nodes = node.childNodes, ret = [];
		for (var i = 0; i < nodes.length; i++)
			if (nodes[i].hasChildNodes())
				ret.push(AJL.getInnerText(nodes[i]));
			else if (nodes[i].nodeType == Node.TEXT_NODE)
				ret.push(nodes[i].nodeValue);
			else if (nodes[i].alt)
				ret.push(nodes[i].alt);
		return ret.join('').replace(/\s+/g, ' ');
	},

	getOffset : function(obj, axis, sum) {
		if (!sum) var sum = 0;
		sum += (axis == 'X')      ? obj.offsetLeft : obj.offsetTop;
		return (obj.offsetParent) ? AJL.getOffset(obj.offsetParent, axis, sum) : sum;
	},

	processDuringLoad : function(fn, wait) {
		if (!AJL.psDuringLoad) AJL.psDuringLoad = [];
		if (!wait) var wait = 500;
		fn();
		AJL.psDuringLoad[AJL.psDuringLoad.length] = setInterval(fn, wait);
		AJL.addOnload(fn);
		AJL.addOnload(AJL.clearProcessDuringLoad);
	},
	
	clearProcessDuringLoad : function(){
		if (!AJL.psDuringLoad) return;
		for (var i = 0; i < AJL.psDuringLoad.length; i++)
			clearInterval(AJL.psDuringLoad[i]);
	},
	
	addEvent : function(obj, type, listener) {
		if(!obj || !type || !listener) return;
		if (obj.addEventListener) {  // Std DOM Events
			obj.addEventListener(type, listener, false);
		} else {
			if (obj.attachEvent) {   // WinIE
					obj.attachEvent(
						'on' + type,
						function() { listener( {
							type            : window.event.type,
							target          : window.event.srcElement,
							currentTarget   : obj,
							clientX         : window.event.clientX,
							clientY         : window.event.clientY,
							pageX           : (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + window.event.clientX,
							pageY           : (document.documentElement.scrollTop  ? document.documentElement.scrollTop  : document.body.scrollTop ) + window.event.clientY,
							stopPropagation : function() { window.event.cancelBubble = true  },
							preventDefault  : function() { window.event.returnValue  = false }
						} ) }
					);
			} else {                 // MacIE
				var exists = obj['on' + type];
			    obj['on' + type]  = (exists) ?
					function() {
						exists();
						listener( {
							type            : window.event.type,
							target          : window.event.srcElement,
							currentTarget   : obj,
							clientX         : window.event.clientX,
							clientY         : window.event.clientY,
							pageX           : (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + window.event.clientX,
							pageY           : (document.documentElement.scrollTop  ? document.documentElement.scrollTop  : document.body.scrollTop ) + window.event.clientY,
							stopPropagation : function() { window.event.cancelBubble = true  },
							preventDefault  : function() { window.event.returnValue  = false }
						} );
					} : function() {
						listener( {
							type            : window.event.type,
							target          : window.event.srcElement,
							currentTarget   : obj,
							clientX         : window.event.clientX,
							clientY         : window.event.clientY,
							pageX           : (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + window.event.clientX,
							pageY           : (document.documentElement.scrollTop  ? document.documentElement.scrollTop  : document.body.scrollTop ) + window.event.clientY,
							stopPropagation : function() { window.event.cancelBubble = true  },
							preventDefault  : function() { window.event.returnValue  = false }
						} )
					};
			}
		}
	},

	addOnload : function(listener) {
		AJL.addEvent(window, 'load', listener)
	},

	getMousePos : function(e) {
		var w = window;
		var d = document.documentElement;
		var b = d.getElementsByTagName('body')[0];
		var isMacIE = (AJL.env.isMac && AJL.env.isIE);

		AJL.geom.scrollX = (w.scrollX) ? w.scrollX : (d.scrollLeft) ? d.scrollLeft : b.scrollLeft;
		AJL.geom.scrollY = (w.scrollY) ? w.scrollY : (d.scrollTop)  ? d.scrollTop  : b.scrollTop;
		AJL.geom.windowW = (w.innerWidth)  ? w.innerWidth  : (!isMacIE) ? d.offsetWidth : b.scrollWidth;
		AJL.geom.windowH = (w.innerHeight) ? w.innerHeight : (!isMacIE) ? d.offsetHeight: b.scrollHeight;
		AJL.geom.pageW   = (!isMacIE) ? b.scrollWidth  : d.offsetWidth;
		AJL.geom.pageH   = (!isMacIE) ? b.scrollHeight : d.offsetHeight;
		AJL.geom.windowX = e.clientX - (( AJL.env.isSafari) ? AJL.geom.scrollX : 0);
		AJL.geom.windowY = e.clientY - (( AJL.env.isSafari) ? AJL.geom.scrollY : 0);
		AJL.geom.mouseX  = e.clientX + ((!AJL.env.isSafari) ? AJL.geom.scrollX : 0);
		AJL.geom.mouseY  = e.clientY + ((!AJL.env.isSafari) ? AJL.geom.scrollY : 0);

		// for debug
		/*
		window.status = 'windowX:'    + AJL.geom.windowX + ' / windowY:' + AJL.geom.windowY
		              + ' / scrollX:' + AJL.geom.scrollX + ' / scrollY:' + AJL.geom.scrollY
		              + ' / left:'    + AJL.geom.mouseX  + ' / top:'     + AJL.geom.mouseY;
		*/
	},

	addImgTitle : function() {
		if (!AJL.env.DOMok) return;
		var objs = AJL.getElementsByTagName('img');
		for (var i = 0; i < objs.length; i++)
			if (!objs[i].title && objs[i].alt)
				objs[i].title = objs[i].alt;
	},

	errorHandler : function() {
		if (AJL.showErrMsg) {
			var msg = 'Error: ' + arguments[0] + '\n' +
			          'File: '  + arguments[1] + '\n' + 
			          'Line: '  + arguments[2];
			alert(msg);
		}
		return true;
	}
};

var AJL = new AJLcommon;





