/* require "prototype.js", "scriptaculous.js", "effects.js", "dragdrop.js" */

function externalLinks() {
  //$$("a[rel=external]").each(function(anchor) { // available in prototype 1.5 
  $A(document.getElementsByTagName("a")).each(function(anchor) { 
    if (anchor.rel == "external") {
        anchor.target = "_blank";
        if (anchor.title.length == 0) {
        anchor.title = "Öffnet in neuem Fenster";
      }
    }
  });
}

function blurLinksOnClick() {
  $A(document.getElementsByTagName("a")).each(function(a){
  //$$("a").each(function(a) { // available in prototype 1.5 
    var a_onclick = a.onclick;
    a.onclick = function() {
      if (a_onclick instanceof Function) a_onclick.call(this);
      this.blur();
    };
  });
}

function minimize(elem) {
  if (Element.visible(elem)) Effect.BlindUp(elem, { duration: 0.5, queue: { position: "end", scope: 'minmax' }}); 
}
function maximize(elem) {
  if (!Element.visible(elem)) Effect.BlindDown(elem, { duration: 0.5, queue: { position: "end", scope: 'minmax' }}); 
}
function toggleVisibility(elem, doNotAnimate) { 
   var animate = !doNotAnimate;
   Element.visible(elem) ? 
      (animate ? minimize(elem) : Element.hide(elem)) :
      (animate ? maximize(elem) : Element.show(elem)); 
}
function bring2front(elem) {
   if (document.biggestZIndex == null) document.biggestZIndex = 1000;
   elem.style.zIndex = document.biggestZIndex += 1;
}

function provideDraggableMinimizableBoxes() {
   var leftMargin = 25;
   var topMargin = 25;
   var yDistance = 50;

   // Boxen geschlossen untereinander platzieren
   var rearrange = function() { 
      var y = topMargin;
      $A(document.getElementsByClassName('box', $('wrap'))).each(function(box) {
         Element.hide(document.getElementsByClassName('content', box)[0]);
         box.style.top = y + "px";
         box.style.left = leftMargin + "px";
         box.style.position = "absolute";
         y += yDistance;
      });
   };

   // Bei Click auf H1 zurürck zur Ursprungsdarstellung
   var h1 = document.getElementsByTagName('h1')[0];
   h1.style.cursor = 'pointer';
   h1.title = 'Zurück zur Ursprungsdarstellung';
   h1.onclick = rearrange;

   // Boxen verschieb-, minimier- und maximierbar machen
   document.getElementsByClassName('box').each(function(box) {
      var h2 = box.getElementsByTagName('h2')[0];
      var content = document.getElementsByClassName('content', box)[0];
      var btnMinimize = Builder.node('div', { style: 
         'width:20px;height:20px;position:absolute;cursor:pointer;top:-21px;right:20px' });
      var dbox = new Draggable(box, { handle: h2, starteffect: null, endeffect: null, zindex: null });

      content.onmousedown = function() { bring2front(box); };
      btnMinimize.onclick = function() { toggleVisibility(content); bring2front(box); };
      h2.onmousedown = function() { this.nodrag = true; bring2front(box); };
      h2.onmousemove = function() { this.nodrag = false; };
      h2.onmouseup = function() { if (this.nodrag) toggleVisibility(content); };

      box.appendChild(btnMinimize);
      Element.hide(content);
      h2.style.cursor = 'move';
      h2.title = "Box verschieben mit gedrückter Maustaste oder öffnen bzw. schließen mit Mausklick";
      btnMinimize.title = "Box öffnen bzw. schließen mit Mausklick";
   });
   rearrange();
}

function provideContactFormAjaxRequest() {
   var submitBtn = document.getElementsByClassName('submit', $('contact-form'))[0];
   var submitBtnValue = submitBtn.value;
   Element.hide('contact-notice');
   $('contact-form').onsubmit = function() {
      new Ajax.Request('contact.php', { 
         onSuccess: function(transport) {
            if (transport.responseText.match(/class="info"/)) {
               $('contact-name').value = ""; 
               $('contact-email').value = "";
               $('contact-message').value = "";
            };
            submitBtn.value = submitBtnValue;
            submitBtn.disabled = false;
            Element.removeClassName(submitBtn, 'disabled');

            Element.update('contact-notice', transport.responseText);

            $delay = Math.round(transport.responseText.length / 20);
            new Effect.Appear('contact-notice', { duration: 0.5 });
            new Effect.Fade('contact-notice', { delay: $delay, duration: 0.5 });
         },
         onLoading: function() {
            submitBtn.value = "sende ...";
            submitBtn.disabled = true;
            Element.addClassName(submitBtn, 'disabled');
         },
         parameters: Form.serialize(this) 
      }); 
      return false;
   }
}

function getTag(name) {
   return $(document.getElementsByTagName(name)[0]);
}
function hidePage() {
   getTag('body').style.visibility = "hidden";
}
function showPage() {
   getTag('body').style.visibility = "visible";
}

// ------------------------------

hidePage();

