var w3 = !!(document.getElementById && document.createElement);

// Opens a link in a new window when class = externalLink
function doPopups() {
    if (!document.getElementsByTagName) return false;
    var links = document.getElementsByTagName("a");
    for (var i=0; i < links.length; i++) {
        if (links[i].className.match("externalLink")) {
            links[i].className = links[i].className + " newWinStyle";
            if (links[i].title == "") {
                links[i].title = "(new window)";
            }
            else {
                links[i].title = links[i].title + " (new window)";
            }
            links[i].onclick = function(e) {
            if(!e)e=window.event;
            if(e.shiftKey || e.ctrlKey || e.altKey) return;
            window.open(this.href);
            return false;
            }
        }
    }
}

var printPage = {
    init: function()
    {
        if (!w3) return;
        var container = document.getElementById('print-page');
        var link = container.appendChild(document.createElement('a'));
        link.href = '#';
        link.appendChild(document.createTextNode('Print this page'));
        addEvent(link, 'click', printPage.handleClick, false);
    },
    handleClick: function()
    {
        window.print();
    }
}

var addToFavourites = {
    init: function()
    {
        if (!w3) return;
        var container = document.getElementById('favourites');
        var link = container.appendChild(document.createElement('a'));
        link.href = '#';
        link.appendChild(document.createTextNode('Add to Favourites'));
        addEvent(link, 'click', addToFavourites.handleClick, false);
    },
    handleClick: function()
    {
       var pageName = document.title
       var urlAddress =  location.href           		    
	    if (window.external) 
	    { 
	        window.external.AddFavorite(urlAddress,pageName) ;
	    } 
	    else 
	    { 
		    alert('Sorry! Your browser does not support this function.'); 
	    }
    }
}

var toggleFields = {
    init: function() {
        if (!w3) return;
        toggleFields.linkContainer = document.getElementById('linkContainer');
        if (toggleFields.linkContainer == null) return;
        toggleFields.execute();
    },
    execute: function() {
        toggleFields.toggle = toggleFields.linkContainer.appendChild(document.createElement('a'));
        toggleFields.toggle.href = '#';
        toggleFields.toggle.appendChild(document.createTextNode('Hide optional fields?'));
        addEvent(toggleFields.toggle, 'click', toggleFields.handleClick, false);
    },
    handleClick: function(e) {
        var element = e.target || e.srcElement;
        if (/hide/i.exec(element.firstChild.nodeValue)) {
            toggleFields.hide(element);
        }
        else {
            toggleFields.show(element);
        }
        return false;
    },
    hide: function(el) {
        el.firstChild.nodeValue = 'Display optional fields?';
		var stormform = getElementsByClass('stormform', document, null);
		AddClassName(stormform[0], 'remove', true);
        RemoveClassName(stormform[0], 'display');
    },
    show: function(el) {
        el.firstChild.nodeValue = 'Hide optional fields?';
		var stormform = getElementsByClass('stormform',document, null);
        AddClassName(stormform[0], 'display', true);
        RemoveClassName(stormform[0], 'remove');
    }
}

/*******************
    Utils
*******************/

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function AddClassName(objElement, strClass, blnMayAlreadyExist) {
      
   if ( objElement.className ) {
      var arrList = objElement.className.split(' ');
      if (blnMayAlreadyExist) {
         var strClassUpper = strClass.toUpperCase();
         for ( var i = 0; i < arrList.length; i++ ) {
            if ( arrList[i].toUpperCase() == strClassUpper ) {
               arrList.splice(i, 1);
               i--;
            }
         }
      }
      arrList[arrList.length] = strClass;
      objElement.className = arrList.join(' ');
   }
   else {
      objElement.className = strClass;
   }
}

function RemoveClassName(objElement, strClass) {
   if ( objElement.className ) {
      var arrList = objElement.className.split(' ');
      var strClassUpper = strClass.toUpperCase();
      for ( var i = 0; i < arrList.length; i++ ) {
         if ( arrList[i].toUpperCase() == strClassUpper ) {
            arrList.splice(i, 1);
            i--;
         }
      }
      objElement.className = arrList.join(' ');
   }
}

function addEvent(elm, evType, fn, useCapture) {
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	}
	else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	}
	else {
		elm['on' + evType] = fn;
	}
}

/***************************
    Window loads events
****************************/

addEvent(window,'load',doPopups,false);
addEvent(window,'load',toggleFields.init, false);
addEvent(window,'load',printPage.init, false);
addEvent(window,'load',addToFavourites.init, false);