/* ******************************************************** * Common classes ******************************************************** */ Type.registerNamespace('ViagogoAjax.Common'); ViagogoAjax.Common.WebCache = function() { ViagogoAjax.Common.WebCache.initializeBase(this); // public fields } ViagogoAjax.Common.WebCache.prototype = { // public methods add : function(param, results) { var key = this._generateKey(param); this[key] = results; }, retrieve : function(param) { var key = this._generateKey(param); return this[key]; }, // private methods _generateKey : function(param) { var dictionaryKey = ''; for (var element in param) { dictionaryKey += '|'; dictionaryKey += param[element].toString(); } return dictionaryKey; }, initialize : function() { ViagogoAjax.Common.WebCache.callBaseMethod(this, 'initialize'); }, dispose : function() { ViagogoAjax.Common.WebCache.callBaseMethod(this, 'dispose'); } // accessors } ViagogoAjax.Common.WebCache.registerClass('ViagogoAjax.Common.WebCache', Sys.Component); /* ******************************************************** * static form helpers ******************************************************** */ Type.registerNamespace('ViagogoAjax.FormHelper'); ViagogoAjax.FormHelper.getSelectionStart = function ViagogoAjax$FormHelper$getSelectionStart(textBox) { var selectionStart = 0; if(textBox.selectionStart != null) { // DOM compliant selectionStart = textBox.selectionStart; } else { // IE craplient var range = document.selection.createRange(); var bookmark = range.getBookmark(); var selectionStart = bookmark.charCodeAt(2) - 3; } return selectionStart; } /* ******************************************************** * static window helpers ******************************************************** */ Type.registerNamespace('ViagogoAjax.WindowHelper'); ViagogoAjax.WindowHelper.getWindowWidth = function ViagogoAjax$WindowHelper$getWindowWidth() { var windowWidth = 0; if(typeof(window.innerWidth) == 'number') { // Netscape compliant windowWidth = window.innerWidth; } else if ((document.documentElement) && (document.documentElement.clientWidth)) { // DOM compliant windowWidth = document.documentElement.clientWidth; } else if ((document.body) && (document.body.clientWidth)) { // IE craplient windowWidth = document.body.clientWidth; } return windowWidth; } ViagogoAjax.WindowHelper.getWindowHeight = function ViagogoAjax$WindowHelper$getWindowHeight() { var windowHeight = 0; if(typeof(window.innerHeight) == 'number') { // Netscape compliant windowHeight = window.innerHeight; } else if ((document.documentElement) && (document.documentElement.clientHeight)) { // DOM compliant windowHeight = document.documentElement.clientHeight; } else if ((document.body) && (document.body.clientHeight)) { // IE craplient windowHeight = document.body.clientHeight; } return windowHeight; } ViagogoAjax.WindowHelper.getScrollXOffset = function ViagogoAjax$WindowHelper$getScrollXOffset() { var scrollXOffset = 0; if(typeof(window.pageYOffset) == 'number') { // Netscape compliant scrollXOffset = window.pageXOffset; } else if ((document.body) && (document.body.scrollLeft)) { // DOM compliant scrollXOffset = document.body.scrollLeft; } else if ((document.documentElement) && (document.documentElement.scrollLeft)) { // IE crapliant scrollXOffset = document.documentElement.scrollLeft; } return scrollXOffset; } ViagogoAjax.WindowHelper.getScrollYOffset = function ViagogoAjax$WindowHelper$getScrollYOffset() { var scrollYOffset = 0; if(typeof(window.pageYOffset) == 'number') { // Netscape compliant scrollYOffset = window.pageYOffset; } else if ((document.body) && (document.body.scrollTop)) { // DOM compliant scrollYOffset = document.body.scrollTop; } else if ((document.documentElement) && (document.documentElement.scrollTop)) { // IE crapliant scrollYOffset = document.documentElement.scrollTop; } return scrollYOffset; } ViagogoAjax.WindowHelper.getDocumentWidth = function ViagogoAjax$WindowHelper$getDocumentWidth() { return document.width || document.body.offsetWidth; } ViagogoAjax.WindowHelper.getDocumentHeight = function ViagogoAjax$WindowHelper$getDocumentHeight() { return document.height || document.body.offsetHeight; } ViagogoAjax.WindowHelper.getMouseXPosition = function ViagogoAjax$WindowHelper$getMouseXPosition(ev) { var xPosition = 0; if (ev.clientX) { // DOM compliant xPosition = ev.clientX; } else if (document.documentElement) { // IE crapliant xPosition = ev.clientX + document.body.scrollLeft; } return xPosition; } ViagogoAjax.WindowHelper.getMouseYPosition = function ViagogoAjax$WindowHelper$getMouseYPosition(ev) { var yPosition = 0; if (ev.clientY) { // DOM compliant yPosition = ev.clientY; } else if (document.documentElement) { // IE crapliant yPosition = ev.clientY + document.body.scrollTop; } return yPosition; } ViagogoAjax.WindowHelper.getElementXPosition = function ViagogoAjax$WindowHelper$getElementXPosition(element) { var xPosition = 0; var currentElement = element; while(currentElement != null) { xPosition += currentElement.offsetLeft; currentElement = currentElement.offsetParent; } return xPosition; } ViagogoAjax.WindowHelper.getElementYPosition = function ViagogoAjax$WindowHelper$getElementYPosition(element) { var yPosition = 0; var currentElement = element; while(currentElement != null) { yPosition += currentElement.offsetTop; currentElement = currentElement.offsetParent; } return yPosition; } ViagogoAjax.WindowHelper.getElementWidth = function ViagogoAjax$WindowHelper$getElementWidth(element) { var elementBounds = Sys.UI.DomElement.getBounds(element); return elementBounds.width; } ViagogoAjax.WindowHelper.getElementHeight = function ViagogoAjax$WindowHelper$getElementHeight(element) { var height = 0; if (element.clientHeight) { // DOM compliant height = element.clientHeight; } return height; } ViagogoAjax.WindowHelper.getElementScrollTop = function ViagogoAjax$WindowHelper$getElementScrollTop(element) { var scrollTop = 0; if (element.scrollTop) { // DOM compliant scrollTop = element.scrollTop; } return scrollTop; } ViagogoAjax.WindowHelper.setElementScrollTop = function ViagogoAjax$WindowHelper$setElementScrollTop(element, scrollTop) { // DOM compliant element.scrollTop = scrollTop; } ViagogoAjax.WindowHelper.isInFixedDiv = function ViagogoAjax$WindowHelper$isInFixedDiv(element) { var currentElement = element; while(true) { Sys.Debug.trace(ViagogoAjax.StyleHelper.getElementStyle(currentElement, 'position')); if(currentElement.parentNode.tagName.toLowerCase() == 'body') break; currentElement = currentElement.parentNode; } return false; } /* ******************************************************** * element style helpers ******************************************************** */ Type.registerNamespace('ViagogoAjax.StyleHelper'); ViagogoAjax.StyleHelper.getElementStyle = function ViagogoAjax$StyleHelper$getElementStyle(element, styleProperty) { var style = null; if (element.currentStyle) style = element.currentStyle[styleProperty]; else if (window.getComputedStyle) style = document.defaultView.getComputedStyle(element, null).getPropertyValue(styleProperty); return style; } ViagogoAjax.StyleHelper.setDisplay = function ViagogoAjax$StyleHelper$setDisplay(element, show) { if (document.layers) { document.layers[element.id].display = show; } else if (document.all) { document.all[element.id].style.display = show; } else if (document.getElementById) { document.getElementById(element.id).style.display = show; } } /* ******************************************************** * static navigator helpers * http://www.w3schools.com/js/tryit.asp?filename=try_dom_navigator ******************************************************** */ Type.registerNamespace('ViagogoAjax.NavigatorHelper'); ViagogoAjax.NavigatorHelper.BrowserName = function ViagogoAjax$NavigatorHelper$BrowserName() { if(navigator.userAgent.indexOf('Firefox') > -1) { return 'firefox'; } if(navigator.userAgent.indexOf('MSIE') > -1) { return 'ie'; } return 'unknown'; } ViagogoAjax.NavigatorHelper.BrowserMajorVersion = function ViagogoAjax$NavigatorHelper$BrowserMajorVersion() { if(ViagogoAjax.NavigatorHelper.BrowserName() == 'ie') { if(navigator.userAgent.indexOf('MSIE 7') > -1) { return 7; } if(navigator.userAgent.indexOf('MSIE 6') > -1) { return 6; } if(navigator.userAgent.indexOf('MSIE 5.5') > -1) { return 5.5; } } if(ViagogoAjax.NavigatorHelper.BrowserName() == 'firefox') { return parseInt(navigator.appVersion); } return 0; } /* ******************************************************** * static arrayHelpers ******************************************************** */ Type.registerNamespace('ViagogoAjax.ArrayHelper'); ViagogoAjax.ArrayHelper.IndexOf = function ViagogoAjax$ArrayHelper$IndexOf(array, value) { for(var arrayIndex = 0; arrayIndex < array.length; arrayIndex++) { if(array[arrayIndex] == value) return arrayIndex; } return -1; } /* ******************************************************** * static date helpers ******************************************************** */ Type.registerNamespace('ViagogoAjax.DateHelper'); ViagogoAjax.DateHelper.ToString = function ViagogoAjax$DateHelper$ToString(date) { var year = date.getFullYear(); var month = date.getMonth() + 1; if(month < 10) month = '0' + month; var day = date.getDate(); if(day < 10) day = '0' + day; return year + month + day } if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();