﻿function addOnloadEvent(){
	if ( typeof window.addEventListener != "undefined" ) {
		window.addEventListener( "load", externalLinks, false );
		window.addEventListener( "load", imgHover, false );
		window.addEventListener( "load", inputHover, false );
	}
	else if ( typeof window.attachEvent != "undefined" ) {
		window.attachEvent( "onload", externalLinks );
		window.attachEvent( "onload", imgHover );
		window.attachEvent( "onload", inputHover );
	}
	else {
		if ( window.onload != null ) {
			var oldOnload = window.onload;
			window.onload = function ( e ) {
				oldOnload( e );
				window[externalLinks]();
				window[imgHover]();
				window[inputHover]();
			};
		}
		else {
			window.onload = externalLinks;
			window.onload = imgHover;
			window.onload = inputHover;
		}
	}
}


var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			   string: navigator.userAgent,
			   subString: "iPhone",
			   identity: "iPhone/iPod"
	    },
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();
var browser = BrowserDetect.browser;

function externalLinks() {
	if (!document.getElementsByTagName) return;
	var anchors = document.getElementsByTagName("a");
	for (var i=0; i<anchors.length; i++) {
		var anchor = anchors[i];
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external") anchor.target = "_blank";
	}
}

function getKeyBySrc(src,imgArray) {
	for (var b=0; b<imgArray.length; b++) {
		if (imgArray[b].src == src) {
			return b;
		}
	}
}

function imgHover() {
	if (!document.getElementsByTagName) return;
	var arrImgTags = document.getElementsByTagName("img");
	var arrImgClassName = new Array();
	var arrImgSearchString = new Array();
	var arrImgSplitClassName = new Array();
	var arrImgSrc = new Array();
	var arrImgWay = new Array();
	var arrImgImgFolder = new Array();
	var arrImgSplitName = new Array();
	var arrImgImgName = new Array();
	var arrImgImgNameH = new Array();
	var arrImgImgExt = new Array();
	for (var i=0; i<arrImgTags.length; i++) {
		arrImgClassName[i] = arrImgTags[i].getAttribute("class");
		if (arrImgClassName[i] == '' || arrImgClassName[i] == null) {
			arrImgClassName[i] = arrImgTags[i].getAttribute("className");
		}
		if ((arrImgClassName[i] != undefined) || (arrImgClassName[i] != null)) {
			var myRegExp = ' ';
			arrImgSearchString[i] = arrImgClassName[i].search(myRegExp);
			if (arrImgSearchString[i] > 0) {
				arrImgSplitClassName[i] = arrImgClassName[i].split(" ");
				if (arrImgSplitClassName[i].length > 1) {
					for (var z=0; z<arrImgSplitClassName[i].length; z++) {
						if (arrImgSplitClassName[i][z] == "imghover") {
							arrImgClassName[i] = arrImgSplitClassName[i][z];
							break;
						} else {
							arrImgClassName[i] = "";
						}
					}
				}
			}
		}
		if (arrImgTags[i].getAttribute("src") && arrImgClassName[i] == "imghover") {
			arrImgSrc[i] = arrImgTags[i].getAttribute("src");
			arrImgWay[i] = arrImgSrc[i].split("/");
			arrImgImgFolder[i] = "";
			for (var w=0; w<arrImgWay[i].length; w++) {
				if (w<(arrImgWay[i].length-1)) {
					if (w == 0) {
						arrImgImgFolder[i] = arrImgWay[i][w];
					} else {
						arrImgImgFolder[i] = arrImgImgFolder[i]+"/"+arrImgWay[i][w];
					}
				} else if (w=(arrImgWay[i].length-1)) {
					arrImgSplitName[i] = arrImgWay[i][w].split(".");
					arrImgImgName[i] = arrImgSplitName[i][0];
					arrImgImgNameH[i] = arrImgSplitName[i][0]+"_h";
					arrImgImgExt[i] = arrImgSplitName[i][1];
				}
			}
			function mouseOver() {
				var i = getKeyBySrc(this.src,arrImgTags);
				this.src = arrImgImgFolder[i]+"/"+arrImgImgNameH[i]+"."+arrImgImgExt[i];
			}
			function mouseOut() {
				var i = getKeyBySrc(this.src,arrImgTags);
				this.src = arrImgImgFolder[i]+"/"+arrImgImgName[i]+"."+arrImgImgExt[i];
			}
			arrImgTags[i].onmouseover = mouseOver;
			arrImgTags[i].onmouseout = mouseOut;
		}
	}
}

function getKeyByBgImg(bgImg,imgArray) {
	for (var b=0; b<imgArray.length; b++) {
		if (imgArray[b].currentStyle) {
			bgImage = imgArray[b].currentStyle.backgroundImage;
		}
		else {
			bgImage = getComputedStyle(imgArray[b],'').getPropertyValue('background-image');
		}
		if (bgImage == bgImg) {
			return b;
		}
	}
}

function inputHover() {
	if (!document.getElementsByTagName) return;
	var arrInputTags = document.getElementsByTagName("input");
	var arrInputClassName = new Array();
	var arrImgSearchString = new Array();
	var arrInputSplitClassName = new Array();
	var arrInputBackground = new Array();
	
	var arrImgSrc = new Array();
	
	var arrInputImgWay = new Array();
	var arrInputImgFolder = new Array();
	var arrInputSplitName = new Array();
	var arrInputImgName = new Array();
	var arrInputImgNameH = new Array();
	var arrInputImgExt = new Array();
	for (var i=0; i<arrInputTags.length; i++) {
		arrInputClassName[i] = arrInputTags[i].getAttribute("class");
		if (arrInputClassName[i] == '' || arrInputClassName[i] == null) {
			arrInputClassName[i] = arrInputTags[i].getAttribute("className");
		}
		if ((arrInputClassName[i] != undefined) || (arrInputClassName[i] != null)) {
			var myRegExp = ' ';
			arrImgSearchString[i] = arrInputClassName[i].search(myRegExp);
			if (arrImgSearchString[i] > 0) {
				arrInputSplitClassName[i] = arrInputClassName[i].split(" ");
				if (arrInputSplitClassName[i].length > 1) {
					for (var z=0; z<arrInputSplitClassName[i].length; z++) {
						if (arrInputSplitClassName[i][z] == "inputhover") {
							arrInputClassName[i] = arrInputSplitClassName[i][z];
							break;
						} else {
							arrInputClassName[i] = "";
						}
					}
				}
			}
		}
		if (arrInputClassName[i] == "inputhover") {
			if (arrInputTags[i].currentStyle) {
				/*IE Opera */
				// alert(arrInputTags[i].currentStyle.backgroundImage);
				arrInputBackground[i] = arrInputTags[i].currentStyle.backgroundImage;
			}
			else {
				/*Firefox and Safari needs the full css code to work */
				// alert(getComputedStyle(arrInputTags[i],'').getPropertyValue('background-image'));
				arrInputBackground[i] = getComputedStyle(arrInputTags[i],'').getPropertyValue('background-image');
			}
			arrInputBackground[i] = arrInputBackground[i].replace('url("','')
			arrInputBackground[i] = arrInputBackground[i].replace('")','')
			arrInputImgWay[i] = arrInputBackground[i].split("/");
			arrInputImgFolder[i] = "";
			for (var w=0; w<arrInputImgWay[i].length; w++) {
				if (w<(arrInputImgWay[i].length-1)) {
					if (w == 0) {
						arrInputImgFolder[i] = arrInputImgWay[i][w];
					} else {
						arrInputImgFolder[i] = arrInputImgFolder[i]+"/"+arrInputImgWay[i][w];
					}
				} else if (w=(arrInputImgWay[i].length-1)) {
					arrInputSplitName[i] = arrInputImgWay[i][w].split(".");
					arrInputImgName[i] = arrInputSplitName[i][0];
					arrInputImgNameH[i] = arrInputSplitName[i][0]+"_h";
					arrInputImgExt[i] = arrInputSplitName[i][1];
				}
			}
			function mouseOver() {
				if (this.currentStyle) {
					bgImage = this.currentStyle.backgroundImage;
				}
				else {
					bgImage = getComputedStyle(this,'').getPropertyValue('background-image');
				}
				var i = getKeyByBgImg(bgImage,arrInputTags);
				if (browser == "Safari") {
					var imgOver = arrInputImgFolder[i]+"/"+arrInputImgNameH[i]+"."+arrInputImgExt[i];
				} else {
					var imgOver = "url("+arrInputImgFolder[i]+"/"+arrInputImgNameH[i]+"."+arrInputImgExt[i]+")";
				}
				this.style.backgroundImage = imgOver;
			}
			function mouseOut() {
				if (this.currentStyle) {
					bgImage = this.currentStyle.backgroundImage;
				}
				else {
					bgImage = getComputedStyle(this,'').getPropertyValue('background-image');
				}
				var i = getKeyByBgImg(bgImage,arrInputTags);
				if (browser == "Safari") {
					var imgOut = arrInputImgFolder[i]+"/"+arrInputImgName[i]+"."+arrInputImgExt[i];
				} else {
					var imgOut = "url("+arrInputImgFolder[i]+"/"+arrInputImgName[i]+"."+arrInputImgExt[i]+")";
				}
				this.style.backgroundImage = imgOut;
			}
			arrInputTags[i].onmouseover = mouseOver;
			arrInputTags[i].onmouseout = mouseOut;
		}
	}
}

addOnloadEvent();
