/*
         _          __________                              _,
     _.-(_)._     ."          ".      .--""--.          _.-{__}-._
   .'________'.   | .--------. |    .'        '.      .:-'`____`'-:.
  [____________] /` |________| `\  /   .'``'.   \    /_.-"`_  _`"-._\
  /  / .\/. \  \|  / / .\/. \ \  ||  .'/.\/.\'.  |  /`   / .\/. \   `\
  |  \__/\__/  |\_/  \__/\__/  \_/|  : |_/\_| ;  |  |    \__/\__/    |
  \            /  \            /   \ '.\    /.' / .-\                >/-.
  /'._  --  _.'\  /'._  --  _.'\   /'. `'--'` .'\/   '._-.__--__.-_.'
\/_   `""""`   _\/_   `""""`   _\ /_  `-./\.-'  _\'.    `""""""""`'`\
(__/    '|    \ _)_|           |_)_/            \__)|        '
  |_____'|_____|   \__________/|;                  `_________'________`;-'
   '----------'    '----------'   '--------------'`--------------------`
       KSC              PL               MH                 FD
*/


/*-- spam protection --*/

	function getAdr(prefix, postfix, text) {
		document.write('<a href="mailto:' + prefix + '@' + postfix + '">' + (text ? text.replace(/&quot;/g, '"').replace(/%EMAIL%/, prefix + '@' + postfix) : prefix + '@' + postfix) + '</a>');
	}

/*-- navigation --*/

	function init_nav() {
		if (document.getElementById('nav')) {
			var nav = document.getElementById('nav');
			var imgs = nav.getElementsByTagName('img');
			var as = nav.getElementsByTagName('a');
			for(i=0; i<as.length; i++) {
				as[i].removeAttribute('title');
				if(as[i].className.indexOf('active') > -1) {
					activeimg = as[i].getElementsByTagName('img')[0];
					if(activeimg)
						activeimg.src = activeimg.src.split('_n_').join('_a_');
				}
			}
			for(i=0; i<imgs.length; i++) {
				imgs[i].removeAttribute('alt');
				if(imgs[i].src.indexOf('_n_') > -1) {
					imgs[i].onmouseover = function(e) {
						this.src = this.src.split('_n_').join('_h_');
					}
					imgs[i].onmouseout = function(e) {
						this.src = this.src.split('_h_').join('_n_');
					}
				}
			}
		}
	}

/*-- list fix --*/

	function init_listfix() {
		var content = document.getElementById('content');
		var uls = content.getElementsByTagName('ul');
		var browserName = navigator.appName; 
		for(i=0; i<uls.length; i++) {
			if(uls[i].parentNode.tagName == 'LI') {
				splithtml = uls[i].parentNode.innerHTML.toLowerCase().split('<ul');
				if(splithtml[0].split(' ').join('').length <= 1) {
					uls[i].parentNode.style.background='none';
					if(browserName == "Microsoft Internet Explorer") {
						uls[i].parentNode.style.borderTop='1px solid #fff';
						uls[i].parentNode.style.borderBottom='1px solid #fff';
					}
				}
			}
		}
	}

/*-- title fix --*/

	function init_titlefix() {
		var tags = new Array('h1','h2','h3','h4','h5','h6');
		for(t=0; t<tags.length; t++) {
			var eles = document.getElementsByTagName(tags[t]);
			for(var i = 0; i < eles.length; i++) {
				eles[i].removeAttribute('title');
			}
		}
		var login = document.getElementById('login');
		if(login) {
			var as = login.getElementsByTagName('a');
			for(i=0; i<as.length; i++) {
				as[i].removeAttribute('title');
			}
		}
	}

/*-- hover --*/

	function init_hover() {
		var tags = new Array('tr','button');
		for(t=0; t<tags.length; t++) {
			var eles = document.getElementsByTagName(tags[t]);
			for(var i = 0; i < eles.length; i++) {
				eles[i].onmouseover = function() { addClass(this, 'hover'); }
				eles[i].onmouseout = function() { removeClass(this, 'hover'); }			
			}
		}
	}

/*-- focus --*/

	function init_focus() {
		var tags = new Array('input','button','textarea');
		for(t=0; t<tags.length; t++) {
			var eles = document.getElementsByTagName(tags[t]);
			for(i=0; i<eles.length; i++) {
				eles[i].onfocus = function() { addClass(this, 'focus'); }
				eles[i].onblur = function() { removeClass(this, 'focus'); }
			}
		}
	}

/*-- add/remove class --*/

	function addClass(obj, newclass) {
		if(obj.className.indexOf(newclass) == -1)
			obj.className += " " + newclass;
	}
	
	function removeClass(obj, newclass) {
		var classes = obj.className.split(' ');
		for(i=0; i<classes.length; i++) {
			if(classes[i].indexOf(newclass) > -1)
				classes[i] = "";
		}
		obj.className = classes.join(' ');
	}

/*-- getElementsByClassName --*/

	function getElementsByClassName(strClass, strTag, objContElm) {
		strTag = strTag || "*";
		objContElm = objContElm || document;
		var objColl = objContElm.getElementsByTagName(strTag);
		if (!objColl.length &&  strTag == "*" &&  objContElm.all) objColl = objContElm.all;
		var arr = new Array();
		var delim = strClass.indexOf('|') != -1  ? '|' : ' ';
		var arrClass = strClass.split(delim);
		for (var i = 0, j = objColl.length; i < j; i++) {
			var arrObjClass = objColl[i].className.split(' ');
			if (delim == ' ' && arrClass.length > arrObjClass.length) continue;
			var c = 0;
			comparisonLoop:
			for (var k = 0, l = arrObjClass.length; k < l; k++) {
				for (var m = 0, n = arrClass.length; m < n; m++) {
					if (arrClass[m] == arrObjClass[k]) c++;
					if (( delim == '|' && c == 1) || (delim == ' ' && c == arrClass.length)) {
						arr.push(objColl[i]);
						break comparisonLoop;
					}
				}
			}
		}
		return arr;
	}

/*-- validform --*/

	var custom_required_text = new Object();
	function init_forms() {
		var content = document.getElementById('content');
		if(content) {
			var forms = content.getElementsByTagName('form');
			for(f=0; f<forms.length; f++) {
				init_form(forms[f]);
			}
		}
		var email_empfaenger = document.getElementById('email_empfaenger');
		if(email_empfaenger)
			email_empfaenger.value = email_empfaenger.value.replace('+ta+', '@').split('+tod+').join('.');
	}

	function init_form(form) {
		var required = getElementsByClassName('required', '*', form);
		for(i=0; i<required.length; i++) {
			required[i].onblur = function() {
				validate(this);
			}
		}
		form.onsubmit = function() {
			var doSubmit = true;
			var list = new Array();
			var required = getElementsByClassName('required', '*', this);
			for(v=0; v<required.length; v++) {
				if(! validate(required[v])) {
					doSubmit = false;
					list.push(required[v]);
				}
			}
			var checkboxeles = getElementsByClassName('required_checkbox', '*', this);
			for(i=0; i<checkboxeles.length; i++) {
				valid = false;
				checkboxes = checkboxeles[i].getElementsByTagName('input');
				for(c=0; c<checkboxes.length; c++) {
					if(checkboxes[c].type == 'checkbox') {
						checkboxeles[i].name = checkboxes[c].name; // we need the name to check for custom_required_texts
						if(checkboxes[c].checked)
							valid = true;
					}
				}
	
				if(valid == false) {
					doSubmit = false;
					set_msg(checkboxeles[i], valid_checkbox);
					list.push(checkboxeles[i]);
				} 
				else {
					clear_msg(checkboxeles[i]);
				}
			}
			var radioeles = getElementsByClassName('required_radio', '*', this);
			for(i=0; i<radioeles.length; i++) {
				valid = false;
				radios = radioeles[i].getElementsByTagName('input');
				for(c=0; c<radios.length; c++) {
					if(radios[c].type == 'radio') {
						radioeles[i].name = radios[c].name; // we need the name to check for custom_required_texts
						if(radios[c].checked)
							valid = true;
					}
				}
	
				if(valid == false) {
					doSubmit = false;
					set_msg(radioeles[i], valid_radio);
					list.push(radioeles[i]);
				} 
				else {
					clear_msg(radioeles[i]);
				}
			}

		if(doSubmit == false)
			show_error(list);
			return doSubmit;
		}
	}

	function validate(el) {
		var valid = true;
		clear_msg(el);
		switch(el.type) {
			case 'text':
			case 'textarea':
			case 'select-one':
				if(el.value != '') {
					if(el.className.indexOf('email') > -1) {
						var regEmail = /^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/;
						if(el.value.toUpperCase().match(regEmail)){
							valid = true;
						}
						else {
							valid = false;
							set_msg(el, valid_email);
						}
					}
					if(el.className.indexOf('number') > -1) {
						if(el.value == Math.round(el.value)) {
							valid = true;
						}
						else {
							valid = false;
							set_msg(el, valid_postal_code);
						}
					}
				}
				else {
					valid = false;
					set_msg(el);
				}
				break;
		}
	
		return valid;
	}

	function set_msg(el, msg) {
		if(msg == undefined) {
			msg = el.parentNode.getElementsByTagName('span')[0].innerHTML.replace(' *', '') + ' ' + valid_required;
		}

		if(custom_required_text[el.name])
			msg = custom_required_text[el.name];

		el.errorMessage = msg;
		if(el.parentNode.className.indexOf('error') == -1)
			el.parentNode.className += ' error';
	}

	function clear_msg(el) {
		var classes = el.parentNode.className.split(' ');
		for(i=0; i<classes.length; i++) {
			if(classes[i].indexOf('error') > -1)
				classes[i] = "";
		}
		el.parentNode.className = classes.join(' ');
		el.errorMessage = "";
	}

	function show_error(list) {
		errorlist = '<ul>';
		for(i=0; i<list.length; i++) {
			el = list[i];
			if(el.errorMessage != undefined)
				errorMessage = el.errorMessage;
			else
				var errorMessage = el.parentNode.getElementsByTagName('span')[0].innerHTML.replace(' *', '') + ' ' + valid_required;
	
			errorlist += '<li>' + errorMessage + '</li>';
		};
		errorlist += '</ul>';
	
		var validationMessage = document.getElementById('validationMessage');
		validationMessage.innerHTML = '<h2>' + valid_error + '</h2>' + errorlist;
		document.location.href = '#validationMessage';
	}

/*-- events selection --*/

	function init_events() {
		var form_events_selections_obj = document.getElementById('form_selections');
		if (form_events_selections_obj) {
			form_events_selections_obj.getElementsByTagName('button')[0].style.display = 'none';
			selects = form_events_selections_obj.getElementsByTagName('select');
			for(i=0; i<selects.length; i++) {
				selects[i].onchange = events_selections_change;
			}
		}
	}
	
	function events_selections_change() {
		var urlparm = '?';
		var form_selections = document.getElementById('form_selections');
		var selects = form_selections.getElementsByTagName('select');
		for(i=0; i<selects.length; i++) {
			urlparm += selects[i].name + '=' + selects[i].value;
			if (i!=selects.length-1) {
				urlparm += '&';
			}
		};
		location.href=urlparm;
	}

/*-- search --*/

	function init_search() {
		if (document.getElementById('search')) {
			var search_string = label_form_value;
			var searchinput = document.getElementById('fld_search');
			var searchform = document.getElementById('search');
			searchinput.onfocus = function(e) {
				if (searchinput.value==search_string) {
					searchinput.value = '';
				}
			}
			searchinput.onblur = function(e) {
				if (searchinput.value=='') {
					searchinput.value = search_string;
				}
			}
		}
	}

/*-- check links in labels, and if there's a checkbox - uncheck it --*/

	function init_label_link_checkbox() {
		var labels = document.getElementsByTagName('label');
		for(i=0; i<labels.length; i++) {
			var inputs = labels[i].getElementsByTagName('input');
			for(p=0; p<inputs.length; p++) {
				if(inputs[p].type == 'checkbox') {
					var links = labels[i].getElementsByTagName('a');
					for(l=0; l<links.length; l++) {
						links[l].box = inputs[p];
						links[l].onclick = function() {
							this.box.checked = false;
							window.open(this.href);
							return false;
						}
					}
				}
			}
		}
	}

/*-- window resize --*/

	var check_resolution_elements = new Array();
	check_resolution_elements.push(new Array('client_login', '0', '600'));
	check_resolution_elements.push(new Array('dqs_logo', '0', '690'));

	function check_resolution() {
		for (i = 0; i < check_resolution_elements.length; i++) {
			var id = document.getElementById(check_resolution_elements[i][0]);
			if (id) {
				var size = check_resolution_elements[i][1];
				var px = check_resolution_elements[i][2];
				if (size == 1) {
					var viewport = document.body.offsetWidth;
				}
				else {
					var viewport = document.body.offsetHeight;
				}
				if (viewport < px) {
					id.style.display='none';
				}
				else {
					id.style.display='block';
				}
			}
		}
	}

	window.onresize = function() {
	    check_resolution();
	}

/*-- email protection --*/

	function init_email_protection() {
		var elements = document.getElementsByTagName('*');
		for(i=0; i<elements.length; i++) {
			if(elements[i].className.indexOf('protected_email') > -1) {
				elements[i].innerHTML = elements[i].innerHTML.replace('+ta+', '@').split('+tod+').join('.');
			}
		}
	}

/*
             \|/
            .-*-
           / /|\
          _L_
        ,"   ".
    (\ /  O O  \ /)
     \|    _    |/
       \  (_)  /
       _/.___,\_
     (_/ doom  \_)
         ready, the end is near
*/

	var doomready = new Object();
	
	doomready = {
		add: function(fn) {
			if (doomready.loaded) return fn();
			var observers = doomready.observers;
			if (!observers) observers = doomready.observers = [];
			observers[observers.length] = fn; // Arraypush is not supported by Mac IE 5
			if (doomready.callback) return;
			doomready.callback = function() {
				if (doomready.loaded) return;
				doomready.loaded = true;
				if (doomready.timer) {
					clearInterval(doomready.timer);
					doomready.timer = null;
				}
				var observers = doomready.observers;
				for (var i = 0, length = observers.length; i < length; i++) {
					var fn = observers[i];
					observers[i] = null;
					fn(); // make 'this' as window
				}
				doomready.callback = doomready.observers = null;
			};
	
			var ie = !!(window.attachEvent && !window.opera);
			var webkit = navigator.userAgent.indexOf('AppleWebKit/') > -1;
			if (document.readyState && webkit) { // Apple WebKit (Safari, OmniWeb, ...)
				doomready.timer = setInterval(function() {
					var state = document.readyState;
					if (state == 'loaded' || state == 'complete') {
						doomready.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\') doomready.callback();"' +
					'><\/script>');
			}
			else {
				if (window.addEventListener) { // for Mozilla browsers, Opera 9
					document.addEventListener("DOMContentLoaded", doomready.callback, false);
					window.addEventListener("load", doomready.callback, false); // Fail safe
				}
				else if (window.attachEvent) {
				window.attachEvent('onload', doomready.callback);
				}
				else { // Legacy browsers (e.g. Mac IE 5)
					var fn = window.onload;
					window.onload = function() {
						doomready.callback();
						if (fn) fn();
					}
				}
			}
		}
	}
	
	doomready.add(function() {
		init_nav();
		init_listfix();
		init_hover();
		init_focus();
		init_titlefix();
		init_events();
		init_forms();
		init_search();
		init_email_protection();
		init_label_link_checkbox();
		check_resolution();
	});
