var xVersion='3.15.4',xNN4,xOp7,xOp5or6,xIE4Up,xIE4,xIE5,xUA=navigator.userAgent.toLowerCase();
if (window.opera) {
    xOp7=(xUA.indexOf('opera 7')!=-1 || xUA.indexOf('opera/7')!=-1);
    if (!xOp7) xOp5or6=(xUA.indexOf('opera 5')!=-1 || xUA.indexOf('opera/5')!=-1 || xUA.indexOf('opera 6')!=-1 || xUA.indexOf('opera/6')!=-1);
}

else if (document.all && xUA.indexOf('msie')!=-1) {
    xIE4Up=parseInt(navigator.appVersion)>=4;
    xIE4=xUA.indexOf('msie 4')!=-1;
    xIE5=xUA.indexOf('msie 5')!=-1;
}

else if (document.layers) {xNN4=true;}
xMoz=xUA.indexOf('gecko')!=-1;
xMac=xUA.indexOf('mac')!=-1;

function xGetElementById(e) {
    if(typeof(e)!='string') return e;
    if(document.getElementById) e=document.getElementById(e);
    else if(document.all) e=document.all[e];
    else e=null;
    return e;
}

function xParent(e,bNode) {
    if (!(e=xGetElementById(e))) return null;
    var p=null;
    if (!bNode && xDef(e.offsetParent)) p=e.offsetParent;
    else if (xDef(e.parentNode)) p=e.parentNode;
    else if (xDef(e.parentElement)) p=e.parentElement;
    return p;
}

function xDef() {
    for(var i=0; i<arguments.length; ++i){if(typeof(arguments[i])=='undefined') return false;}
    return true;
}

function xStr() {
    for(var i=0; i<arguments.length; ++i){if(typeof(arguments[i])!='string') return false;}
    return true;
}

function xNum() {
    for(var i=0; i<arguments.length; ++i){if(typeof(arguments[i])!='number') return false;}
    return true;
}

function xShow(e) { return xVisibility(e, 1); }

function xHide(e) { return xVisibility(e, 0); }

function xVisibility(e, bShow) {
    if(!(e=xGetElementById(e))) return null;
    if(e.style && xDef(e.style.visibility)) {
        if (xDef(bShow)) e.style.visibility = bShow ? 'visible' : 'hidden';
        return e.style.visibility;
    }
    return null;
}

function xDisplay(e, sProp) {
    if(!(e=xGetElementById(e))) return null;
    if(e.style && xDef(e.style.display)) {
        if (xStr(sProp)) e.style.display = sProp;
        return e.style.display;
    }
    return null;
}

function xZIndex(e,uZ) {
    if(!(e=xGetElementById(e))) return 0;
    if(e.style && xDef(e.style.zIndex)) {
        if(xNum(uZ)) e.style.zIndex=uZ;
        uZ=parseInt(e.style.zIndex);
    }
    return uZ;
}

function xColor(e,sColor) {
    if(!(e=xGetElementById(e))) return '';
    var c='';
    if(e.style && xDef(e.style.color)) {
        if(xStr(sColor)) e.style.color=sColor;
        c=e.style.color;
    }
    return c;
}

function xBackground(e,sColor,sImage) {
    if(!(e=xGetElementById(e))) return '';
    var bg='';
    if(e.style) {
        if(xStr(sColor)) {
            if(!xOp5or6) e.style.backgroundColor=sColor;
            else e.style.background=sColor;
        }
        if(xStr(sImage)) e.style.backgroundImage=(sImage!='')? 'url('+sImage+')' : null;
        if(!xOp5or6) bg=e.style.backgroundColor;
        else bg=e.style.background;
    }
    return bg;
}

function xMoveTo(e,iX,iY) {
    xLeft(e,iX);
    xTop(e,iY);
}

function xLeft(e,iX) {
    if(!(e=xGetElementById(e))) return 0;
    var css=xDef(e.style);
    if (css && xStr(e.style.left)) {
        if(xNum(iX)) e.style.left=iX+'px';
        else {
            iX=parseInt(e.style.left);
            if(isNaN(iX)) iX=0;
        }
    }
    else if(css && xDef(e.style.pixelLeft)) {
        if(xNum(iX)) e.style.pixelLeft=iX;
        else iX=e.style.pixelLeft;
    }
    return iX;
}

function xTop(e,iY) {
    if(!(e=xGetElementById(e))) return 0;
    var css=xDef(e.style);
    if(css && xStr(e.style.top)) {
        if(xNum(iY)) e.style.top=iY+'px';
        else {
            iY=parseInt(e.style.top);
            if(isNaN(iY)) iY=0;
        }
    }
    else if(css && xDef(e.style.pixelTop)) {
        if(xNum(iY)) e.style.pixelTop=iY;
        else iY=e.style.pixelTop;
    }
    return iY;
}

function xPageX(e) {
    if (!(e=xGetElementById(e))) return 0;
    var x = 0;
        while (e) {
        if (xDef(e.offsetLeft)) x += e.offsetLeft;
        e = xDef(e.offsetParent) ? e.offsetParent : null;
    }
    return x;
}

function xPageY(e) {
    if (!(e=xGetElementById(e))) return 0;
    var y = 0;
    while (e) {
        if (xDef(e.offsetTop)) y += e.offsetTop;
        e = xDef(e.offsetParent) ? e.offsetParent : null;
    }
    return y;
}

function xOffsetLeft(e) {
    if (!(e=xGetElementById(e))) return 0;
    if (xDef(e.offsetLeft)) return e.offsetLeft;
    else return 0;
}

function xOffsetTop(e) {
    if (!(e=xGetElementById(e))) return 0;
    if (xDef(e.offsetTop)) return e.offsetTop;
    else return 0;
}

function xScrollLeft(e, bWin) {
    var offset=0;
    if (!xDef(e) || bWin) {
        var w = e || window;
        if(w.document.documentElement && w.document.documentElement.scrollLeft) offset=w.document.documentElement.scrollLeft;
        else if(w.document.body && xDef(w.document.body.scrollLeft)) offset=w.document.body.scrollLeft;
    }
    else {
        e = xGetElementById(e);
        if (e && xNum(e.scrollLeft)) offset = e.scrollLeft;
    }
    return offset;
}

function xScrollTop(e, bWin) {
    var offset=0;
    if (!xDef(e) || bWin) {
        var w = e || window;
        if(w.document.documentElement && w.document.documentElement.scrollTop) offset=w.document.documentElement.scrollTop;
        else if(w.document.body && xDef(w.document.body.scrollTop)) offset=w.document.body.scrollTop;
    }
    else {
        e = xGetElementById(e);
        if (e && xNum(e.scrollTop)) offset = e.scrollTop;
    }
    return offset;
}

function xHasPoint(ele, iLeft, iTop, iClpT, iClpR, iClpB, iClpL) {
    if (!xNum(iClpT)){iClpT=iClpR=iClpB=iClpL=0;}
    else if (!xNum(iClpR)){iClpR=iClpB=iClpL=iClpT;}
    else if (!xNum(iClpB)){iClpL=iClpR; iClpB=iClpT;}
    var thisX = xPageX(ele), thisY = xPageY(ele);
    return (iLeft >= thisX + iClpL && iLeft <= thisX + xWidth(ele) - iClpR && iTop >=thisY + iClpT && iTop <= thisY + xHeight(ele) - iClpB );
}

function xResizeTo(e,uW,uH) {
    xWidth(e,uW);
    xHeight(e,uH);
}

function xWidth(e,uW) {
    if(!(e=xGetElementById(e))) return 0;
    if (xNum(uW)) {
        if (uW<0) uW = 0;
        else uW=Math.round(uW);
    }
    else uW=-1;
    var css=xDef(e.style);
    if(css && xDef(e.offsetWidth) && xStr(e.style.width)) {
        if(uW>=0) xSetCW(e, uW);
        uW=e.offsetWidth;
    }
    else if(css && xDef(e.style.pixelWidth)) {
        if(uW>=0) e.style.pixelWidth=uW;
        uW=e.style.pixelWidth;
    }
    return uW;
}

function xHeight(e,uH) {
    if(!(e=xGetElementById(e))) return 0;
    if (xNum(uH)) {
        if (uH<0) uH = 0;
        else uH=Math.round(uH);
    }
    else uH=-1;
    var css=xDef(e.style);
    if(css && xDef(e.offsetHeight) && xStr(e.style.height)) {
        if(uH>=0) xSetCH(e, uH);
        uH=e.offsetHeight;
    }
    else if(css && xDef(e.style.pixelHeight)) {
        if(uH>=0) e.style.pixelHeight=uH;
        uH=e.style.pixelHeight;
    }
    return uH;
}

function xGetCS(ele,sP){return parseInt(document.defaultView.getComputedStyle(ele,'').getPropertyValue(sP));}

function xSetCW(ele,uW){
    var pl=0,pr=0,bl=0,br=0;
    if(xDef(document.defaultView) && xDef(document.defaultView.getComputedStyle)) {
        pl=xGetCS(ele,'padding-left');
        pr=xGetCS(ele,'padding-right');
        bl=xGetCS(ele,'border-left-width');
        br=xGetCS(ele,'border-right-width');
    }
    else if(xDef(ele.currentStyle,document.compatMode)){
        if(document.compatMode=='CSS1Compat'){
            pl=parseInt(ele.currentStyle.paddingLeft);
            pr=parseInt(ele.currentStyle.paddingRight);
            bl=parseInt(ele.currentStyle.borderLeftWidth);
            br=parseInt(ele.currentStyle.borderRightWidth);
        }
    }
    else if(xDef(ele.offsetWidth,ele.style.width)){ // ?
        ele.style.width=uW+'px';
        pl=ele.offsetWidth-uW;
    }
    if(isNaN(pl)) pl=0; if(isNaN(pr)) pr=0; if(isNaN(bl)) bl=0; if(isNaN(br)) br=0;
    var cssW=uW-(pl+pr+bl+br);
    if(isNaN(cssW)||cssW<0) return;
    else ele.style.width=cssW+'px';
}

function xSetCH(ele,uH) {
    var pt=0,pb=0,bt=0,bb=0;
    if(xDef(document.defaultView) && xDef(document.defaultView.getComputedStyle)) {
        pt=xGetCS(ele,'padding-top');
        pb=xGetCS(ele,'padding-bottom');
        bt=xGetCS(ele,'border-top-width');
        bb=xGetCS(ele,'border-bottom-width');
    }
    else if(xDef(ele.currentStyle,document.compatMode)) {
        if(document.compatMode=='CSS1Compat') {
            pt=parseInt(ele.currentStyle.paddingTop);
            pb=parseInt(ele.currentStyle.paddingBottom);
            bt=parseInt(ele.currentStyle.borderTopWidth);
            bb=parseInt(ele.currentStyle.borderBottomWidth);
        }
    }
    else if(xDef(ele.offsetHeight,ele.style.height)) { // ?
        ele.style.height=uH+'px';
        pt=ele.offsetHeight-uH;
    }
    if(isNaN(pt)) pt=0; if(isNaN(pb)) pb=0; if(isNaN(bt)) bt=0; if(isNaN(bb)) bb=0;
    var cssH=uH-(pt+pb+bt+bb);
    if(isNaN(cssH)||cssH<0) return;
    else ele.style.height=cssH+'px';
}

function xClip(e,iTop,iRight,iBottom,iLeft) {
    if(!(e=xGetElementById(e))) return;
    if(e.style) {
        if (xNum(iLeft)) e.style.clip='rect('+iTop+'px '+iRight+'px '+iBottom+'px '+iLeft+'px)';
        else e.style.clip='rect(0 '+parseInt(e.style.width)+'px '+parseInt(e.style.height)+'px 0)';
    }
}

function xClientWidth() {
    var w=0;
    if(xOp5or6) w=window.innerWidth;
    else if(document.compatMode == 'CSS1Compat' && !window.opera && document.documentElement && document.documentElement.clientWidth)
        w=document.documentElement.clientWidth;
    else if(document.body && document.body.clientWidth)
        w=document.body.clientWidth;
    else if(xDef(window.innerWidth,window.innerHeight,document.height)) {
        w=window.innerWidth;
        if(document.height>window.innerHeight) w-=16;
    }
    return w;
}

function xClientHeight() {
    var h=0;
    if(xOp5or6) h=window.innerHeight;
    else if(document.compatMode == 'CSS1Compat' && !window.opera && document.documentElement && document.documentElement.clientHeight)
        h=document.documentElement.clientHeight;
    else if(document.body && document.body.clientHeight)
        h=document.body.clientHeight;
    else if(xDef(window.innerWidth,window.innerHeight,document.width)) {
        h=window.innerHeight;
        if(document.width>window.innerWidth) h-=16;
    }
  return h;
}

function xWindow(name, w, h, x, y, loc, men, res, scr, sta, too) {
    var e='',c=',',xf='left=',yf='top='; this.n = name;
    if (document.layers) {xf='screenX='; yf='screenY=';}
    this.f = (w?'width='+w+c:e)+(h?'height='+h+c:e)+(x>=0?xf+x+c:e)+(y>=0?yf+y+c:e)+'location='+loc+',menubar='+men+',resizable='+res+',scrollbars='+scr+',status='+sta+',toolbar='+too;
    this.opened = function() {return this.w && !this.w.closed;};
    this.close = function() {if(this.opened()) this.w.close();};
    this.focus = function() {if(this.opened()) this.w.focus();};
    this.load = function(sUrl) {
        if (this.opened()) this.w.location.href = sUrl;
        else this.w = window.open(sUrl,this.n,this.f);
        this.focus();
        return false;
    };
}

function xWinClass(clsName, winName, w, h, x, y, loc, men, res, scr, sta, too) {
    var thisObj = this;
    var e='',c=',',xf='left=',yf='top='; this.n = name;
    if (document.layers) {xf='screenX='; yf='screenY=';}
    this.f = (w?'width='+w+c:e)+(h?'height='+h+c:e)+(x>=0?xf+x+c:e)+(y>=0?yf+y+c:e)+'location='+loc+',menubar='+men+',resizable='+res+',scrollbars='+scr+',status='+sta+',toolbar='+too;
    this.opened = function() {return this.w && !this.w.closed;};
    this.close = function() {if(this.opened()) this.w.close();};
    this.focus = function() {if(this.opened()) this.w.focus();};
    this.load = function(sUrl) {
        if (this.opened()) this.w.location.href = sUrl;
        else this.w = window.open(sUrl,this.n,this.f);
        this.focus();
        return false;
    };

    function onClick() {return thisObj.load(this.href);}
    xGetElementsByClassName(clsName, document, '*', bindOnClick);
    function bindOnClick(e) {e.onclick = onClick;}
}

var xChildWindow = null;
function xWinOpen(sUrl) {
    var features = "left=0,top=0,width=600,height=500,location=0,menubar=0," + "resizable=1,scrollbars=1,status=0,toolbar=0";
    if (xChildWindow && !xChildWindow.closed) {xChildWindow.location.href  = sUrl;}
    else {xChildWindow = window.open(sUrl, "myWinName", features);}
    xChildWindow.focus();
    return false;
}

var xWinScrollWin = null;
function xWinScrollTo(win,x,y,uTime) {
    var e = win;
    if (!e.timeout) e.timeout = 25;
    var st = xScrollTop(e, 1);
    var sl = xScrollLeft(e, 1);
    e.xTarget = x; e.yTarget = y; e.slideTime = uTime; e.stop = false;
    e.yA = e.yTarget - st;
    e.xA = e.xTarget - sl;
    e.B = Math.PI / (2 * e.slideTime)
    e.yD = st;
    e.xD = sl;
    var d = new Date(); e.C = d.getTime();
    if (!e.moving) {
        xWinScrollWin = e;
        xWinScroll();
    }
}

function xWinScroll() {
    var e = xWinScrollWin || window;
    var now, s, t, newY, newX;
    now = new Date();
    t = now.getTime() - e.C;
    if (e.stop) { e.moving = false; }
    else if (t < e.slideTime) {
        setTimeout("xWinScroll()", e.timeout);
        s = Math.sin(e.B * t);
        newX = Math.round(e.xA * s + e.xD);
        newY = Math.round(e.yA * s + e.yD);
        e.scrollTo(newX, newY);
        e.moving = true;
    }  
    else {
        e.scrollTo(e.xTarget, e.yTarget);
        xWinScrollWin = null;
        e.moving = false;
    }  
}
