/* www.bluedorn.org */
/* default.js */
/* default javascript file */
/* Copyright 2006-2010 by Wolfgang Bluedorn */
/* last modified by wb, 2010-07-01 */

window.onerror = handle_error;

with (navigator) {
	if (browserLanguage) {var language = browserLanguage.toLowerCase();}
	else {var language = language.toLowerCase();}
	}
with (window.location) var email_host = (hostname && (hostname != "")) ? ((hostname.substr(0, 4) == "www.") ? hostname.slice(4) : hostname) : "OFFLINE";
var www_host = "www." + email_host;

var default_author = "Wolfgang Bluedorn", blink_i = 0, swapobject_no = new Array();
var hex_array = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F");

var MonthDE = new Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");
var WeekdayDE = new Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
var MonthEN = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var WeekdayEN = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");

// general functions
function add_leading_char(char, string, string_length) {
	if (string_length < 0) string_length = Math.abs(string_length);
	else if (string_length.length) string_length = Math.abs(string_length).toString().length;
	var prefix = "";
	with (Math) for (var i = string.length; i < string_length; i++) prefix = prefix.concat("0");
	return prefix.concat(string);
	}

function add_leading_zero(number, digits) {
	number = del_leading_zero(number);
	if (digits < 0) digits = Math.abs(digits);
	else if (digits.length) digits = Math.abs(digits).toString().length;
	var prefix = "";
	with (Math) for (var i = abs(floor(number)).toString().length; i < digits; i++) prefix = prefix.concat("0");
	return (number >= 0) ? prefix.concat(number) : "-" + prefix.concat(Math.abs(number));
	}

function address(addr, name, co, street1, street2, city, country, separator) {
	with (address) for (var i = 0; i < arguments.length - 1; i++) arguments[i] = trim(arguments[i]);
	if (!separator) separator = " ";
	else if ((separator == "br") || (separator == "dd") || (separator == "li") || (separator == "p") || (separator == "td") || (separator == "tr")) {
		switch (separator) {
			case "dd", "li", "p", "td": separator = "</" + separator + "><" + separator + ">"; break;
			case "tr": separator = "</td></" + separator + "><" + separator + "><td>"; break;
			default: separator = "<" + separator + ">";
			}
		}
	var address_string = "";
	if (addr) address_string = addr;
	if (name) address_string += (address_string ? separator : "") + name;
	if (co) address_string += (address_string ? separator : "") + co;
	if (street1) address_string += (address_string ? separator : "") + street1;
	if (street2) address_string += (address_string ? separator : "") + street2;
	if (city) address_string += (address_string ? separator : "") + city;
	if (country) address_string += (address_string ? separator : "") + country;
	return address_string;
	}

function blink(blink_object, blink_values, blink_part) {
	var bg = (blink_part && ((blink_part.toLowerCase() == "background") || (blink_part.toLowerCase() == "bg")));
	with (Math) {
		with (window.document.getElementById(blink_object)) {
			if (blink_values[blink_i].indexOf("\#") == 0) {
				with (style) {
					if (blink_values[blink_i].toLowerCase() == "\#hidden") visibility = "hidden";
					else {
						visibility = "visible";
						if (blink_values[blink_i].toLowerCase() != "\#visible") bg ? backgroundColor = (blink_values[blink_i].toLowerCase() == "\#random") ? "\#" + hex(floor(256 * random()), 2) + hex(floor(256 * random()), 2) + hex(floor(256 * random()), 2) : ((blink_values[blink_i].toLowerCase() == "\#transparent") ? "transparent" : blink_values[blink_i]) : color = (blink_values[blink_i].toLowerCase() == "\#random") ? "\#" + hex(floor(256 * random()), 2) + hex(floor(256 * random()), 2) + hex(floor(256 * random()), 2) : ((blink_values[blink_i].toLowerCase() == "\#transparent") ? "transparent" : blink_values[blink_i]);
						}
					}
				}
			else {
				style.visibility = "visible";
				firstChild.data = blink_values[blink_i];
				}
			}
		}
	blink_i = (blink_i + 1) % blink_values.length;
	}

function convert_12h(divider, hour, minute, second) {
	return ((hour < 12) ? ((hour == 0) ? 12 : add_leading_zero(hour, 2)) : ((hour == 12) ? 12 : add_leading_zero(hour - 12, 2))) + divider + add_leading_zero(minute, 2) + divider + add_leading_zero(second, 2) + ((hour < 12) ? "am" : "pm");
	}

function copyright(pretext, create_year, author, posttext) {
	var now = new Date(), actual_year = now.getUTCFullYear();
	if (!create_year) create_year = window.document.getElementsByTagName("meta")["date"].content.substr(0, 4);
	if (!create_year) create_year = actual_year;
	with (window.document) write(pretext + (pretext ? " " : "") + "&copy; Copyright " + ((create_year < actual_year) ? create_year + "-" : "") + actual_year + ", " + (author || getElementsByTagName("meta")["author"].content || default_author) + "." + (posttext ? " " : "") + posttext);
	}

function days_in_month(month, year) {
	var days = 31;
	if (month == 2) {
		days -= 3;
		if (year % 4 == 0) days++;
		if (year % 100 == 0) days--;
		if (year % 400 == 0) days++;
		}
	else if ((month == 4) || (month == 6) || (month == 9) || (month == 11)) days--;
	return days;
	}

function day_in_year(day, month, year) {
	for (var i = month - 1; i > 0; i--) day += days_in_month(i, year);
	return day;
	}

function days_in_year(year) {
	var days = 365;
	if (year % 4 == 0) days++;
	if (year % 100 == 0) days--;
	if (year % 400 == 0) days++;
	return days;
	}

function del_leading_zero(number) {
	number++; number--;
	return number;
	}

function display_alt_title(displaytext) {
	return ("alt='" + displaytext + "' title='" + displaytext + "'");
	}

function email(kind, address, domain, subject) {
	var protocol = "mailto", at = "\@";
	if (!domain || (trim(domain) == "")) domain = email_host;
	switch (kind) {
		case "alt": return address + at + domain;
		case "display": return address + at + domain;
		case "href": return (subject && (subject != "")) ? protocol + ":" + address + at + domain + "?subject=" + subject : protocol + ":" + address + at + domain;
		case "status": return (subject && (subject != "")) ? protocol + ":" + address + at + domain + "?subject=" + subject : protocol + ":" + address + at + domain;
		case "title": return (subject && (subject != "")) ? "email to " + address + at + domain + ", subject=" + subject : address + at + domain;
		default: return "";
		}
	}

function handle_error(message, file, line) {
	return ((message.indexOf("images[") >= 0) || (message.indexOf("Obje") >= 0) || (message.indexOf("parent.") >= 0) || (message.indexOf("top.") >= 0));
	}

function hex(dec, digits) {
	var hex_value = "";
	for (var i = 0; i < digits; i++) {
		hex_value = hex_array[dec % 16].concat(hex_value);
		if (i < digits - 1) dec = Math.round((dec - (dec % 16)) / 16);
		}
	return hex_value;
	}

function phone(country, area, number, operator, extention) {
	country = isNaN(parseInt(country)) ? -1 : del_leading_zero(parseInt(country));
	area = isNaN(parseInt(area)) ? -1 : parseInt(area);
	number = isNaN(parseInt(number)) ? -1 : parseInt(number);
	operator = isNaN(parseInt(operator)) ? -1 : parseInt(operator);
	extention = isNaN(parseInt(extention)) ? -1 :  parseInt(extention);
	var dial = (country <= 0) ? "0" : "(+" + country + ") ";
	if (area > -1) dial += area + " / ";
	if (number > -1) dial += number;
	if (operator > -1) dial += "-" + operator;
	if (extention > -1) dial += ", ext. " + extention;
	return dial;
	}

function print_element_attributes(element, name, showempty) {
	if ((element == "TagName") || (element == "Name") || (element == "Id")) {
		with (window.document) {
			var array_attributes = new Array();
			if (element.toLowerCase().indexOf("name") >= 0) {
				var elements = eval("getElementsBy" + element)(name).length;
				for (var i = 0; i < elements; i++) for (var j in eval("getElementsBy" + element)(name)[i]) array_attributes.push("getElementsBy" + element + "('" + name + "')[" + add_leading_zero(i, String(elements)) + "]." + j + " = " + eval("getElementsBy" + element)(name)[i][j]);
				}
			else {
				var elements = 1;
				for (var i in getElementById(name)) array_attributes.push("getElementById('" + name + "')." + i + " = " + getElementById(name)[i]);
				}
			write("<p style='font-weight: bold'>Element: '" + element + "'; Name: '" + name + "'; " + ((element.toLowerCase().indexOf("name") >= 0) ? "Anzahl der Elemente: " + elements + "; " : "") + (elements ? "Anzahl der Attribute: " + (array_attributes.length / elements) + "; " : "") + "Zeige leere Attribute: " + showempty + "</p><p>");
			for (j in array_attributes.sort()) if (showempty || (array_attributes[j].length > array_attributes[j].indexOf(" = ") + 3)) write(((array_attributes[j].length > array_attributes[j].indexOf(" = ") + 3) ? "<span style='font-weight: bold'>" : "") + array_attributes[j] + ((array_attributes[j].length > array_attributes[j].indexOf(" = ") + 3) ? "</span>" : "") + "<br>");
			write("</p><p style='font-weight: bold'>End of list</p>");
			}
		return elements ? true : "Element '" + element + "(" + name + ")' not found";
		}
	else return "Element '" + element + "' does not exist";
	}

function swap_able(element, enabled_color, disabled_color) {
	element.disabled = !element.disabled;
	with (window.document) for (var i = 0; i < getElementsByTagName("label").length; i++) if (getElementsByTagName("label")[i].htmlFor == element.id) getElementsByTagName("label")[i].style.color = "\#" + (element.disabled ? (disabled_color || "B0B0B0") : (enabled_color || "000000"));
	}

function swap_checkbox(checkbox) {
	with (checkbox) if (!disabled) checked = !checked;
	}

function swap_object(swap_type, swap_tagname, swap_delay /*, swap_objects[0..x]*/) {
	var swap_objects = new Array(), tagname = eval(swap_tagname);
	swapobject_no[swap_tagname] = (swapobject_no[swap_tagname] >= 0) ? swapobject_no[swap_tagname] + 1 : 0;
	for (var i = 3; i < swap_object.arguments.length; i++) {
		if (swap_object.arguments[i].length) swap_objects = swap_objects.concat(swap_object.arguments[i]);
		else swap_objects.push(swap_object.arguments[i]);
		}
	var swap_source = swap_objects[swapobject_no[swap_tagname] % swap_objects.length];
	with (window.document) {
		if (all) {
			if (tagname.length) {
				for (i = 0; i < tagname.length; i++) {
					with (tagname[i]) {
						eval("filters." + swap_type + "Trans.Apply()");
						if (swap_type == "blend") src = swap_source;
						else if (swap_type == "reveal") {
							try {throw (src) ? "src" : "text";}
							catch (r) {
								if (r == "src") src = swap_source;
								else innerText = swap_source;
								}
							}
						else return false;
						eval("filters." + swap_type + "Trans.Play()");
						}
					}
				}
			else {
				with (tagname) {
					eval("filters." + swap_type + "Trans.Apply()");
					if (swap_type == "blend") src = swap_source;
					else if (swap_type == "reveal") {
						try {throw (src) ? "src" : "text";}
						catch (r) {
							if (r == "src") src = swap_source;
							else innerText = swap_source;
							}
						}
					else return false;
					eval("filters." + swap_type + "Trans.Play()");
					}
				}
			}
		else {
			if (tagname.length) {
				for (i = 0; i < tagname.length; i++) {
					with (tagname[i]) {
						if (swap_type == "blend") src = swap_source;
						else if (swap_type == "reveal") {
							try {throw (src) ? "src" : "text";}
							catch (r) {
								if (r == "src") src = swap_source;
								else firstChild.data = swap_source;
								}
							}
						else return false;
						}
					}
				}
			else {
				with (tagname) {
					if (swap_type == "blend") src = swap_source;
					else if (swap_type == "reveal") {
						try {throw (src) ? "src" : "text";}
						catch (r) {
							if (r == "src") src = swap_source;
							else firstChild.data = swap_source;
							}
						}
					else return false;
					}
				}
			}
		}
	var timeout_string = "'" + swap_type + "', '" + swap_tagname + "', " + swap_delay;
	for (i = 0; i < swap_objects.length; i++) timeout_string += ", '" + swap_objects[i] + "'";
	setTimeout("swap_object(" + timeout_string + ")", swap_delay);
	return true;
	}

function trim(string) {
	while (string.indexOf(" ") == 0) {
		if (string.length <= 1) return "";
		string = string.slice(1);
		}
	while (string.lastIndexOf(" ") == string.length - 1) {
		if (string.length <= 1) return "";
		string = string.substr(0, string.length - 1);
		}
	return string;
	}

// specific functions
function change_flag() {
	setTimeout("swap_object('blend', 'flagde', 5000, '/img/flagat.gif', '/img/flagch.gif', '/img/flagde.png')", 5000);
	setTimeout("swap_object('blend', 'flagen', 5000, '/img/flagus.gif', '/img/flaguk.gif')", 5000);
	}

function help(helpfile) {
	var pos_left = screen.availWidth - 260;
	window.open(helpfile,"Hilfe","top=0,left="+pos_left+",width=250,height=400,scrollbars=yes,dependent=yes");
	}

function homelink(position) {
	with (window) {
		document.write("<div id='homelink'>");
		if (top == self) {
			var linktext = "<a href='http://" + www_host + "' target='_top'>Home &bull; <span style='font-style=italic'>Startseite<\/span><\/a>";
			with (document) {
				if (position == "top") write(linktext + "<hr width='100%'>");
				else if (position == "bottom") write("<hr width='100%'>" + linktext);
				}
			}
		document.write("<\/div>");
		}
	}

function kalender() {
	window.open("/intern/kalender.php","Kalender","top=0,left=0,width=487,height=779,scrollbars=yes,dependent=yes");
	}

function load_completed(id_object) {
	clearInterval(blinker);
	window.document.getElementById(id_object).firstChild.data = "";
	top.left.setImageClick();
	}

function set_pageOpen(page) {
	with (top.left) {
		try {
			if ((pageOpen >= 0) && (eval(imgLang + page + "iImg.src"))) throw "ok";
			else throw "wait";
			}
		catch (r) {
			if (r == "ok") {
				pageOpen = page;
				setImageClick();
				return;
				}
			else setTimeout("set_pageOpen(" + page + ")", 1000);
			}
		}
	}

function telefontarife(country) {
	window.open("/deutsch/telefontarife"+country+".shtml","Telefontarife","top=0,left=153,width=279,height="+((country=="D")?"304":"286")+",scrollbars=no,dependent=yes");
	}

function windowstatus(lang) {
	window.defaultStatus = (lang == "de") ? "Willkommen auf den Internetseiten von Wolfgang und Marina Bluedorn <" + www_host + ">" : ((lang == "en") ? "Welcome to the homepage of Wolfgang and Marina Bluedorn <" + www_host + ">" : "Homepage / Internetseiten von Wolfgang & Marina Bluedorn <" + www_host + ">");
	}
