var layer = new Array();

function getLayer(p_rootdir, p_boxname, p_closetext) {
  var div1, div2, button;

  div2 = document.createElement("DIV");
  div2.className = 'layer_body';
  div2.style.display = 'none';

	div1 = document.createElement("DIV");
  div1.className = 'layer_top';
  div2.appendChild(div1);
	
  div1 = document.createElement("DIV");
  div1.className = 'layer_buttons';
	
  button = document.createElement("INPUT");
  button.className = 'button_close';
  button.type = 'button';
  button.value = p_closetext;
  button.onclick = function() { closeLayer() }
  div1.appendChild(button);
  div2.appendChild(div1);

  div1 = document.createElement("DIV");
  div1.className = 'layer_content';
  div1.id = 'layer_content';
  div1.align = 'left';
  div1.rootdir = p_rootdir;
  div1.boxname = p_boxname;
  div2.appendChild(div1);

  div1 = document.createElement("DIV");
  div1.className = 'layer_bottom';
  div2.appendChild(div1);

  var yScroll;

  if (self.pageYOffset) {
    yScroll = self.pageYOffset;
  } else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
    yScroll = document.documentElement.scrollTop;
  } else if (document.body) {// all other Explorers
    yScroll = document.body.scrollTop;
  }

  div1 = document.createElement("DIV");
  div1.className = 'layer_background';
  div1.style.top = yScroll + 'px';
  layer[0] = document.body.appendChild(div1);

  div1 = document.createElement("DIV");
  div1.className = 'layer_container';
  div1.style.top = yScroll + 'px';
  div1.align = 'center';
  div1.appendChild(div2);

  layer[1] = document.body.appendChild(div1);

  document.body.style.width = '100%';
  document.body.style.height = '100%';
  document.body.style.overflow = 'hidden';

  searchCombo('hidden');

  AjaxRequest.get({
    'url'        : p_rootdir + '_application/provider/get_box_for_layer/?box=' + p_boxname,
    'onSuccess'  : function(req) { processResponse(req); },
    'onError'    : function() {}
  });
}

function processResponse(req) {
  var layer_content = document.getElementById('layer_content');
  if (req.responseText != null) {
    layer_content.innerHTML = req.responseText.replace(/..\/..\/..\//, layer_content.rootdir);
    var links = layer_content.getElementsByTagName('A');
    var href;
    for (var i=0;i<links.length;i++) {
      links[i].onclick = function () { refreshLayer(this);return false; }
    }
  }
  layer_content.parentNode.style.display = '';
  layer_content.parentNode.style.marginTop = ((layer_content.parentNode.parentNode.clientHeight - layer_content.parentNode.offsetHeight) / 2) + 'px';
}

function refreshLayer(p_this) {
  var layer_content = document.getElementById('layer_content');
  var href = p_this.getAttribute('href');
  href = href.split("?");
  href = href[1];
  p_this.href = '#';
  var inputs = layer_content.getElementsByTagName('INPUT');
  for (var i=0;i<inputs.length;i++) {
    href = href + '&' + inputs[i].name + '=' + encodeURIComponent( inputs[i].value );
  }

  AjaxRequest.get({
    'url'        : layer_content.rootdir + '_application/provider/get_box_for_layer/?box=' + layer_content.boxname + '&' + href,
    'onSuccess'  : function(req) { processResponse(req); },
    'onError'    : function() {}
  });
}

function postLayerForm(p_this) {
  var layer_content = document.getElementById('layer_content');
  var href = p_this.getAttribute('name') + '=1';
  var inputs = layer_content.getElementsByTagName('INPUT');
  for (var i=0;i<inputs.length;i++) {
    href = href + '&' + inputs[i].name + '=' + encodeURIComponent( inputs[i].value );
  }
  
  var textareas = layer_content.getElementsByTagName('TEXTAREA');
  for (var i=0;i<textareas.length;i++) {
    href = href + '&' + textareas[i].name + '=' + encodeURIComponent( textareas[i].value );
  }

  AjaxRequest.get({
    'url'        : layer_content.rootdir + '_application/provider/get_box_for_layer/?box=' + layer_content.boxname + '&' + href,
    'onSuccess'  : function(req) { processResponse(req); },
    'onError'    : function() {}
  });
}

function postCloseLayer() {
  var layer_content = document.getElementById('layer_content');
  var inputs = layer_content.getElementsByTagName('INPUT');
  var href = '';
  for (var i=0;i<inputs.length;i++) {
    href = href + '&' + inputs[i].name + '=' + encodeURIComponent( inputs[i].value );
  }

  try {
    // Moz supports XMLHttpRequest. IE uses ActiveX. 
    // browser detction is bad. object detection works for any browser
    xmlhttp = window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject('Microsoft.XMLHTTP');
    xmlhttp.open('GET', layer_content.rootdir + '_application/provider/get_box_for_layer/?box=' + layer_content.boxname + href, false);
    xmlhttp.send(null);
    if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
      result = unescape(xmlhttp.responseText);
    }
  } catch (e) {
   // browser doesn't support ajax. handle however you want
  }

  closeLayer();
}

function closeLayer() {
  document.body.style.width = 'auto';
  document.body.style.height = 'auto';
  document.body.style.overflow = 'auto';

  searchCombo('visible');

  document.body.removeChild(layer[0]);
  document.body.removeChild(layer[1]);
}

function searchCombo(p_visibility) {
  var sAgent = navigator.userAgent.toLowerCase() ;

  if ( /*@cc_on!@*/false && sAgent.indexOf("mac") == -1 )
  {
    var sBrowserVersion = navigator.appVersion.match(/MSIE (.\..)/)[1] ;
    if ( sBrowserVersion  < 7.0 ) {
      var combos = document.getElementsByTagName("SELECT");
      for (var i=0;i<combos.length;i++) {
        combos[i].style.visibility = p_visibility;
      }
    }
  }
}

