﻿var BrowserDetect = {init: function () {this.browser = this.searchString(this.dataBrowser) || "An unknown browser";	this.version = this.searchVersion(navigator.userAgent)|| this.searchVersion(navigator.appVersion)|| "an unknown version";this.OS = this.searchString(this.dataOS) || "an unknown OS";},	searchString: function (data) {	for (var i=0;i<data.length;i++)	{var dataString = data[i].string;var dataProp = data[i].prop;this.versionSearchString = data[i].versionSearch || data[i].identity;if (dataString) {	if (dataString.indexOf(data[i].subString) != -1)return data[i].identity;}else if (dataProp)	return data[i].identity;}},searchVersion: function (dataString) {var index = dataString.indexOf(this.versionSearchString);if (index == -1) return;return parseFloat(dataString.substring(index+this.versionSearchString.length+1));},dataBrowser: [{ 	string: navigator.userAgent,subString: "OmniWeb",versionSearch: "OmniWeb/",	identity: "OmniWeb"	},{	string: navigator.vendor,subString: "Apple",identity: "Safari"},{prop: window.opera,identity: "Opera"},{string: navigator.vendor,subString: "iCab",identity: "iCab"},{string: navigator.vendor,subString: "KDE",identity: "Konqueror"},{string: navigator.userAgent,subString: "Firefox",identity: "Firefox"},{string: navigator.vendor,subString: "Camino",identity: "Camino"},{ string: navigator.userAgent,subString: "Netscape",identity: "Netscape"},{string: navigator.userAgent,subString: "MSIE",identity: "Explorer",versionSearch: "MSIE"},{	string: navigator.userAgent,subString: "Gecko",	identity: "Mozilla",versionSearch: "rv"	},{	string: navigator.userAgent,subString: "Mozilla",identity: "Netscape",versionSearch: "Mozilla"}],dataOS : [{string: navigator.platform,	subString: "Win",identity: "Windows"},{	string: navigator.platform,	subString: "Mac",identity: "Mac"},{	string: navigator.platform,	subString: "Linux",	identity: "Linux"}]};BrowserDetect.init();
Object.prototype.clone = function () {var o = new Object(); for (var property in this) {o[property] = typeof (this[property]) == 'object' ? this[property].clone() : this[property]} return o}
Array.prototype.clone = function () {var a = new Array(); for (var property in this) {a[property] = typeof (this[property]) == 'object' ? this[property].clone() : this[property]} return a}
function ws_PXToNum(s){s = s.substring(0,s.length-2);return new Number(s);}
function ws_GetElementById(e){if(typeof(e)=='string'){if(document.getElementById) e=document.getElementById(e);else if(document.all) e=document.all[e];else e=null;}return e;}
function ws_Define(){for(var i=0; i<arguments.length; ++i){if(typeof(arguments[i])=='undefined') return false;}return true;}
function ws_WindowWidth(){var v=0,d=document,w=window;if((!d.compatMode || d.compatMode == 'CSS1Compat') && !w.opera && d.documentElement && d.documentElement.clientWidth){v=d.documentElement.clientWidth;}else if(d.body && d.body.clientWidth){v=d.body.clientWidth;}else if(ws_Define(w.innerWidth,w.innerHeight,d.height)){v=w.innerWidth;if(d.height>w.innerHeight) v-=16;}return v;}
function ws_WindowHeight(){var v=0,d=document,w=window;if((!d.compatMode || d.compatMode == 'CSS1Compat') && !w.opera && d.documentElement && d.documentElement.clientHeight){v=d.documentElement.clientHeight;}else if(d.body && d.body.clientHeight){v=d.body.clientHeight;}else if(ws_Define(w.innerWidth,w.innerHeight,d.width)){v=w.innerHeight;if(d.width>w.innerWidth) v-=16;} return v;}
function ws_PageX(e){  var x = 0;  e = ws_GetElementById(e);  while (e) {    if (ws_Define(e.offsetLeft)) x += e.offsetLeft;    e = ws_Define(e.offsetParent) ? e.offsetParent : null;  }  return x;}
function ws_PageY(e){  var y = 0;  e = ws_GetElementById(e);  while (e) {    if (ws_Define(e.offsetTop)) y += e.offsetTop;    e = ws_Define(e.offsetParent) ? e.offsetParent : null;  }  return y;}
function ws_Num(){  for(var i=0; i<arguments.length; ++i){if(isNaN(arguments[i]) || typeof(arguments[i])!='number') return false;}  return true;}
function ws_ScrollLeft(e, bWin){  var offset=0;  if (!ws_Define(e) || bWin || e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body') {    var w = window;    if (bWin && e) w = e;    if(w.document.documentElement && w.document.documentElement.scrollLeft) offset=w.document.documentElement.scrollLeft;    else if(w.document.body && ws_Define(w.document.body.scrollLeft)) offset=w.document.body.scrollLeft;  }  else {    e = ws_GetElementById(e);    if (e && ws_Num(e.scrollLeft)) offset = e.scrollLeft;  }  return offset;}
function ws_ScrollTop(e, bWin){  var offset=0;  if (!ws_Define(e) || bWin || e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body') {    var w = window;    if (bWin && e) w = e;    if(w.document.documentElement && w.document.documentElement.scrollTop) offset=w.document.documentElement.scrollTop;    else if(w.document.body && ws_Define(w.document.body.scrollTop)) offset=w.document.body.scrollTop;  }  else {    e = ws_GetElementById(e);    if (e && ws_Num(e.scrollTop)) offset = e.scrollTop;  }  return offset;}
function ws_SetupEvents(el){el.onmousemove = onEvent;el.onmouseover = onEvent;el.onmouseout = onEvent; el.onmousedown = onEvent; el.onmouseup = onEvent; el.onclick = onEvent;}
function ws_Event(evt){  var e = evt || window.event;  if (!e) return;  this.type = e.type;  this.target = e.target || e.srcElement;  this.relatedTarget = e.relatedTarget;  if (ws_Define(e.pageX)) { this.pageX = e.pageX; this.pageY = e.pageY; }  else if (ws_Define(e.clientX)) { this.pageX = e.clientX + ws_ScrollLeft(); this.pageY = e.clientY + ws_ScrollTop(); }  if (ws_Define(e.offsetX)) { this.offsetX = e.offsetX; this.offsetY = e.offsetY; }  else if (ws_Define(e.layerX)) { this.offsetX = e.layerX; this.offsetY = e.layerY; }  else { this.offsetX = this.pageX - ws_PageX(this.target); this.offsetY = this.pageY - ws_PageY(this.target); }  this.keyCode = e.keyCode || e.which || 0;  this.shiftKey = e.shiftKey; this.ctrlKey = e.ctrlKey; this.altKey = e.altKey;  if (typeof e.type == 'string') {    if (e.type.indexOf('click') != -1) {this.button = 0;}    else if (e.type.indexOf('mouse') != -1) {      this.button = e.button;    }  }}
function ws_IsNumeric(strString)   {   var strValidChars = "0123456789.-";   var strChar;   var blnResult = true;   if (strString.length == 0) return false;   for (i = 0; i < strString.length && blnResult == true; i++)      {      strChar = strString.charAt(i);      if (strValidChars.indexOf(strChar) == -1)         {         blnResult = false;         }      }   return blnResult;   }
function ws_MakeInRange(numm, smal, bigg){    num2=numm;    if (numm<smal){num2=smal;}    if (numm>bigg){num2=bigg;}    return num2;}
function ws_ShuffleArray ( myArray1 ) {
  myArray = myArray1.clone()
  var i = myArray.length;
  if ( i == 0 ) return false;
  while ( --i ) {
     var j = Math.floor( Math.random() * ( i + 1 ) );
     var tempi = myArray[i];
     var tempj = myArray[j];
     myArray[i] = tempj;
     myArray[j] = tempi;
   }
   return myArray;
}
function ws_FarsiNumEnable(tex){
    sInp = new String("" + tex);
    for (a=0;a<20;a++){    
        sInp = sInp.replace("1", "۱").replace("2","۲").replace("3","۳").replace("2","۲").replace("4","۴").replace("5","۵").replace("6","۶").replace("7","۷").replace("8","۸").replace("9","۹").replace("0","۰");
    }
    return sInp;
}
function ws_AddBigNumComma(tex){
    sRes="";
    c=0;
    for (a=tex.length-1; a>=0; a--){
        c=c+1;
        sRes = tex.substr(a,1) + sRes;
        if (c%3==0)sRes = "," + sRes;
    }
    return sRes;
}
function GetXmlHttpObject(){    xmlHttp=null;    try{        xmlHttp=new XMLHttpRequest();    }    catch (e){        try{            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");        }        catch (e){            try{                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");            }            catch (e){                return null;            }        }    }    return xmlHttp;}
function PowerXML(){
    this.GetValueOfTag = function(sXMLContent, sTagName)
    {
        var sContent = sXMLContent;
        
        var aList =new Array();
        
        while (sContent.indexOf('&lt;' + sTagName + '&gt;')>=0){
            var iTagValueStart  = sContent.indexOf('&lt;' + sTagName + '&gt;') + sTagName.length + 8;
            var iTagValueEnd = sContent.indexOf('&lt;/' + sTagName + '&gt;');
            aList.push(sContent.substring(iTagValueStart, iTagValueEnd));
            sContent = sContent.substr(iTagValueEnd+1)
        }
        aList.reverse();
        return aList;
    }
}
function ws_Camelize(cssPropStr){  var i, c, a = cssPropStr.split('-');  var s = a[0];  for (i=1; i<a.length; ++i) {    c = a[i].charAt(0);    s += a[i].replace(c, c.toUpperCase());  }  return s;}
function ws_GetComputedStyle(e, p, i){  if(!(e=ws_GetElementById(e))) return null;  var s, v = 'undefined', dv = document.defaultView;  if(dv && dv.getComputedStyle){    s = dv.getComputedStyle(e,'');    if (s) v = s.getPropertyValue(p);  }  else if(e.currentStyle) {    v = e.currentStyle[ws_Camelize(p)];  }  else return null;  return i ? (parseInt(v) || 0) : v;}
function ws_Str(s){  for(var i=0; i<arguments.length; ++i){if(typeof(arguments[i])!='string') return false;}  return true;}
function ws_Num(){  for(var i=0; i<arguments.length; ++i){if(isNaN(arguments[i]) || typeof(arguments[i])!='number') return false;}  return true;}
function ws_Top(e, iY){  if(!(e=ws_GetElementById(e))) return 0;  var css=ws_Define(e.style);  if(css && ws_Str(e.style.top)) {    if(ws_Num(iY)) e.style.top=iY+'px';    else {      iY=parseInt(e.style.top);      if(isNaN(iY)) iY=ws_GetComputedStyle(e,'top',1);      if(isNaN(iY)) iY=0;    }  }  else if(css && ws_Define(e.style.pixelTop)) {    if(ws_Num(iY)) e.style.pixelTop=iY;    else iY=e.style.pixelTop;  }  return iY;}
function ws_Left(e, iX){  if(!(e=ws_GetElementById(e))) return 0;  var css=ws_Define(e.style);  if (css && ws_Str(e.style.left)) {    if(ws_Num(iX)) e.style.left=iX+'px';    else {      iX=parseInt(e.style.left);      if(isNaN(iX)) iX=ws_GetComputedStyle(e,'left',1);      if(isNaN(iX)) iX=0;    }  }  else if(css && ws_Define(e.style.pixelLeft)) {    if(ws_Num(iX)) e.style.pixelLeft=iX;    else iX=e.style.pixelLeft;  }  return iX;}
function ws_PreventDefault(e){  if (e && e.preventDefault) e.preventDefault();  else if (window.event) window.event.returnValue = false;}
function ws_MoveTo(e,x,y){  ws_Left(e,x);  ws_Top(e,y);}
function ws_Event(evt) {  var e = evt || window.event;  if (!e) return;  this.type = e.type;  this.target = e.target || e.srcElement;  this.relatedTarget = e.relatedTarget;  if (ws_Define(e.pageX)) { this.pageX = e.pageX; this.pageY = e.pageY; }  else if (ws_Define(e.clientX)) { this.pageX = e.clientX + ws_ScrollLeft(); this.pageY = e.clientY + ws_ScrollTop(); }  if (ws_Define(e.offsetX)) { this.offsetX = e.offsetX; this.offsetY = e.offsetY; }  else if (ws_Define(e.layerX)) { this.offsetX = e.layerX; this.offsetY = e.layerY; }  else { this.offsetX = this.pageX - ws_PageX(this.target); this.offsetY = this.pageY - ws_PageY(this.target); }  this.keyCode = e.keyCode || e.which || 0;  this.shiftKey = e.shiftKey; this.ctrlKey = e.ctrlKey; this.altKey = e.altKey;  if (typeof e.type == 'string') {    if (e.type.indexOf('click') != -1) {this.button = 0;}    else if (e.type.indexOf('mouse') != -1) {      this.button = e.button;    }  }}
function ws_RemoveEventListener(e,eT,eL,cap){  if(!(e=ws_GetElementById(e)))return;  eT=eT.toLowerCase();  if(e.removeEventListener)e.removeEventListener(eT,eL,cap||false);  else if(e.detachEvent)e.detachEvent('on'+eT,eL);  else e['on'+eT]=null;}
function ws_AddEventListener(e,eT,eL,cap){  if(!(e=ws_GetElementById(e)))return;  eT=eT.toLowerCase();  if(e.addEventListener)e.addEventListener(eT,eL,cap||false);  else if(e.attachEvent)e.attachEvent('on'+eT,eL);  else {    var o=e['on'+eT];   e['on'+eT]=typeof o=='function' ? function(v){o(v);eL(v);} : eL;  }}
function ws_EnableDrag(id,fS,fD,fE){  var mx = 0, my = 0, el = ws_GetElementById(id);  if (el) {    el.xDragEnabled = true;    ws_AddEventListener(el, 'mousedown', dragStart, false);  }    
function dragStart(e)  {    if (el.xDragEnabled) {      var ev = new ws_Event(e);      ws_PreventDefault(e);      mx = ev.pageX;      my = ev.pageY;      ws_AddEventListener(document, 'mousemove', drag, false);      ws_AddEventListener(document, 'mouseup', dragEnd, false);      if (fS) {        fS(el, ev.pageX, ev.pageY, ev);      }    }  }  function drag(e)  {    var ev, dx, dy;    ws_PreventDefault(e);    ev = new ws_Event(e);    dx = ev.pageX - mx;    dy = ev.pageY - my;    mx = ev.pageX;    my = ev.pageY;    if (fD) {      fD(el, dx, dy, ev);    }    else {      ws_MoveTo(el, ws_Left(el) + dx, ws_Top(el) + dy);    }  }  function dragEnd(e)  {    var ev = new ws_Event(e);    ws_PreventDefault(e);    ws_RemoveEventListener(document, 'mouseup', dragEnd, false);    ws_RemoveEventListener(document, 'mousemove', drag, false);    if (fE) {      fE(el, ev.pageX, ev.pageY, ev);    }    if (ws_EnableDrag.drop) {      ws_EnableDrag.drop(el, ev);    }  }}ws_EnableDrag.drops = []; 
function ws_Array_RemoveAt(arrr, inn){var resArr=new Array();var i=0; for(i=0; i<arrr.length; i++){if(inn!=i){resArr.push(arrr[i]);}}return resArr;}

function ws_PowerQueryString()
{
    var aQueryString = new Array();

    //Input and Output to the QueryString ArrayList
    this.CreateNewQS=function()
    {
        var res = "";
        var i = 0;
        for (i = 0; i < aQueryString.length; i++)
        {
            var tmp = aQueryString[i];
            if(tmp.GetVal()!=null){
                res += "&" + tmp.GetCap() + "=" + tmp.GetVal();
            }
        }               
        res = res.substr(1);
        return res;
    }
    this.FillOldQS= function(oldQS)
    {
        aQueryString = new Array();
        var tmp =oldQS.split("&");
        var i = 0;
        for (i = 0; i < tmp.length; i++)
        {
            if (tmp[i]!="")
            {
                var tmp2 = tmp[i].split("=");
                var tmp3 = new QS();
                tmp3.SetInit(tmp2[0], tmp2[1]);
                aQueryString.push(tmp3);
            }
        }
    }
    //CRUD Operations
    this.AddQS=function(oldQS, capOfNew, valOfNew)
    {
        this.FillOldQS(oldQS);
        var bDone = false;
        var i =0;
        for (i = 0; i < aQueryString.length; i++)
        {
            var tmp = aQueryString[i];
            if (tmp.GetCap()==(capOfNew))
            {
                bDone = true;
                this.ChangeQS(oldQS, capOfNew, valOfNew);
                break;
            }
        }
        if (!bDone)
        {
            var tmp = new QS();
            tmp.SetInit(capOfNew, valOfNew);
            aQueryString.push(tmp);
        }
        return this.CreateNewQS();
    }
    this.ChangeQS=function(oldQS, capToChange, val)
    {
        this.FillOldQS(oldQS);
        var i=0;
        for (i = 0; i < aQueryString.length; i++)
        {
            var tmp = aQueryString[i];
            if (tmp.GetCap()==(capToChange)) tmp.SetVal(val);
        }

        return this.CreateNewQS();
    }
    this.GetQS=function(oldQS, capToGet)
    {
        var ress = "0";
        var i =0;
        this.FillOldQS(oldQS);
        for (i = 0; i < aQueryString.length; i++)
        {
            var tmp = aQueryString[i];
            if (tmp.GetCap()==(capToGet)) ress = tmp.GetVal();
            if (ress==("")) ress = "0";
        }
        return ress;
    }
    this.DeleteQS=function(oldQS, capToDelete)
    {
        this.FillOldQS(oldQS);
        var i =0;
        for (i = 0; i < aQueryString.length; i++)
        {
            var tmp = aQueryString[i];
            if (tmp.GetCap()==(capToDelete)) aQueryString = ws_Array_RemoveAt(aQueryString,i);
        }
        return this.CreateNewQS();
    }
}
function QS()
{
    var cap;
    var val;
    
    this.SetInit = function(a,b)
    {
        cap = a;
        val = b;
    }
    this.SetCap=function(a){
        cap = a;
    }
    
    this.SetVal=function(b){
        val = b;
    }
    this.GetCap = function(){
        return cap;
    }
    this.GetVal = function(){
        return val;
    }
}
function getQueryVariable(variable) 
    {
     var query = window.location.search.substring(1);
     var vars = query.split("&");
     for (var i=0;i<vars.length;i++)
      {
           var pair = vars[i].split("=");
           if (pair[0] == variable) 
           {
             return pair[1];
           }
      } 
     return null;
   }
   
   
/*
    next codes are to showing a png zoom on the screen if needed    
    when StartWait() function called pngzoom show to user
    when EndWait() function called pngzoom removed
*/


/*uncomment line below to set end waiting to window scroll*/
//window.onscroll = EndWait;               

function xGetElementById(e)
{
  if(typeof(e)=='string') {
    if(document.getElementById) e=document.getElementById(e);
    else if(document.all) e=document.all[e];
    else e=null;
  }
  return e;
}

function xDef()
{
  for(var i=0; i<arguments.length; ++i){if(typeof(arguments[i])=='undefined') return false;}
  return true;
}

function xNum()
{
  for(var i=0; i<arguments.length; ++i){if(isNaN(arguments[i]) || typeof(arguments[i])!='number') return false;}
  return true;
}

function xOpacity(e, o)
{
  var set = xDef(o);
  //  if (set && o == 1) o = .9999; // FF1.0.2 but not needed in 1.5
  if(!(e=xGetElementById(e))) return 2; // error
  if (xStr(e.style.opacity)) { // CSS3
    if (set) e.style.opacity = o + '';
    else o = parseFloat(e.style.opacity);
  }
  else if (xStr(e.style.filter)) { // IE5.5+
    if (set) e.style.filter = 'alpha(opacity=' + (100 * o) + ')';
    else if (e.filters && e.filters.alpha) { o = e.filters.alpha.opacity / 100; }
  }
  else if (xStr(e.style.MozOpacity)) { // Gecko before CSS3 support
    if (set) e.style.MozOpacity = o + '';
    else o = parseFloat(e.style.MozOpacity);
  }
  else if (xStr(e.style.KhtmlOpacity)) { // Konquerer and Safari
    if (set) e.style.KhtmlOpacity = o + '';
    else o = parseFloat(e.style.KhtmlOpacity);
  }
  return isNaN(o) ? 1 : o; // if NaN, should this return an error instead of 1?
}

function xStr(s)
{
  for(var i=0; i<arguments.length; ++i){if(typeof(arguments[i])!='string') return false;}
  return true;
}

function xDisplay(e,s)
{
  if ((e=xGetElementById(e)) && e.style && xDef(e.style.display)) {
    if (xStr(s)) {
      try { e.style.display = s; }
      catch (ex) { e.style.display = ''; } // Will this make IE use a default value
    }                                      // appropriate for the element?
    return e.style.display;
  }
  return null;
}

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=xGetComputedStyle(e,'left',1);
      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=xGetComputedStyle(e,'top',1);
      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 xGetComputedStyle(e, p, i)
{
  if(!(e=xGetElementById(e))) return null;
  var s, v = 'undefined', dv = document.defaultView;
  if(dv && dv.getComputedStyle){
    s = dv.getComputedStyle(e,'');
    if (s) v = s.getPropertyValue(p);
  }
  else if(e.currentStyle) {
    v = e.currentStyle[xCamelize(p)];
  }
  else return null;
  return i ? (parseInt(v) || 0) : v;
}
    
function xMoveTo(e,x,y)
{
  xLeft(e,x);
  xTop(e,y);
}

function xClientHeight()
{
  var v=0,d=document,w=window;
  if((!d.compatMode || d.compatMode == 'CSS1Compat') && !w.opera && d.documentElement && d.documentElement.clientHeight)
    {v=d.documentElement.clientHeight;}
  else if(d.body && d.body.clientHeight)
    {v=d.body.clientHeight;}
  else if(xDef(w.innerWidth,w.innerHeight,d.width)) {
    v=w.innerHeight;
    if(d.width>w.innerWidth) v-=16;
  }
  return v;
}

function xClientWidth()
{
  var v=0,d=document,w=window;
  if((!d.compatMode || d.compatMode == 'CSS1Compat') && !w.opera && d.documentElement && d.documentElement.clientWidth)
    {v=d.documentElement.clientWidth;}
  else if(d.body && d.body.clientWidth)
    {v=d.body.clientWidth;}
  else if(xDef(w.innerWidth,w.innerHeight,d.height)) {
    v=w.innerWidth;
    if(d.height>w.innerHeight) v-=16;
  }
  return v;
}    
function xScrollTop(e, bWin)
{
  var offset=0;
  if (!xDef(e) || bWin || e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body') {
    var w = window;
    if (bWin && e) w = e;
    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 xScrollLeft(e, bWin)
{
  var offset=0;
  if (!xDef(e) || bWin || e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body') {
    var w = window;
    if (bWin && e) w = e;
    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 StartWait()
{  
    //create back div
    var eleBack = document.createElement('div');
    
    //uncomment blow line if you nedd to hide pngzoom when user click on the page
    
    //eleBack.setAttribute('onclick', 'EndWait()');
    eleBack.setAttribute('id', 'pngzoomback');   
    eleBack.style.zIndex = '600';
    eleBack.style.left = xScrollLeft('',true)+'px';
    eleBack.style.top = xScrollTop('',true)+'px';
    eleBack.style.backgroundImage = 'url(images/pngzoomback.jpg)';
    eleBack.style.height = '100%';
    eleBack.style.width = '100%';
    eleBack.style.position = 'absolute';    
    document.body.appendChild(eleBack);    
    xDisplay(eleBack,'block');
    
    //create loading image div            
    var eleLoad = document.createElement('div');
    eleLoad.setAttribute('id', 'loadimimage');   
    eleLoad.style.zIndex = '601';
    eleLoad.style.left = '0px';
    eleLoad.style.top = '0px';
    eleLoad.style.backgroundImage = 'url(images/loadingWait.gif)';
    eleLoad.style.backgroundRepeat = 'no-repeat';
    eleLoad.style.height = '100px';
    eleLoad.style.width = '100px';
    eleLoad.style.position = 'absolute';
    document.body.appendChild(eleLoad);    
    xDisplay(eleLoad,'block');    
    xOpacity(eleBack,'0.2');
    
    //show and locate loading image
    var documentCenterX = parseInt(xClientWidth() / 2) - 50 + xScrollLeft('',true);
    var documentCenterY = parseInt(xClientHeight() / 2) - 50 + xScrollTop('',true);    
    xMoveTo(eleLoad,documentCenterX,documentCenterY);    
}

function EndWait()
{ 
    var eleBack = document.getElementById('pngzoomback');
    if(eleBack != null)
    {
        document.body.removeChild(eleBack);
    }    
    var eleLoad = document.getElementById('loadimimage');    
    if(eleLoad != null)
    {     
        document.body.removeChild(eleLoad);
    }
} 