/*
    Preview Javascript
 */

var request = false;

// Point this variable to the correct location of the bg.png file
// DO NOT EDIT BENEATH THIS
if (typeof Array.prototype.push != "function") {
	Array.prototype.push = ArrayPush;
	function ArrayPush(_1) {
		this[this.length] = _1;
	}
}
function MSC_getElementsByClassName(_2, _3, _4) {
	var _5 = (_3 == "*" && _2.all) ? _2.all : _2.getElementsByTagName(_3);
	var _6 = new Array();
	_4 = _4.replace(/\-/g, "\\-");
	var _7 = new RegExp("(^|\\s)" + _4 + "(\\s|$)");
	var _8;
	for ( var i = 0; i < _5.length; i++) {
		_8 = _5[i];
		if (_7.test(_8.className)) {
			_6.push(_8);
		}
	}
	return (_6);
}
function bindPreviews(e) {
	lbActions = MSC_getElementsByClassName(document, "a", "previewlink");
	for (i = 0; i < lbActions.length; i++) {
		if (window.addEventListener) {
			lbActions[i].addEventListener("mouseover", attachPreview, false);
			lbActions[i].addEventListener("mouseout", detachPreview, false);
		} else {
			lbActions[i].attachEvent("onmouseover", attachPreview);
			lbActions[i].attachEvent("onmouseout", detachPreview);
		}
	}
}
function attachPreview(_b) {
	var _c;
	if (_b["srcElement"]) {
		_c = _b["srcElement"];
	} else {
		_c = _b["target"];
	}
	if ((_c.href == undefined) || (_c.nodeName != "A")) {
		_c = _c.parentNode;
	}
	var _d = _c.href;
	var _e = findPos(_c)[0] + 45;
	var _f = findPos(_c)[1] + 7;

	var _10 = document.createElement("div");
	document.getElementsByTagName("body")[0].appendChild(_10);
	_10.className = "MSCprev_box";
	_10.id = "MSCprev_box";
	if (BrowserDetect.browser == 'Explorer') {
		_10.style.top = _f;
		_10.style.left = _e;
	} else {
		_10.setAttribute("style", "top: " + _f + "px ; left: " + _e + "px ; ");
	}
	setRequest(_d);

}
function detachPreview(_12) {
	 lbActions = MSC_getElementsByClassName(document, "div", "MSCprev_box");
	 for (i = 0; i < lbActions.length; i++) {
	 lbActions[i].parentNode.removeChild(lbActions[i]); } 
}
if (window.addEventListener) {
	addEventListener("load", bindPreviews, false);
} else {
	attachEvent("onload", bindPreviews);
}
function findPos(obj) {
	var _14 = curtop = 0;
	if (obj.offsetParent) {
		_14 = obj.offsetLeft;
		curtop = obj.offsetTop;
		while (obj = obj.offsetParent) {
			_14 += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
	}
	return [ _14, curtop ];
}

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 : "OmniWeb",
		versionSearch : "OmniWeb/",
		identity : "OmniWeb"
	}, {
		string : navigator.vendor,
		subString : "Apple",
		identity : "Safari"
	}, {
		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.platform,
		subString : "Linux",
		identity : "Linux"
	} ]

};

// Request senden
function setRequest(strRef) {

	request = false;
	// Request erzeugen
	if (window.XMLHttpRequest) {
		request = new XMLHttpRequest(); // Mozilla, Safari, Opera
	} else if (window.ActiveXObject) {
		try {
			request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
		} catch (e) {
			try {
				request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
			} catch (e) {
			}
		}
	}

	// überprüfen, ob Request erzeugt wurde
	if (!request) {
		//alert("Kann keine XMLHTTP-Instanz erzeugen");
		return false;
	} else {
		var url = daisy.mountPoint + "/" + daisy.site.name
				+ "/ext/pre/preview.xml";
		// Name auslesen
		var branch = daisy.site.branch;
		var language = daisy.site.language;
		var regex = /^.+\/(.+).html/;
		var id = regex.exec(strRef)[1];
		// Request öffnen
		request.open('post', url, true);
		// Requestheader senden
		request.setRequestHeader('Content-Type',
				'application/x-www-form-urlencoded');
		// Request senden
		request
				.send('id=' + id + '&language=' + language + '&branch='
						+ branch);
		// Request auswerten
		request.onreadystatechange = interpretRequest;
	}
}

// Request auswerten
function interpretRequest() {
	switch (request.readyState) {
	// wenn der readyState 4 und der request.status 200 ist, dann ist alles
	// korrekt gelaufen
	case 4:
		if (request.status != 200) {
			/*alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"
					+ request.status);*/
			break;
		} else {
			// Antwort des Servers -> als XML-Dokument
			var txtDoc = request.responseText;
			// Namen in die Felder schreiben
			var divMSC = document.getElementById("MSCprev_box");
			// var divMSC = MSC_getElementsByClassName(document, "div",
			// "MSCpreview");
			if (divMSC != null) {
				divMSC.innerHTML = "<table class=\"MSCprev\"><tbody>"
						+ "<tr><td class=\"MSCprev_tl\" /><td class=\"MSCprev_tr\"><img src=\"/resources/skins/msc_new/images/space.gif\" width=\"13px\" height=\"38px\" /></td></tr>"
						+ "<tr><td class=\"MSCprev_c\" colspan=\"2\">"
						+ txtDoc
						+ "</td></tr>"
						+ "<tr><td class=\"MSCprev_bl\" /><td class=\"MSCprev_br\"><img src=\"/resources/skins/msc_new/images/space.gif\" width=\"13px\" height=\"13px\" /></td></tr>"
						+ "</tbody></table>"
			}
		}
		break;
	default:
		break;
	}
}

BrowserDetect.init();
