/* config */ var GT; if (!GT) GT = {}; if (!GT.Utils) GT.Utils = {}; var debug = true; var shaded_button_class = 'gtbutton'; var shaded_button_default_bgcolor = '#e47100'; var shaded_button_default_bgcolor_over = '#ab995b'; var initial_page_size; /* general functions */ var addEvent = function(o, ename, fn) { if (typeof(fn) == 'function') { if (window.addEventListener) window.addEventListener(ename, fn, false); else if (window.attachEvent) window.attachEvent('on' + ename, fn, false); else if (document.getElementById) eval('window.on' + ename) = fn; else fn(); } } var addOnLoad = function(fn) { addEvent(window, 'load', fn); } var addOnUnLoad = function(fn) { addEvent(window, 'unload', fn); } GT.Utils.AddEvent = addEvent; var QueryString = function(qs) { var r = '', s = window.location.search.substring(1), v = s.split('&'); for (var i = 0; i < v.length; i++) { var nv = v[i].split('='); if (nv && nv[0].toLowerCase() == qs.toLowerCase()) { r = nv[1]; delete nv; break; } delete nv; } delete v; return r; } var getCookie = GetCookie = function(name) { var r = null; if (document.cookie.length > 0) { var offset = document.cookie.indexOf(name + '='); if (offset != -1) { offset += name.length + 1; var end = document.cookie.indexOf(";", offset); if (end == -1) end = document.cookie.length; r = unescape(document.cookie.substring(offset, end)); } } return r; } var setCookie = SetCookie = function(name, value, lifetime_minutes, path) { if (typeof name != 'undefined') { var cookie = name + '=' + escape(value); if (lifetime_minutes != null) { var today = new Date(); var expires = new Date(today.getTime() + lifetime_minutes * 1000 * 60); cookie += '; expires=' + expires.toGMTString(); } if (path != null) { cookie += '; path=' + path; } document.cookie = cookie; } } var jsEscape = function(text) { var s = text; if (text && typeof text == 'string') s = text; else if (text && text.toString) s = text.toString(); else if (text) s = (typeof text).toString(); else s = 'undefined'; return s.replace(/\'/g, '\\\''); } var getURL = getUrl = function(url, target) { if (url != '') { try { var link = document.createElement('a'); if (link.setAttribute) { link.setAttribute('href', url); link.setAttribute('target', (target || '_top')); } else { link.href = url; link.target = (target ? target : '_top'); } document.body.appendChild(link); link.click(); } catch(e) { document.location.href = url; } } } var selectLanguage = SelectLanguage = function(o) { getURL(o.options[o.selectedIndex].value); } // getPageSize() // Returns array with page width, height and window width, height var getPageSize = GetPageSize = function () { var xScroll, yScroll; if (window.innerHeight && window.scrollMaxY) { xScroll = window.innerWidth + window.scrollMaxX; yScroll = window.innerHeight + window.scrollMaxY; } else if (document.body && document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac xScroll = document.body.scrollWidth; yScroll = document.body.scrollHeight; } else if (document.body) { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari xScroll = document.body.offsetWidth; yScroll = document.body.offsetHeight; } var windowWidth, windowHeight; if (self.innerHeight) { // all except Explorer if(document.documentElement.clientWidth){ windowWidth = document.documentElement.clientWidth; } else { windowWidth = self.innerWidth; } windowHeight = self.innerHeight; } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode windowWidth = document.documentElement.clientWidth; windowHeight = document.documentElement.clientHeight; } else if (document.body) { // other Explorers windowWidth = document.body.clientWidth; windowHeight = document.body.clientHeight; } // for small pages with total height less then height of the viewport if(yScroll < windowHeight){ pageHeight = windowHeight; } else { pageHeight = yScroll; } // for small pages with total width less then width of the viewport if(xScroll < windowWidth){ pageWidth = xScroll; } else { pageWidth = windowWidth; } arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) return arrayPageSize; } var getScrollOffset = GetScrollOffset = function() { var x,y; if (self.pageYOffset) // all except Explorer { x = self.pageXOffset; y = self.pageYOffset; } else if (document.documentElement && document.documentElement.scrollTop) // Explorer 6 Strict { x = document.documentElement.scrollLeft; y = document.documentElement.scrollTop; } else if (document.body) // all other Explorers { x = document.body.scrollLeft; y = document.body.scrollTop; } return new Array(x, y); } var getKeyCode = GetKeyCode = function(e) { var keycode; if (e == null) { // ie keycode = event.keyCode; } else { // mozilla keycode = e.which; } return keycode; } var getKey = GetKey = function(e) { return String.fromCharCode(getKeyCode(e)); } var showElement = ShowElement = function(id) { var element = document.getElementById(id); if (element) { if (!element.style) element.style = new Object(); element.style.display = 'block'; } } var hideElement = HideElement = function(id) { var element = document.getElementById(id); if (element) { if (!element.style) element.style = new Object(); element.style.display = 'none'; } } var toggleElement = ToggleElement = function(id) { var element = document.getElementById(id); if (element) { if (!element.style) element.style = new Object(); if (element.style.display == 'none') element.style.display = 'block'; else element.style.display = 'none'; } } if (!Array.prototype.push) { Array.prototype.push = function() { for(var i = 0; i < arguments.length; i++){ this[this.length] = arguments[i]; } return this.length; } } if (!String.prototype.trim) { String.prototype.trim = function () { return this.replace(/^\s*/, "").replace(/\s*$/, ""); } } /* ajax callback functions */ var xml_to_string = function(xml) { return (new XMLSerializer()).serializeToString(xml); } var xml_node_value = function(node) { if (typeof(node.textContent) != 'undefined') { return node.textContent; } else if (typeof(node.innerText) != 'undefined') { return node.innerText; } else if (typeof(node.text) != 'undefined') { return node.text; } else { switch (node.nodeType) { case 3: case 4: return node.nodeValue; break; case 1: case 11: var innerText = ''; for (var i = 0; i < node.childNodes.length; i++) { innerText += xml_node_value(node.childNodes[i]); } return innerText; break; default: return ''; } } } var init_window = function() { // get page size initial_page_size = getPageSize(); } /* images */ var a_preload_images = new Array(); var add_preload_image = function(url) { a_preload_images[a_preload_images.length] = url; } var preload_images = function() { for (var i = 0; i < a_preload_images.length; i++) { eval('var i_' + i + ' = new Image();'); eval('i_' + i + '.src = \'' + a_preload_images[i] + '\';'); } } init_grayscale_images = function() { var a_elements = document.getElementsByTagName('IMG'); for (var i = 0; i < a_elements.length; i++) { if (a_elements[i].className && a_elements[i].className.indexOf('grayscale') > -1) { //var href = a_elements[i]; a_elements[i].onmouseover = function(e) { this.src = this.src.replace(/_gray\.gif/, '.gif'); }; a_elements[i].onmouseout = function(e) { this.src = this.src.replace(/\.gif/, '_gray.gif'); }; a_elements[i].onclick = function(e) { this.blur(); return true; }; } } } /* shaded buttons */ var init_shaded_buttons = function() { var input_elements = document.getElementsByTagName('INPUT'); for (var i = 0; i < input_elements.length; i++) { var btn = input_elements[i]; if (shaded_button_class != '' && btn.className && btn.className == shaded_button_class) { btn.onmouseover = function() { try { this.style.background = (eval('btn_bgcolor_over_' + this.id) || shaded_button_default_bgcolor); } catch(ex) {} }; btn.onmouseout = function() { try { this.style.background = (eval('btn_bgcolor_' + this.id) || shaded_button_default_bgcolor_over); } catch(ex) {} }; btn.onfocus = btn.onmouseover; btn.onblur = btn.onmouseout; } } } /* firefox error console */ var console; if (!console) console = {}; if (BrowserDetect && BrowserDetect.browser == 'Firefox') { console.do_log = function(text) { throw text; } console.log = function(text) { if (debug) window.setTimeout("console.do_log('" + jsEscape(text).replace(/\n/g, '') + "')", 1); } } else { console.log = function(text) { if (debug) window.status = text; } } /* script and css requirements */ GT.scripts = new Array(); GT.RequireJS = function(js) { var f = false; for (var i = 0; i < GT.scripts.length; i++) { if (GT.scripts[i] == js) { f = true; break; } } if (!f) { GT.scripts[GT.scripts.length] = js; document.write('\n'); } } GT.styles = new Array(); GT.RequireCSS = function(css, media) { var f = false; for (var i = 0; i < GT.styles.length; i++) { if (GT.styles[i] == css) { f = true; break; } } if (!f) { GT.styles[GT.styles.length] = css; document.write(''); } } /* this will stop image flickering in IE6 when elements with images are moved */ try { if (document.execCommand) document.execCommand("BackgroundImageCache", false, true); } catch(e) {}; /* add functions to onLoad */ addOnLoad(init_window); addOnLoad(init_grayscale_images); addOnLoad(init_shaded_buttons); addOnLoad(preload_images);