/* AccesSite JavaScript code
 * Included with AccesSite main toolbar
 * Includes AccesSite toolbar to window interface
 ***************************************************/


function wr (c) {
  document.write(c);
}

function el (id) {
  return document.getElementById(id);
}

function oldIE () {
  if (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) < 8) return true;
  return false;
}

// Create invisible overlay 
if (!window.AS_CMS_Created) {
  wr('<div id="AS_Overlay" style="display:none;"></div>' +
     '<div id="AS_Loading" class="AsLayer AsForeColor" style="display:none;">' +
       '<div class="AsWidth"><div class="AsMainContainer" id="AS_LoadingInner">' +
         '<div class="AsTitle AsForeColor">' + window.AS_text.loading + '</div>' +
         '<div class="AsMainContent AsContent"><br><img src="' + 
         window.AS_config.as_files_url + '/images/loading.gif" align="middle" alt="' +
         window.AS_text.loading + '" hspace=10> ' +
         window.AS_text.please_wait + '<br><br></div>' +
         '<div class="AsBottomRowRight">' +
           '<a href="/" title="' + window.AS_text.cancel + '" onclick="AS_StopLoading();" class="AsButton1"><span class="AsBtnBg"><span class="AsLabel">' + window.AS_text.cancel + '</span></span><span class="AsBtnEnd"></span></a>' +
         '</div>' +
         '<div class="AsClear"></div>' +
       '</div></div>' +
     '</div>' +
     '<div id="AS_Window" class="AsLayer" style="display:none;">' +
       '<iframe id="AS_Frame" frameborder="0" style="display:none;" class="AsWidth" name="AsMainFrame"></iframe>' +
     '</div>');
  
  //$("AS_Overlay").hide();
  
  // Todo: bugfix thats shows the last shown iFrame after hitting the browsers BACK button
  el("AS_Frame").style.display = "none";
  $("AS_Frame").hide();
  $("AS_Overlay").hide();
  //$("AS_Overlay").style.display = "none";
  
  //alert("Check");
  window.AS_CMS_Created = true;
}

//var PopframeHistory = "";
function AS_OpenPopframe (url,height) {
  if (!height) height = 500;

  // ToDo: Hide other elements:
  // $$('select', 'object', 'embed').each(function(node){ node.style.visibility = 'hidden' });
  //el("AS_Overlay").style.display = "";
  //overlay').hide()
  
  // Version 2.1.3: If we get called from within an AccesSite view, do not open antoher view
  if (parent && parent.AS_OpenConfigWin) { // Config mode, opens a new window
    return parent.AS_OpenConfigWin(anchor);
    }
  else if (self.name == "AsMainFrame") { // Already in an AccesSite Frame
    location.href = url;
    return false;
    }


  // stretch overlay to fill page and fade in
  var arrayPageSize = AS_getPageSize();
  //alert('test');
  $('AS_Overlay').setStyle({ width: arrayPageSize[0] + 'px', height: arrayPageSize[1] + 'px' });
  //$('AS_Overlay').style.width =  arrayPageSize[0] + 'px';
  //$('AS_Overlay').style.height =  arrayPageSize[1] + 'px';
  new Effect.Appear($("AS_Overlay"), { duration: 0.7, from: 0.0, to: 0.8 });

  //el("AS_Overlay").style.visibility = "hidden";
 
  var arrayPageScroll = document.viewport.getScrollOffsets();
  var offsetTop = (arrayPageScroll[1] + 50) + "px";

        // Doesn't work due to security
  //alert(el("AS_Frame").getAttribute('src'));
  
  //if (el("AS_Frame").src != url) {
    el("AS_Frame").src = url;
    el("AS_Window").style.top = offsetTop;
    
    //el("AS_LoadingInner").style.height = height + "px";
    el("AS_Loading").style.display = "";
    el("AS_Loading").style.top = offsetTop;
  //  }
  //else {
  //  NotifyASLoaded();
  // }
  
  // ToDo: set to visible height
  el("AS_Frame").style.height = height + "px";
  //el("AS_Frame").style.height = (height / 100) + "px";
  //el("AS_Frame").style.width = "10px";
  //new Effect.Scale($("AS_Frame"), 1, {scaleX: false, duration: 0.01, queue: 'front'}); 
  //new Effect.Scale($("AS_Frame"), 1, {scaleY: false, duration: 0.01, delay: 0.01}); 
  
  // Doesn't work because of possible navigation in frame
  //PopframeHistory = url;
  return false;
}

function AS_NotifyLoaded (MainObj) {
  $("AS_Frame").show();
  el("AS_Loading").style.display = "none";
  el("AS_Window").style.display = "";
  
  // Screen height
  var screenH = document.viewport.getDimensions().height - 100;

  // Get Height of used area in doc
  var height = MainObj.clientHeight;
  if (height > 0) {
    if (height > screenH) height = screenH;
    
    el("AS_Frame").style.height = height + "px";
    
    //new Effect.Scale($("AS_Frame"), 100, { scaleFrom: 80, scaleX: false, scaleContent:false, duration: 0.2, scaleMode: "contents" });
    
    }
  return screenH;
  //new Effect.Scale($("AS_Frame"), yScale, {scaleX: false, duration: this.resizeDuration, queue: 'front'});
  //new Effect.Scale($("AS_Frame"), 10000, {scaleX: false, duration: 0.5, queue: 'front'}); 
  //new Effect.Scale($("AS_Frame"), 50, {scaleY: false, duration: 0.5, delay: 0.2}); 
}

function AS_ClosePopframe (url) {
  new Effect.Fade(el("AS_Overlay"), { duration: 0.3 });
  el("AS_Window").style.display = "none";
  if (url) {
    //alert("Nav to " + url);
    location.href = url;
    }
  else {
    //el("AS_Overlay").style.display = "none";
    el("AS_Frame").src = "";
    }
}

function AS_StopLoading () {
  el("AS_Frame").src = "";
  new Effect.Fade(el("AS_Overlay"), { duration: 0.2 });
  el("AS_Loading").style.display = "none";
  el("AS_Window").style.display = "none";
}

/* AccesSite Edit Element Interface */
var AS_ArrangeMap = {};

function AS_SetEditElement (div_id,buttons) {

  // Create a copy of the DIV which we can use for visual feedback
  var fg_div = document.createElement('div');
  var bg_div = document.createElement('div');
  Element.extend(fg_div);
  Element.extend(bg_div);
  
  /*
  bg_div.setStyle({width:'10px'});
  fg_div.setStyle({width:'10px'});
  $('div_id').setStyle({width:'10px'});
  */

  bg_div.className = 'AsInPageBg';
  fg_div.className = 'AsInPageFg';

  var html = '<div class="AsInPageBar"><div class="AsInPageBarL"></div><div class="AsInPageBarM"><div class="AsInPageBarContent">';
  if (buttons.edit) { 
    var title = buttons.edit_text || window.AS_text.editrecord;
    html += '<a href="' + 
            buttons.edit + '" title="' + title + '" class="AsInPageBtn1" onclick="return AS_OpenPopframe(\'' + 
            buttons.edit + '\');"><span class="AsIcon2 AsEdit"></span></a>';
    }
  if (buttons['add']) { 
    var title = buttons.add_text || window.AS_text.addrecord;
    html += '<a href="' + 
            buttons.add + '" title="' + title + '" class="AsInPageBtn1" onclick="return AS_OpenPopframe(\'' + 
            buttons['add'] + '\');"><span class="AsIcon2 AsNew"></span></a>';
    }
  if (buttons['delete']) { 
    var title = buttons.delete_text || window.AS_text.deleterecord;
    html += '<a href="' + 
            buttons['delete'] + '" title="' + title + '" class="AsInPageBtn1" onclick="return AS_OpenPopframe(\'' + 
            buttons['delete'] + '\');"><span class="AsIcon2 AsDelete"></span></a>';
    }
  if (buttons['moveup']) { 
    html += '<a href="' + 
            buttons.moveup + '" title="' + window.AS_text.move + ' ' + window.AS_text.up + '" class="AsInPageBtn2" onclick="return AS_OpenPopframe(\'' + 
            buttons['moveup'] + '\');"><span class="AsIcon2 AsMoveUp"></span></a>';
    }
  if (buttons['disabled_moveup']) { 
    html += '<span class="AsInPageBtn2" title="' + window.AS_text.max_moveup + '"><span class="AsIcon2 AsMoveUpDisabled"></span></span>';
    }
  if (buttons['movedown']) { 
    html += '<a href="' + 
            buttons.movedown + '" title="' + window.AS_text.move + ' ' + window.AS_text.down + '" class="AsInPageBtn2" onclick="return AS_OpenPopframe(\'' + 
            buttons['movedown'] + '\');"><span class="AsIcon2 AsMoveDown"></span></a>';
    }
  if (buttons['disabled_movedown']) { 
    html += '<span class="AsInPageBtn2" title="' + window.AS_text.max_movedown + '"><span class="AsIcon2 AsMoveDownDisabled"></span></span>';
    }
  
  html += '</div></div></div>';

  if ($(div_id).className == "AsInPage") {
    $(div_id).insert(html);
    }
  else {
    fg_div.insert(html);
    document.body.appendChild(bg_div);
    document.body.appendChild(fg_div);
    AS_ArrangeMap[div_id] = {
      bg_div: bg_div,
      fg_div: fg_div
      };
      
    
    AS_ClonePosition(bg_div,$(div_id),{setHeight:true,setWidth:true});//,{offsetLeft:-1,offsetTop:-1});
    AS_ClonePosition(fg_div,$(div_id),{
      setHeight:false,
      setWidth:false,
      offsetTop:(bg_div.getHeight() - 46),
      offsetLeft:(bg_div.getWidth() - fg_div.getWidth())
      });
    //fg_div.setStyle({marginTop:(fg_div.getHeight() - 40) + 'px'});//,paddingRight:'10px'});

    //alert('test');

    bg_div.observe("click", function() { 
      bg_div.hide();
      });
    bg_div.observe("mouseover", function() { 
      bg_div.hide();
      });
    $(div_id).observe("mouseout", function() { 
      bg_div.show();
      });
    fg_div.observe("mouseover", function() { 
      bg_div.show();
      });
    fg_div.observe("mouseout", function() { 
      bg_div.show();
      });
    }
}


Event.observe(document.onresize ? document : window, "resize", function() {
  As_Arrange();
});
if (oldIE()) {
  Event.observe(window, "load", function() {
    self.setTimeout("As_Arrange()",250);
    });
}

function As_Arrange () {
  for (var div in AS_ArrangeMap) {
    AS_ClonePosition($(AS_ArrangeMap[div].bg_div),$(div));
    AS_ClonePosition($(AS_ArrangeMap[div].fg_div),$(div),{
      setHeight:false,
      setWidth:false,
      offsetTop:($(AS_ArrangeMap[div].bg_div).getHeight() - 46),
      offsetLeft:($(AS_ArrangeMap[div].bg_div).getWidth() - $(AS_ArrangeMap[div].fg_div).getWidth())
      });
    }

}


function AS_ClonePosition (o1,o2,arg) {
  if (oldIE()) {
    if (typeof(arg) == "undefined") arg = {};
    if (typeof(arg.setWidth) == "undefined") arg.setWidth = true;
    if (typeof(arg.setHeight) == "undefined") arg.setHeight = true;
    if (typeof(arg.offsetTop) == "undefined") arg.offsetTop = 0;
    if (typeof(arg.offsetLeft) == "undefined") arg.offsetLeft = 0;
    // Old IE
/*
    var x = 0;
    var y = 0;
    var oo = o2;

    while (oo) {
      if (oo.offsetTop) {
          y += parseInt(oo.offsetTop);
          }
      if (oo.style.position != "absolute") {
        if (oo.offsetLeft) {
          x += parseInt(oo.offsetLeft);
          }
        }
      alert(oo.tagName + " (" + oo.id + "/" + oo.style['float'] + ") " + oo.offsetTop + " : " + oo.offsetLeft + " --> " + oo.parentElement.id);
      oo = oo.parentElement;
      if (oo && oo.tagName == "BODY") oo = false;
      }
    y += arg.offsetTop;
    x += arg.offsetLeft;
*/
    var coords = o2.cumulativeOffset();
    var x = coords.left + arg.offsetLeft;
    var y = coords.top + arg.offsetTop;
    o1.style.top = y + "px";
    o1.style.left = x + "px"; 
    //if (arg.setWidth == true)  
    o1.style.width  = o2.getWidth()  + "px";//.style.width;
    if (arg.setHeight == true) o1.style.height = o2.getHeight() + "px";//.style.height;
    }
  else {
    return o1.clonePosition(o2,arg);
    }	
}



