/**
 * domready.js
 * 
 * Cross browser mozilla's 'onDOMContentLoaded' implementation.
 * Executes a function when the dom tree is loaded without waiting for images.
 * 
 * Based on +Element.Events.domready+ from Mootools open source project, 
 * this tiny javascript library adds the emulated 'DOMContentLoaded' functionality.
 */

if (typeof Event == 'undefined') Event = new Object();

Event.domReady = {
  add: function(fn) {
    
    //-----------------------------------------------------------
    // Already loaded?
    //-----------------------------------------------------------
    if (Event.domReady.loaded) return fn();
    
    //-----------------------------------------------------------
    // Observers
    //-----------------------------------------------------------
    var observers = Event.domReady.observers;
    if (!observers) observers = Event.domReady.observers = [];
    // Array#push is not supported by Mac IE 5
    observers[observers.length] = fn;
    
    //-----------------------------------------------------------
    // domReady function
    //-----------------------------------------------------------
    if (Event.domReady.callback) return;
    Event.domReady.callback = function() {
      if (Event.domReady.loaded) return;
      
      Event.domReady.loaded = true;
      if (Event.domReady.timer) {
        clearInterval(Event.domReady.timer);
        Event.domReady.timer = null;
      }
      
      var observers = Event.domReady.observers;
      for (var i = 0, length = observers.length; i < length; i++) {
        var fn = observers[i];
        observers[i] = null;
        fn(); // make 'this' as window
      }
      Event.domReady.callback = Event.domReady.observers = null;
    };
    
    //-----------------------------------------------------------
    // Emulates 'onDOMContentLoaded'
    //-----------------------------------------------------------
    var ie = !!(window.attachEvent && !window.opera);
    var webkit = navigator.userAgent.indexOf('AppleWebKit/') > -1;
    
    if (document.readyState && webkit) {
      
      // Apple WebKit (Safari, OmniWeb, ...)
      Event.domReady.timer = setInterval(function() {
        var state = document.readyState;
        if (state == 'loaded' || state == 'complete') {
          Event.domReady.callback();
        }
      }, 50);
      
    } else if (document.readyState && ie) {
      
      // Windows IE 
      var src = (window.location.protocol == 'https:') ? '://0' : 'javascript:void(0)';
      document.write(
        '<script type="text/javascript" defer="defer" src="' + src + '" ' + 
        'onreadystatechange="if (this.readyState == \'complete\') Event.domReady.callback();"' + 
        '><\/script>');
      
    } else {
      
      if (window.addEventListener) {
        // for Mozilla browsers, Opera 9
        document.addEventListener("DOMContentLoaded", Event.domReady.callback, false);
        // Fail safe 
        window.addEventListener("load", Event.domReady.callback, false);
      } else if (window.attachEvent) {
        window.attachEvent('onload', Event.domReady.callback);
      } else {
        // Legacy browsers (e.g. Mac IE 5)
        var fn = window.onload;
        window.onload = function() {
          Event.domReady.callback();
          if (fn) fn();
        }
      }
      
    }
    
  }
}

var _gaq = _gaq || [];
_gaq.push(
    [ "_setAccount", "UA-543529-1" ],
    [ "_gat._anonymizeIp" ],
    [ "_addIgnoredOrganic", "snowforce" ],
    [ "_addIgnoredOrganic", "snowforce com" ],
    [ "_addIgnoredOrganic", "snowforce.com" ],
    [ "_addIgnoredOrganic", "snowforce.de" ],
    [ "_addIgnoredOrganic", "www.snowforce.com" ],
    [ "_addIgnoredOrganic", "www.snowforce.de" ],
    [ "_trackPageview" ]
);

(function() {
    var ga = document.createElement('script');
    ga.type = 'text/javascript';
    ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(ga, s);
})();

Event.domReady.add(function() {
    if(!document.getElementsByTagName) return;
    
    var handler = function(event) {
        event = event || window.event;
        var link;
        
        if(event.srcElement) {
            // IE insanity
            link = event.srcElement;
            
            while(link && link.tagName != 'A') {
                link = link.parentElement;
            }
        }
        else {
            link = event.currentTarget;
        }
        
        if(!link || !link.href) return;
        
        var match = link.href.match(/^http:\/\/([A-Za-z0-9.-]+)/);
        
        if(match) {
            _gaq.push([ '_trackEvent', 'Outlink', 'Click', match[1] ]);
        }
    };
    
    var links = document.getElementsByTagName('a');
    
    for(var i=0; i<links.length; ++i) {
        var link = links[i];
        if(!link.href) continue;
        var match = link.href.match(/^http:\/\/([A-Za-z0-9.-]+)/);
        
        if(match) {
            var host = match[1];
            
            if(host != 'www.snowforce.com' && host != 'snowforce.com' && host != 'sf.intranet.aevum.de') {
                if(link.addEventListener) {
                    link.addEventListener('click', handler, false);
                }
                else if(link.attachEvent) {
                    link.attachEvent('onclick', handler);
                }
            }
        }
    }
});

/* Spam protection */

function mailto(arg1, arg2)
{
    var addr = 'mailto:';

    if (arg2 == null) {
        var linkElement = arg1;
        var childNodes = linkElement.childNodes;

        for (var i=0; i<childNodes.length; ++i) {
            var child = childNodes[i];

            if (child.nodeType == 3) {
                addr += child.data;
            }
        }
    }
    else {
        addr += arg1 + '@' + arg2;
    }

    location.href = addr;
}


