function FixChildSizes(e){
  var mmList = e.getElementsByTagName("div"); 
  for (var i=0; i<mmList.length; i++){
    var mm = mmList[i];
    if (mm.getAttribute){
      if (mm.getAttribute("FixHeight")) {
        mm.style.height = '1px';
	    mm.style.height = mm.parentNode.clientHeight*(mm.getAttribute("FixHeight")/100)-4;
      }
      if (mm.getAttribute("FixWidth")) {
        var bw = mm.parentNode.offsetWidth - mm.parentNode.clientWidth;
        mm.style.width = '1px';
	    mm.style.width = (mm.parentNode.clientWidth-bw)*(mm.getAttribute("FixWidth")/100)-4;
      }
    }
  }
}

function FixDocumentSizes(){ 
  FixChildSizes(document);
}    

if (window.addEventListener){
  window.addEventListener("load", FixDocumentSizes, false);
}  
else 
  if (window.attachEvent)
    window.attachEvent("onload",FixDocumentSizes);

function createReq(){
  var httprequest=false
  if (window.XMLHttpRequest){ // if Mozilla, Safari etc
    httprequest=new XMLHttpRequest()
    if (httprequest.overrideMimeType)
      httprequest.overrideMimeType('text/plain');
  } 
  else if (window.ActiveXObject){ // if IE
    try {
      httprequest=new ActiveXObject("MSXML3.XMLHTTP")
    }
    catch (e) {
      try {
        httprequest=new ActiveXObject("Msxml2.XMLHTTP");
      } 
      catch (e){
        try{
          httprequest=new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (e){
          try{
            httprequest=new ActiveXObject("MSXML2.XMLHTTP.3.0");
          }
          catch (e){}
        }
      }
    }
  }
  return httprequest
}         

function RemoteText(e,url){
  if (typeof e == 'string')
    e = document.getElementById(e);
  if (e == null)
    return;
  if ((e.req) && (e.req.abort)) {                 //IE7 has a bug which can evaluate (e.reg) = true when e.reg is null
    e.req.abort();
    e.req = null;
  }
  e.req = new createReq();
  e.req.onreadystatechange = function(){
    if (e.req.readyState == 4){ //if finished
      try {
        if (e.req.status == 200){ //if HTTP OK
          e.innerHTML = e.req.responseText;
          FixChildSizes(e);
          if (e.getAttribute('onRemoteDone'))
            setTimeout(e.getAttribute('onRemoteDone'),1);
          var c = e.firstChild;
          if ((c) && (c.getAttribute) && (c.getAttribute('onRemoteDone')))
            setTimeout(c.getAttribute('onRemoteDone'),1);
        } else { //HTTP Failed
          e.innerHTML = '<img src="/images/Broken.gif"/>';
        }
      } catch(err){
          e.innerHTML = '<img src="/images/Broken.gif"/>';
      }
      e.req = null;
    } else { //Show State
      e.innerHTML = '<img src="/images/Wait2.gif"/>'; //e.req.readyState + ' / 4';
    }
  }  
  try{
    e.req.open('GET',url,true);
    e.req.setRequestHeader("If-Modified-Since", new Date(0)); //Force IE not to cache the result
    e.req.send(null);
  }catch(err){ //Show Error, normaly access violation
    if (typeof err == "string")
      e.innerHTML = err
    else
      e.innerHTML = "Request Failed";
  }  
}

function ExtractFormURIs(form, firstChar){
  var res = "";                                    
  var val = "";
  if (!firstChar)
    var c = '?';
  else
    var c = firstChar;  
  var b = false;
  var ECount = form.elements.length;
  for (var i=0; i<ECount; i++){
    var e = form.elements[i];
    val = encodeURIComponent(e.value);
    b = (val !=''); 
    if (e.type == "select-multiple") {
      for (var ii=0; ii<e.options.length; ii++){
        var o = e.options[ii];
        if (o.selected) {
          res += c + e.name +'=' + o.value;
        }
      }
      b = false;
    }
    if ((e.type == "checkbox") || (e.type == "radio"))
      b = e.checked;
    if (b == true) {
      res += c + e.name +'='+ val;
      c = '&';
    }  
  }
  return res;
}  

function PartialGet(aform, targetTag){
  if (typeof targetTag == 'string')
    targetTag = document.getElementById(targetTag);
  if (!targetTag)
    return false;
  var u = ExtractFormURIs(aform);
  u = aform.action + u;
  RemoteText(targetTag,u)
  return false;
}

/*if (window.addEventListener)
  window.addEventListener("resize", FixDocumentSizes, false);*/

