//---------------------------------------------------------------------
// File: browsercaps1.js  Date:12-07-2006
// (c) Copyright 2004, JO Informatik Aps, http://www.jo-informatik.dk/
//---------------------------------------------------------------------
function jsGlobals() {}if (!jsGlobals) var jsGlobals = new jsGlobals();if (!jsGlobals.browserDetector) { try { jsGlobals.browserDetector = new browserDetector(); } catch(e) { alert('Unexpected exception.') }}function browserDetector(detect) {    var self = this; var _mousePosEnum = 0; var _thestring = ''; var _place = -1; var _browser = ''; var _browserIdentification = navigator.appName; var _browserMode = ''; var _version = ''; var _OS = ''; var _userAgent = navigator.userAgent; var _hasOpacityError = false; var _imgOnLoadSupport = true; var _preventDefaultEvent = false; var _vmlSupport = false; var _leftButtonValue = 1; var _rightButtonValue = 2; var _openWindowWidthSB = 0; var _openWindowHeightSB = 0; var _openWindowWidthNoSB = 0; var _openWindowHeightNoSB = 0; var _paddingLeftIncluded = false; var _paddingRightIncluded = false; var _paddingTopIncluded = false; var _paddingBottomIncluded = false; var _borderLeftIncluded = false; var _borderRightIncluded = false; var _borderTopIncluded = false; var _borderBottomIncluded = false;    this.browser_GS = ppFct_browser; this.browserIdentification_GS = ppFct_browserIdentification; this.browserMode_GS = ppFct_browserMode; this.version_GS = ppFct_version; this.OS_GS = ppFct_OS; this.userAgent_GS = ppFct_userAgent; this.hasOpacityError_GS = ppFct_hasOpacityError; this.imgOnLoadSupport_GS = ppFct_imgOnLoadSupport; this.preventDefaultEvent_GS = ppFct_preventDefaultEvent; this.vmlSupport_GS = ppFct_vmlSupport; this.leftButtonValue_GS = ppFct_leftButtonValue; this.rightButtonValue_GS = ppFct_rightButtonValue;            this.ScrollOffset = pmFct_ScrollOffset; this.MousePos = pmFct_MousePos; this.ElementFromEvent = pmFct_ElementFromEvent; this.WindowSize = pmFct_WindowSize; this.OpenWindowWidth = pmFct_OpenWindowWidth; this.OpenWindowHeight = pmFct_OpenWindowHeight; this.ElementWidth = pmFct_ElementWidth; this.ElementHeight = pmFct_ElementHeight; this.ElementPos = pmFct_ElementPos;         function ppFct_browser() { if (arguments.length) {alert('"browser" is read-only');} else {return _browser;} } function ppFct_browserIdentification() { if (arguments.length) {alert('"browserIdentification" is read-only');} else {return _browserIdentification;} } function ppFct_browserMode() { if (arguments.length) {alert('"browserMode" is read-only');} else {return _browserMode;} } function ppFct_version() { if (arguments.length) {alert('"version" is read-only');} else {return _version;} } function ppFct_OS() { if (arguments.length) {alert('"OS" is read-only');} else {return _OS;} } function ppFct_userAgent() { if (arguments.length) {alert('"userAgent" is read-only');} else {return _userAgent;} } function ppFct_hasOpacityError() { if (arguments.length) {alert('"hasOpacityError" is read-only');} else {return _hasOpacityError;} } function ppFct_imgOnLoadSupport() { if (arguments.length) {alert('"imgOnLoadSupport" is read-only');} else {return _imgOnLoadSupport;} } function ppFct_preventDefaultEvent() { if (arguments.length) {alert('"preventDefaultEvent" is read-only');} else {return _preventDefaultEvent;} } function ppFct_vmlSupport() { if (arguments.length) {alert('"vmlSupport" is read-only');} else {return _vmlSupport;} } function ppFct_leftButtonValue() { if (arguments.length) {alert('"leftButtonValue" is read-only');} else {return _leftButtonValue;} } function ppFct_rightButtonValue() { if (arguments.length) {alert('"rightButtonValue" is read-only');} else {return _rightButtonValue;} }    function pointReadOnly(xVal,yVal) {    var _x = xVal; var _y = yVal;    this.x_GS = ppFct_x;  this.y_GS = ppFct_y;     function ppFct_x() { if (arguments.length) { alert('"x" is read-only'); } else { return _x; } } function ppFct_y() { if (arguments.length) { alert('"y" is read-only'); } else { return _y; } } }  function sizeReadOnly(widthVal,heightVal) {    var _width = widthVal; var _height = heightVal;    this.width_GS = ppFct_width;  this.height_GS = ppFct_height;     function ppFct_width() { if (arguments.length) { alert('"width" is read-only'); } else { return _width; } } function ppFct_height() { if (arguments.length) { alert('"height" is read-only'); } else { return _height; } } }     function pmFct_ElementFromEvent(evt) { evt = (evt)?evt:window.event; var elem = evt.target?evt.target:evt.srcElement; if (elem && (elem.nodeType==3 || elem.nodeType==4)) elem = elem.parentNode;  return elem; } function pmFct_WindowSize(evt) { var windowWidth = -1; var windowHeight = -1; if(typeof(window.innerWidth)=='number') {  windowWidth = window.innerWidth; windowHeight = window.innerHeight; } else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {  windowWidth = document.documentElement.clientWidth; windowHeight = document.documentElement.clientHeight; } else if(document.body && (document.body.clientWidth || document.body.clientHeight)) {  windowWidth = document.body.clientWidth; windowHeight = document.body.clientHeight; } return new sizeReadOnly(windowWidth,windowHeight); } function pmFct_MousePos(evt) { var mpX = -1; var mpY = -1; if(typeof(evt.pageX)=='number') {  var mpX = evt.pageX; var mpY = evt.pageY; } else if(typeof(evt.clientX)=='number') {   var mpX = evt.clientX; var mpY = evt.clientY; var badOldBrowser = (window.navigator.userAgent.indexOf('Opera') + 1) || (window.ScriptEngine && ScriptEngine().indexOf('InScript') + 1) || (navigator.vendor=='KDE'); if(!badOldBrowser) { if(document.body && (document.body.scrollLeft || document.body.scrollTop)) {  mpX += document.body.scrollLeft; mpY += document.body.scrollTop; } else if(document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {  mpX += document.documentElement.scrollLeft; mpY += document.documentElement.scrollTop; } } switch (_mousePosEnum) { case 1: mpX -= 2; mpY -= 2; break; case 2: mpX -= 1; mpY -= 1; break; } } else {  } return new pointReadOnly(mpX,mpY); } function pmFct_ScrollOffset() { var ofsX = 0;  var ofsY = 0; if(typeof(window.pageYOffset)=='number') {  ofsX = window.pageXOffset; ofsY = window.pageYOffset; } else if(document.body && (document.body.scrollLeft || document.body.scrollTop)) {  ofsX = document.body.scrollLeft; ofsY = document.body.scrollTop; } else if(document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {  ofsX = document.documentElement.scrollLeft; ofsY = document.documentElement.scrollTop; } return new pointReadOnly(ofsX,ofsY); } function pmFct_OpenWindowWidth(width,scrollbars) { if ((arguments.length==1) || (!scrollbars)) { return (width + _openWindowWidthNoSB); } else { return (width + _openWindowWidthSB); } } function pmFct_OpenWindowHeight(height,scrollbars) { if ((arguments.length==1) || (!scrollbars)) { return (height + _openWindowHeightNoSB); } else { return (height + _openWindowHeightSB); } } function pmFct_ElementWidth(width,paddingLeft,borderLeft,paddingRight,borderRight) { var outer = 0; var inner = 0; if (paddingLeft) { inner+=paddingLeft; if (!_paddingLeftIncluded) outer+=paddingLeft; }  if (paddingRight) { inner+=paddingRight; if (!_paddingRightIncluded) outer+=paddingRight;  }  if (borderLeft) { inner+=borderLeft; if (!_borderLeftIncluded) outer+=borderLeft; }  if (borderRight) { inner+=borderRight; if (!_borderRightIncluded) outer+=borderRight; }  var outerWidth = width-outer; var innerWidth = width-inner; if (outerWidth<0) alert('Error: ElementWidth<0'); return [outerWidth,innerWidth]; } function pmFct_ElementHeight(height,paddingTop,borderTop,paddingBottom,borderBottom) { var outer = 0; var inner = 0; if (paddingTop) { inner+=paddingTop; if (!_paddingTopIncluded) outer+=paddingTop; } if (paddingBottom) { inner+=paddingBottom; if (!_paddingBottomIncluded) outer+=paddingBottom;  } if (borderTop) { inner+=borderTop; if (!_borderTopIncluded) outer+=borderTop; } if (borderBottom) { inner+=borderBottom; if (!_borderBottomIncluded) outer+=borderBottom; }  var outerHeight = height-outer; var innerHeight = height-inner; if (outerHeight<0) alert('Error: ElementHeight<0'); return [outerHeight,innerHeight]; } function pmFct_ElementPos(elem) { if(elem.offsetParent) { for(var posX = 0,posY = 0;elem.offsetParent;elem = elem.offsetParent) { posX += elem.offsetLeft; posY += elem.offsetTop; } return new pointReadOnly(posX,posY); } else { return new pointReadOnly(0,0); } }    function _SetEnum() { switch (_browser) { case 'Internet Explorer': _mousePosEnum = 1; _hasOpacityError = false; _imgOnLoadSupport = true; _preventDefaultEvent = false; _vmlSupport = true; _leftButtonValue = 1; _rightButtonValue = 2; _openWindowWidthSB = 17; _openWindowHeightSB = 4; if (_IE_Mode()=='quirks') { _paddingLeftIncluded = true; _paddingRightIncluded = true; _paddingTopIncluded = true; _paddingBottomIncluded = true; _borderLeftIncluded = true; _borderRightIncluded = true; _borderTopIncluded = true; _borderBottomIncluded = true; } break; case 'Firefox': _mousePosEnum = _OS=='Mac'?2:0; _hasOpacityError = (_version<'1.5'); _imgOnLoadSupport = true; _preventDefaultEvent = true; _vmlSupport = false; _leftButtonValue = 0; _rightButtonValue = 2; _openWindowHeightSB = _OS=='Mac'?3:0; break; case 'Netscape': _mousePosEnum = _browserIdentification=='Microsoft Internet Explorer'?_IE_Mode()=='quirks'?0:1:0; _hasOpacityError = false; _imgOnLoadSupport = ('7.0'<=_version); _preventDefaultEvent = true; _vmlSupport = false; _leftButtonValue = _browserIdentification=='Microsoft Internet Explorer'?1:0;; _rightButtonValue = 2; if ((_browserIdentification=='Microsoft Internet Explorer') && (_IE_Mode()=='quirks')) { _paddingLeftIncluded = true; _paddingRightIncluded = true; _paddingTopIncluded = true; _paddingBottomIncluded = true; _borderLeftIncluded = true; _borderRightIncluded = true; _borderTopIncluded = true; _borderBottomIncluded = true; } break; case 'Opera': _hasOpacityError = false; _imgOnLoadSupport = (parseInt(_version)<9); _preventDefaultEvent = true; _vmlSupport = false; _leftButtonValue = 0; _rightButtonValue = 2; if ((_IE_Mode()=='quirks') && (parseInt(_version)<9)) { _paddingLeftIncluded = true; _paddingRightIncluded = true; _paddingTopIncluded = true; _paddingBottomIncluded = true; _borderLeftIncluded = true; _borderRightIncluded = true; _borderTopIncluded = true; _borderBottomIncluded = true; } break; case 'Safari': _hasOpacityError = false; _imgOnLoadSupport = true; _preventDefaultEvent = true; _vmlSupport = false; _leftButtonValue = 1; _rightButtonValue = 2; _openWindowHeightSB = 1; break; default: _hasOpacityError = false; _imgOnLoadSupport = true; _preventDefaultEvent = false; _vmlSupport = false; _leftButtonValue = 1; _rightButtonValue = 2; break; } } function _DoDetect() { _browserMode = _IE_Mode(); var ua = _userAgent.toLowerCase(); if (_CheckIt(ua,'konqueror')) {  _browser = 'Konqueror'; _OS = 'Linux'; } else if (_CheckIt(ua,'safari')) _browser = 'Safari'; else if (_CheckIt(ua,'omniweb')) _browser = 'OmniWeb'; else if (_CheckIt(ua,'opera')) _browser = 'Opera'; else if (_CheckIt(ua,'webtv')) _browser = 'WebTV'; else if (_CheckIt(ua,'icab')) _browser = 'iCab'; else if (_CheckIt(ua,'netscape')) _browser = 'Netscape'; else if (_CheckIt(ua,'firefox')) _browser = 'Firefox'; else if (_CheckIt(ua,'msie')) _browser = 'Internet Explorer'; else if (_CheckIt(ua,'compatible')) { _browser = 'Netscape Navigator'; _version = _detect.charAt(8); } else _browser = 'Unknown'; if (!_version) _version = _CheckVersion(ua,_place + _thestring.length); if (!_OS) { if (_CheckIt(ua,'linux')) _OS = 'Linux'; else if (_CheckIt(ua,'x11')) _OS = 'Unix'; else if (_CheckIt(ua,'mac')) _OS = 'Mac'; else if (_CheckIt(ua,'win')) _OS = 'Windows'; else _OS = 'Unknown'; } }  function _CheckVersion(s,p) { var doNotExit = true; var cnt = 0; var chr = ''; var res = ''; while (doNotExit) { chr = s.charAt(p+cnt); switch (chr) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '.': res += chr;cnt+=1; break; default:  doNotExit=false; } } return res; } function _CheckIt(ua,s) { _place = ua.indexOf(s) + 1; _thestring = s; return _place; } function _IE_Mode() {  var mode = null; if (document.compatMode) { mode = (document.compatMode == 'CSS1Compat')?'strict (SCM)':'quirks'; } else { mode = (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight))?'strict (SCM)':'quirks'; } return mode; }    if ((detect==null) || (detect==true)) _DoDetect(); _SetEnum();}