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('') } }, 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;