function escribeObjeto(text,id)		{
	//		Reescribe un objecto, preferiblemente DIV, con texto cualquiera (incluso HTML)
  if (document.getElementById)	{
		var x = document.getElementById(id);
		x.innerHTML = '';
		x.innerHTML = text;
	}	else if (document.all)			{
		x = document.all[id];
		x.innerHTML = text;
	}	else if (document.layers)		{
		x = document.layers[id];
		text2 = '<P CLASS="testclass">' + text + '</P>';
		x.document.open();
		x.document.write(text2);
		x.document.close();
	}
}

function cambiaVisibilidad(who,action) {
	var oWho;
	if (!document.getElementById|document.all) {
		return;
	} else {
		if (document.getElementById){ 
			oWho = eval ("document.getElementById('" + who + "')");
		} else { 
			oWho = eval ("document.all." + who);
		}
	}
	window.focus();
	if (action == 'show'){
		oWho.style.display="";
	} else if (action == 'hide'){
		oWho.style.display="none";
	}
}

function generaCapa(header,closeTxt,content,target,x,y,h,w) {
  txt='';
  //txt+='<div class="cliente" style="border-top-width: 1px; border-left-width: 1px; z-index: 100; left: 430px; visibility: visible; border-bottom-width: 1px; width: 405px; top: 46px; height: 522px; border-right-width: 1px">';
  txt+='<div class="cliente" style="z-index: 100; left: 432.5px; visibility: visible; width: 355px; top: 50px; height: 460px;">';
  txt+='  <div class="titulo_capa" style="right: 0px; left: 0px; width: 405px; top: 0px">'+header+'</div>';
  txt+='  <div class="cerrar" title="Cerrar" style="RIGHT: 1px; TOP: 1px" onclick="ocultar();"></div>';
  txt+='  <div id="interior" style="border-top-width: 1px; display: block; border-left-width: 1px; left: 0px; visibility: visible; border-bottom-wiidh: 1px; width: 403px; top: 13px; height: 507px; border-right-width: 1px">';
  txt+='    <div style="padding-right: 2px; padding-left: 2px; z-indez: 3; padding-bottom: 2px; width: 351px; padding-top: 2px; height: 441px; background-color: rgb(153,153,153)">';
  txt+='      <div style="z-index: 3; width: 351px; padding-top: 2px; height: 439px; background-color: rgb(255,255,255)"><img src="http://www.aireuropa.com/es/contenidos/anticrisis_grande.jpg"/></div>';
  txt+='    </div>';
  txt+='  </div>';
  txt+='</div';
  

  /*txt+='<div class="cliente" style="border-width: 1px; position: fixed; left: 432.5px; top: 100px; width: 405px; height: 522px; visibility: visible; z-index: 100;">';
  txt+='  <div id="interior" style="border-width: 1px; display: block; visibility: visible; left: 0px; top: 13px; width: 403px; height: 507px;">';
  txt+='    <div class="titulo_capa" style="top: 0px; right: 0px; left: 0px;">'+header+'</div>';
  txt+='    <div class="cerrar" title="Cerrar" style="top: 1px; right: 1px;" onclick="ocultar();"></div>';
  txt+='    <div style="padding: 2px; z-index: 3; width: 400px; height: 502px; background-color: rgb(153, 153, 153);">';
  txt+='      <div style="z-index: 3; width: 400px; height: 500px; background-color: rgb(255, 255, 255); padding-top: 2px;">';
  txt+='        <img src="contenidos/anticrisis_grande.jpg"></img>';
  txt+='      </div>';
  txt+='    </div>';
  txt+='  </div>'
  txt+='</div>';*/
  //
  escribeObjeto(txt,target);
  cambiaVisibilidad(target,'show');
}




function genericDiv ( clientId, iniTitle, iniUrl, iniX, iniY, iniW, iniH, miniW
                    , fenceId, conPad, conBor, cliBor
                    , enMove, enResize, enMinimize, enMaximize, enClose, enStatus, enFixed
                    , fnMove, fnResize, fnMinimize, fnMaximize, fnRestore, fnClose, fnFocus, fnLoad
                    , clsCon, clsCli, clsTB, clsTBF, clsSB, clsSBF, clsRI, clsNI, clsMI, clsOI, clsCI
                    , txtResize, txtMin, txtMax, txtRestore, txtClose
                    ) {
  var me = this;
  // Public Methods
  me.paint = function(dw, dh) {
    me.conW += dw;
    me.conH += dh;
    me.con.style.width = (me.conW - B2) + 'px';
    me.con.style.height = (me.conH - B2) + 'px';
    /*@cc_on
    @if (@_jscript)
      cWidth(me.tbar, me.conW - M2 - B2);
      if (!me.minimized && me.sbar) {
        cWidth(me.sbar, me.conW - M2 - B2);
        me.sbar.style.top = me.conH - me.sbar.offsetHeight - M - B2;
      }
    @end @*/
    if (!me.minimized) {
      me.client.style.top = (M + me.tbar.offsetHeight) + 'px';
      me.client.style.width = (me.conW - M2 - B2 - cB2) + 'px';
      me.client.style.height = (me.conH - me.tbar.offsetHeight - (me.sbar ? me.sbar.offsetHeight : 0) - M2 - B2 - cB2) + 'px';
    }
  };
  me.focus = function() {
    if (genericDiv.focused != me && (!fnFocus || fnFocus(me))) {
      me.con.style.zIndex = genericDiv.nextZ++;
      if (genericDiv.focused) {
        genericDiv.focused.tbar.className = genericDiv.focused.clsTB;
        if (genericDiv.focused.sbar) genericDiv.focused.sbar.className = genericDiv.focused.clsSB;
      }
      me.tbar.className = clsTBF;
      if (me.sbar) me.sbar.className = clsSBF;
      genericDiv.focused = me;
    }
  };
  me.href = function(s) {
    var h = s;
    if (me.isIFrame) {
      if (me.client.contentWindow) {
        if (s) {me.client.contentWindow.location = s;}
        else h = me.client.contentWindow.location.href;
      }
      else if (typeof me.client.src == 'string') { // for Safari/Apollo/WebKit on Windows
        if (s) {me.client.src = s;}
        else h = me.client.src;
      }
    }
    return h;
  };
  me.hide = function(e) {
    var i, o = genericDiv.instances, z = 0, hz = 0, f = null;
    if (!fnClose || fnClose(me)) {
      ocultar();
      me.con.style.display = 'none';
      me.hidden = true;
      StopPropagation(e);
      if (me == genericDiv.focused) {
        for (i in o) { // find the next appropriate fenster to focus
          if (o.hasOwnProperty(i) && o[i] && !o[i].hidden && o[i] != me) {
            z = parseInt(o[i].con.style.zIndex);
            if (z > hz) {
              hz = z;
              f = o[i];
            }
          }
        }
        if (f) {f.focus();}
      }
    }
  };
  me.show = function() {
    me.con.style.display = 'block';
    me.hidden = false;
    me.focus();
  };
  me.status = function(s) {
    if (me.sbar) {
      if (s) {me.sbar.innerHTML = s;}
      else return me.sbar.innerHTML;
    }
  };
  me.title = function(s) {
    if (s) {me.tbar.innerHTML = s;}
    else return me.tbar.innerHTML;
  };
  me.destroy = function() {
    try {
      me.hide();
      RemoveEventListener(window, 'unload', winUnload, false);
      RemoveEventListener(window, 'resize', winResize, false);
      me.con.parentNode.removeChild(me.con);
      winUnload();
    }
    catch (e) {
      alert('Error in destroy:\n\n' + e);
    }
  };
  me.minimize = function() {
    if (enMinimize && !me.minimized && !me.hidden) {
      minClick();
      return true;
    }
    return false;
  };
  me.maximize = function() {
    if (enMaximize && !me.maximized && !me.hidden) {
      maxClick();
      return true;
    }
    return false;
  };
  me.restore = function() {
    var b, i, t;
    if (me.maximized) {
      b = me.mbtn;
      b.onclick = maxClick;
      i = clsMI;
      t = txtMax || '';
      me.maximized = !me.maximized;
    }
    else if (me.minimized) {
      b = me.nbtn;
      b.onclick = minClick;
      i = clsNI;
      t = txtMin || '';
      me.minimized = !me.minimized;
      me.client.style.display = 'block';
      if (me.sbar) me.sbar.style.display = 'block';
    }
    else {
      return false;
    }
    MoveTo(me.con, rX, rY);
    b.className = i;
    b.title = t;
    if (me.rbtn) {me.rbtn.style.display = 'block';}
    me.conW = rW;
    me.conH = rH;
    me.paint(0, 0);
    if (fnRestore) fnRestore(me);
    return true;
  };

  // Private Event Listeners

  function dragStart() {
    var i, o = genericDiv.instances;
    for (i in o) {
      if (o.hasOwnProperty(i) && o[i] && !o[i].minimized && o[i].isIFrame) {
        o[i].client.style.display = 'none';
      }
    }
  }
  function dragEnd() {
    var i, o = genericDiv.instances;
    for (i in o) {
      if (o.hasOwnProperty(i) && o[i] && !o[i].minimized && o[i].isIFrame) {
        o[i].client.style.display = 'block';
      }
    }
  }
  function barDrag(e, mdx, mdy) {
    var x = me.con.offsetLeft + mdx;
    var y = me.con.offsetTop + mdy;
    if (!fnMove || fnMove(me, x, y)) {
      if (!fenceId || inFence(x, y, me.con.offsetWidth, me.con.offsetHeight)) {
        me.con.style.left = x + 'px';
        me.con.style.top = y + 'px';
      }
    }
  }
  function resDrag(e, mdx, mdy) {
    var w = me.con.offsetWidth + mdx;
    var h = me.con.offsetHeight + mdy;
    if (!fnResize || fnResize(me, w, h)) {
      if (!fenceId || inFence(me.con.offsetLeft, me.con.offsetTop, w, h)) {
        me.paint(mdx, mdy);
      }
    }
  }
  function maxClick() {
    var f, fx, fy, x = 0, y = 0, w, h, fx2, fy2;
    var sl = ScrollLeft(), st = ScrollTop();
    var cw = ClientWidth(), ch = ClientHeight();
    if (fenceId) {
      f = cGetElementById(fenceId);
      x = fx = PageX(f);
      y = fy = PageY(f);
      w = f.offsetWidth;
      h = f.offsetHeight;
      if (enFixed) {
        x = fx - sl;
        if (x < 0) x = 0;
        y = fy - st;
        if (y < 0) y = 0;
        
        fx2 = fx + w;
        if (fx2 >= sl + cw) fx2 = cw;
        fy2 = fy + h;
        if (fy2 >= st + ch) fy2 = ch;

        w = fx2 - x;
        h = fy2 - y;
      }
    }
    else {
      if (!enFixed) {
        x = sl;
        y = st;
      }
      w = cw;
      h = ch;
    }
    if (!fnMaximize || fnMaximize(me, w - M2 - B2, h - me.tbar.offsetHeight - (me.sbar ? me.sbar.offsetHeight : 0) - M2 - B2)) {
      me.restore();
      me.maximized = !me.maximized;
      minmax(me.mbtn, w, h, x, y);
    }
  }
  function minClick() {
    var r = 1, x = 2, y, h, i, o = genericDiv.instances;
    if (!fnMinimize || fnMinimize(me)) {
      for (i in o) {
        if (o.hasOwnProperty(i) && o[i] && o[i].minimized) {
          x += o[i].con.offsetWidth + 2;
          if (x + miniW > ClientWidth()) {
            x = 2;
            ++r;
          }
        }
      }
      h = me.tbar.offsetHeight + M2 + B2;
      y = ClientHeight() - (r * (h + 2));
      if (!enFixed) y += ScrollTop();
      me.restore();
      me.client.style.display = 'none';
      if (me.sbar) me.sbar.style.display = 'none';
      me.minimized = !me.minimized;
      minmax(me.nbtn, miniW, h, x, y);
    }
  }
  function winResize() {
    if (me.maximized) {
      cResizeTo(me.con, 100, 100); // ensure fenster isn't causing scrollbars
      if (!enFixed) MoveTo(me.con, ScrollLeft(), ScrollTop());
      me.conW = ClientWidth();
      me.conH = ClientHeight();
      me.paint(0, 0);
    }
  }
  function winUnload() {
    me.con.onmousedown = me.con.onclick = null;
    if (me.nbtn) me.nbtn.onclick = null;
    if (me.mbtn) me.mbtn.onclick = me.tbar.ondblclick = null;
    if (me.cbtn) me.cbtn.onclick = me.cbtn.onmousedown = null;
    genericDiv.instances[clientId] = null;
    me = null;
  }

  // Private Functions

  function minmax(b, w, h, x, y) {
    rW = me.con.offsetWidth;
    rH = me.con.offsetHeight;
    rX = me.con.offsetLeft;
    rY = me.con.offsetTop;
    if (x != -1) {MoveTo(me.con, x, y);}
    b.className = clsOI;
    b.title = txtRestore || '';
    b.onclick = me.restore;
    if (me.rbtn) {me.rbtn.style.display = 'none';}
    me.conW = w;
    me.conH = h;
    me.paint(0, 0);
  }
  function inFence(x, y, w, h) {
    var f = cGetElementById(fenceId);
    if (enFixed) {
      x += ScrollLeft();
      y += ScrollTop();
    }
    return (!(x < f.offsetLeft || x + w > f.offsetLeft + f.offsetWidth || y < f.offsetTop || y + h > f.offsetTop + f.offsetHeight));
  }

  // 

  genericDiv.instances[clientId] = this;

  // 
  me.con = null;
  me.tbar = null;
  me.sbar = null;
  me.rbtn = null;
  me.nbtn = null;
  me.mbtn = null;
  me.cbtn = null;
  me.minimized = false;
  me.maximized = false;
  me.hidden = false;
  me.isIFrame = (typeof iniUrl == 'string');
  me.client = cGetElementById(clientId);
  me.clsSB = clsSB;
  me.clsTB = clsTB;
  me.conW = iniW;
  me.conH = iniH;

  // private properties
  var rX, rY, rW, rH; // "restore" values
  var M = conPad, B = conBor, cB = cliBor;
  var M2 = 2*M, B2 = 2*B, cB2 = 2*cB;

  // create elements
  if (!me.client) {
    me.client = document.createElement( me.isIFrame ? 'iframe' : 'div');
    me.client.id = clientId;
  }
  me.client.className += ' ' + clsCli;
  me.con = document.createElement('div');
  me.con.className = clsCon;
  if (enResize) {
    me.rbtn = document.createElement('div');
    me.rbtn.className = clsRI;
    me.rbtn.title = txtResize || '';
  }
  if (enMinimize) {
    me.nbtn = document.createElement('div');
    me.nbtn.className = clsNI;
    me.nbtn.title = txtMin || '';
  }
  if (enMaximize) {
    me.mbtn = document.createElement('div');
    me.mbtn.className = clsMI;
    me.mbtn.title = txtMax || '';
  }
  if (enClose) {
    me.cbtn = document.createElement('div');
    me.cbtn.className = clsCI;
    me.cbtn.title = txtClose || '';
  }
  me.tbar = document.createElement('div');
  me.tbar.className = clsTB;
  me.title(iniTitle);
  if (enStatus) {
    me.sbar = document.createElement('div');
    me.sbar.className = clsSB;
    me.status('&nbsp;');
  }
  // append elements
  me.con.appendChild(me.tbar);
  if (me.nbtn) me.con.appendChild(me.nbtn);
  if (me.mbtn) me.con.appendChild(me.mbtn);
  if (me.cbtn) me.con.appendChild(me.cbtn);
  me.con.appendChild(me.client);
  if (me.sbar) me.con.appendChild(me.sbar);
  if (me.rbtn) me.con.appendChild(me.rbtn);
  document.body.appendChild(me.con);
  // position and paint the fenster
  /*@cc_on
  @if (@_jscript_version <= 5.6) // IE6 or down
      enFixed = false;
    @else @*/
      if (enFixed) me.con.style.position = 'fixed';
  /*@end @*/
  me.con.style.borderWidth = (conBor || 0) + 'px'; // r18
  me.client.style.borderWidth = (cliBor || 0) + 'px'; // r18
  me.client.style.display = 'block'; // do this before paint
  me.client.style.visibility = 'visible';
  me.tbar.style.left = me.tbar.style.right = me.tbar.style.top = M + 'px';
  if (me.sbar) {me.sbar.style.left = me.sbar.style.right = me.sbar.style.bottom = M + 'px';}
  me.client.style.left = M + 'px';
  MoveTo(me.con, iniX, iniY);
  me.paint(0, 0);
  // position icons
  var t = M + B, r = t;
  if (me.cbtn) {
    me.cbtn.style.top = t + 'px';
    me.cbtn.style.right = r + 'px';
    r += me.cbtn.offsetWidth + 2;
  }
  if (me.mbtn) {
    me.mbtn.style.top = t + 'px';
    me.mbtn.style.right = r + 'px';
    r += me.mbtn.offsetWidth + 2;
  }
  if (me.nbtn) {
    me.nbtn.style.top = t + 'px';
    me.nbtn.style.right = r + 'px';
  }
  if (me.rbtn) {
    me.rbtn.style.right = me.rbtn.style.bottom = t + 'px';
  }
  // register event listeners
  if (me.isIFrame) {
    me.href(iniUrl);
    if (fnLoad) {AddEventListener(me.client, 'load', function(){fnLoad(me);}, false);}
    me.client.name = clientId;
  }
  if (enMove) EnableDrag(me.tbar, dragStart, barDrag, dragEnd);
  if (enResize) EnableDrag(me.rbtn, dragStart, resDrag, dragEnd);
  me.con.onmousedown = me.focus;
  if (enMinimize) me.nbtn.onclick = minClick;
  if (enMaximize) me.mbtn.onclick = me.tbar.ondblclick = maxClick;
  if (enClose) {
    me.cbtn.onclick = me.hide;
    me.cbtn.onmousedown = StopPropagation;
  }
  AddEventListener(window, 'unload', winUnload, false);
  AddEventListener(window, 'resize', winResize, false);
  // show the fenster
  me.con.style.visibility = 'visible';
  me.focus();

} // end genericDiv object prototype

function EnableDrag(id,fS,fD,fE) {
  var mx = 0, my = 0, el = cGetElementById(id);
  if (el) {
    el.DragEnabled = true;
    AddEventListener(el, 'mousedown', dragStart, false);
  }
  // Private Functions
  function dragStart(e) {
    if (el.DragEnabled) {
      var ev = new Event(e);
      PreventDefault(e);
      mx = ev.pageX;
      my = ev.pageY;
      AddEventListener(document, 'mousemove', drag, false);
      AddEventListener(document, 'mouseup', dragEnd, false);
      if (fS) {
        fS(el, ev.pageX, ev.pageY, ev);
      }
    }
  }
  function drag(e) {
    var ev, dx, dy;
    PreventDefault(e);
    ev = new Event(e);
    dx = ev.pageX - mx;
    dy = ev.pageY - my;
    mx = ev.pageX;
    my = ev.pageY;
    if (fD) {
      fD(el, dx, dy, ev);
    }
    else {
      MoveTo(el, Left(el) + dx, Top(el) + dy);
    }
  }
  function dragEnd(e) {
    var ev = new Event(e);
    PreventDefault(e);
    RemoveEventListener(document, 'mouseup', dragEnd, false);
    RemoveEventListener(document, 'mousemove', drag, false);
    if (fE) {
      fE(el, ev.pageX, ev.pageY, ev);
    }
    if (EnableDrag.drop) {
      EnableDrag.drop(el, ev);
    }
  }
}

EnableDrag.drops = []; // static property

function Event(evt) {
  var e=evt||window.event;
  if(!e) return;
  this.type=e.type;
  this.target=e.target||e.srcElement;
  this.relatedTarget=e.relatedTarget;
  /*@cc_on 
    if(e.type=='mouseover') 
      this.relatedTarget=e.fromElement;
    else if(e.type=='mouseout') 
      this.relatedTarget=e.toElement;
  @*/
  if(Def(e.pageX)) {
    this.pageX=e.pageX;
    this.pageY=e.pageY;
  } else if (Def(e.clientX)) {
    this.pageX=e.clientX+ScrollLeft();
    this.pageY=e.clientY+ScrollTop();
  }
  if(Def(e.offsetX)) {
    this.offsetX=e.offsetX;
    this.offsetY=e.offsetY;
  } else if(Def(e.layerX)) {
    this.offsetX=e.layerX;
    this.offsetY=e.layerY;
  } else {
    this.offsetX=this.pageX-PageX(this.target);
    this.offsetY=this.pageY-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;
      /*@cc_on 
        if(e.button&1) 
          this.button=0;
        else if(e.button&4)
          this.button=1;
        else if(e.button&2)
          this.button=2;
      @*/
    }
  }
}

//xLibrary={version:'4.18',license:'GNU LGPL',url:'http://cross-browser.com/'};

function AddEventListener(e,eT,eL,cap) {
  if(!(e=cGetElementById(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 PreventDefault(e) {
  if(e&&e.preventDefault)
    e.preventDefault();
  else if(window.event)
    window.event.returnValue=false;
}

function RemoveEventListener(e,eT,eL,cap) {
  if(!(e=cGetElementById(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 StopPropagation(evt) {
  if(evt&&evt.stopPropagation)
    evt.stopPropagation();
  else if(window.event)
    window.event.cancelBubble=true;
}

function cGetElementById(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 Def() {
  for(var i=0;i<arguments.length;++i) {
    if(typeof(arguments[i])=='undefined')
      return false;
  }
  return true;
}

function ScrollLeft(e,bWin) {
  var offset=0;
  if(!Def(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&&Def(w.document.body.scrollLeft))
      offset=w.document.body.scrollLeft;
  } else {
    e=cGetElementById(e);
    if(e&&Num(e.scrollLeft))
      offset=e.scrollLeft;
  } 
  return offset;
}

function ScrollTop(e,bWin) {
  var offset=0;
  if(!Def(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&&Def(w.document.body.scrollTop))
      offset=w.document.body.scrollTop;
  } else {
    e=cGetElementById(e);
    if(e&&Num(e.scrollTop))
      offset=e.scrollTop;
  }
  return offset;
}

function ClientWidth() {
  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(Def(w.innerWidth,w.innerHeight,d.height)) {
    v=w.innerWidth;
    if(d.height>w.innerHeight)
      v-=16;
  }
  return v;
}

function ClientHeight() {
  var v=0,d=document,w=window;
  if((!d.compatMode||d.compatMode=='CSS1Compat')&&d.documentElement&&d.documentElement.clientHeight) {
    v=d.documentElement.clientHeight;
  } else if(d.body&&d.body.clientHeight) {
    v=d.body.clientHeight;
  } else if(Def(w.innerWidth,w.innerHeight,d.width)) {
    v=w.innerHeight;
    if(d.width>w.innerWidth)
      v-=16;
  }
  return v;
}

function Str(s) {
  for(var i=0;i<arguments.length;++i) {
    if(typeof(arguments[i])!='string')
      return false;
  }
  return true;
}

function Num() {
  for(var i=0;i<arguments.length;++i) {
    if(isNaN(arguments[i])||typeof(arguments[i])!='number')
      return false;
  }
  return true;
}

function GetComputedStyle(e,p,i) {
  if(!(e=cGetElementById(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[Camelize(p)];
  } else 
    return null;
  return i?(parseInt(v)||0):v;
}

function Left(e,iX) {
  if(!(e=cGetElementById(e)))
    return 0;
  var css=Def(e.style);
  if(css&&Str(e.style.left)) {
    if(Num(iX))
      e.style.left=iX+'px';
    else {
      iX=parseInt(e.style.left);
      if(isNaN(iX))
        iX=GetComputedStyle(e,'left',1);
        if(isNaN(iX))
          iX=0;
    }
  } else if(css&&Def(e.style.pixelLeft)) {
    if(Num(iX))
      e.style.pixelLeft=iX;
    else 
      iX=e.style.pixelLeft;
  }
  return iX;
}

function Top(e,iY) {
  if(!(e=cGetElementById(e)))
    return 0;
  var css=Def(e.style);
  if(css&&Str(e.style.top)) {
    if(Num(iY))
      e.style.top=iY+'px';
    else {
      iY=parseInt(e.style.top);
      if(isNaN(iY))
        iY=GetComputedStyle(e,'top',1);
      if(isNaN(iY))
        iY=0;
    }
  } else if(css&&Def(e.style.pixelTop)){ 
    if(Num(iY))
      e.style.pixelTop=iY;
    else 
      iY=e.style.pixelTop;
  }
  return iY;
}

function MoveTo(e,x,y) {
  Left(e,x);
  Top(e,y);
}

function PageX(e) {
  var x=0;
  e=cGetElementById(e);
  while(e) {
    if(Def(e.offsetLeft))
      x+=e.offsetLeft;
    e=Def(e.offsetParent)?e.offsetParent:null;
  }
  return x;
}

function PageY(e) {
  var y=0;
  e=cGetElementById(e);
  while(e) {
    if(Def(e.offsetTop))
      y+=e.offsetTop;
    e=Def(e.offsetParent)?e.offsetParent:null;
  }
  return y;
}

function cHeight(e,h) {
  if(!(e=cGetElementById(e)))
    return 0;
  if(Num(h)) {
    if(h<0)
      h=0;
    else 
      h=Math.round(h);
  } else 
    h=-1;
  var css=Def(e.style);
  if(e==document||e.tagName.toLowerCase()=='html'||e.tagName.toLowerCase()=='body') {
    h=ClientHeight();
  } else if(css&&Def(e.offsetHeight)&&Str(e.style.height)) {
    if(h>=0) {
      var pt=0,pb=0,bt=0,bb=0;
      if(document.compatMode=='CSS1Compat') {
        var gcs=GetComputedStyle;
        pt=gcs(e,'padding-top',1);
        if(pt!==null) {
          pb=gcs(e,'padding-bottom',1);
          bt=gcs(e,'border-top-width',1);
          bb=gcs(e,'border-bottom-width',1);
        } else if(Def(e.offsetHeight,e.style.height)) {
          e.style.height=h+'px';
          pt=e.offsetHeight-h;
        }
      }
      h-=(pt+pb+bt+bb);
      if(isNaN(h)||h<0)
        return;
      else 
        e.style.height=h+'px';
    }
    h=e.offsetHeight;
  } else if(css&&Def(e.style.pixelHeight)) {
    if(h>=0)
      e.style.pixelHeight=h;
      h=e.style.pixelHeight;
  }
  return h;
}

function cWidth(e,w) {
  if(!(e=cGetElementById(e)))
    return 0;
  if(Num(w)) {
    if(w<0)
      w=0;
    else 
      w=Math.round(w);
  } else 
    w=-1;
  var css=Def(e.style);
  if(e==document||e.tagName.toLowerCase()=='html'||e.tagName.toLowerCase()=='body') {
    w=ClientWidth();
  } else if(css&&Def(e.offsetWidth)&&Str(e.style.width)) {
    if(w>=0) {
      var pl=0,pr=0,bl=0,br=0;
      if(document.compatMode=='CSS1Compat') {
        var gcs=GetComputedStyle;
        pl=gcs(e,'padding-left',1);
        if(pl!==null) {
          pr=gcs(e,'padding-right',1);
          bl=gcs(e,'border-left-width',1);
          br=gcs(e,'border-right-width',1);
        } else if(Def(e.offsetWidth,e.style.width)) {
          e.style.width=w+'px';
          pl=e.offsetWidth-w;
        }
      }
      w-=(pl+pr+bl+br);
      if(isNaN(w)||w<0)
        return;
      else 
        e.style.width=w+'px';
    }
    w=e.offsetWidth;
  } else if(css&&Def(e.style.pixelWidth)) {
    if(w>=0)
      e.style.pixelWidth=w;
    w=e.style.pixelWidth;
  }
  return w;
}

function cResizeTo(e,w,h) {
  cWidth(e,w);
  cHeight(e,h);
}

function 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;
}

// genericDiv static properties
genericDiv.nextZ = 100;
genericDiv.focused = null;
genericDiv.instances = {};