////////////////////////////
// Seiten-Initialisierung //
////////////////////////////

function initialize() {
	// Menue
	var menue = new Menu();

	// Animation
	if (document.getElementById("animation")!=null)
		initAnimation();
	
	// Link-Targets
	var links = document.getElementsByTagName('a');
	for(var i=0;i<links.length;i++) {
		var l = links[i];
		if (l.className=='pdf' || l.className=='download' ||
			 l.className=='external' || l.className=='searchresult')
			l.setAttribute('target','_blank');
	}
	
	// Datentabellen
	var tabs = document.getElementsByTagName("table");
	for (var i=0; i<tabs.length; i++) {
		if (tabs[i].className=="data") {
			initDataTable(tabs[i]);
		}
	}
}

///////////////////
// Back-Funktion //
///////////////////

function historyBack() {
	history.back();
}


//////////////////
// ErrorHandler //
//////////////////

ErrorHandler = function(msgHeader) {
	this.errors=new Array();
	this.msgHeader=msgHeader;
}

ErrorHandler.prototype.add = function(errMsg) {
	var i=this.errors.length;
	this.errors[i]=errMsg;
}

ErrorHandler.prototype.show = function() {
	var msg=this.msgHeader;
	for (var i=0; i<this.errors.length; i++) {
		msg+="- "+this.errors[i]+"\n";
	}
	alert(msg);
}

///////////////////
// PopUp-Fenster //
///////////////////

function openWindow(windowName, file, width, height, scrollbars, resizeable, menubar) {
	var properties="width=" + width
	properties+=",height=" + height
	properties+=",scrollbars=" + scrollbars
	properties+=",resizable=" + resizeable
	properties+=",menubar=" + menubar;
	win=window.open (file, windowName, properties);
	return win
}

function openDatenschutz(language) {
	var file= (language=="en" ? "privacy_policy_popup.php" : "datenschutz_popup.php");
	var win=openWindow("datenschutz", "/"+language+"/wolftechnik/"+file, 670, 676, "yes", "yes", "no");
}

function openMailForm(recepient, language) {
	var path= (language=="en" ? "/en/contact/" : "/de/kontakt/");
	var win=openWindow("emailform", path + "email_popup.php?recepient="+recepient, 460, 485, "yes", "no", "no");
}

////////////////////
// FormValidation //
////////////////////

// Constraints für die Validierung:
// ne = notEmpty   ->   Feld muss gefüllt sein
// em = eMail      ->   Feldinhalt muss eine E-Mail-Adresse sein
// ch = checked    ->   Checkbox muss markiert sein

FormValidation = function(errMsgHeader) {
	this.validationObjects=new Array();
	this.errMsgHeader=errMsgHeader;
}

FormValidation.prototype.add = function(formElement, elementLabel, constraint) {
	var i=this.validationObjects.length;
	this.validationObjects[i]=new Array(3);
	this.validationObjects[i][0]=formElement;
	this.validationObjects[i][1]=elementLabel;
	this.validationObjects[i][2]=constraint;
}

FormValidation.prototype.isEmpty = function(formElement) {	
	return (formElement.value) ? false : true;
}

FormValidation.prototype.isValidEMail = function(eMail) {
	var result=false;
	if (eMail.value) {
		var usr = "([a-zA-Z0-9][a-zA-Z0-9_.-]*|\"([^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")";
		var domain = "([a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,5}";
		var regex = "^"+usr+"\@"+domain+"$";
		var rxpObj = new RegExp(regex);
		if (rxpObj.test(eMail.value)) result=true;
	 }
	return result;
}

FormValidation.prototype.isChecked = function(element) {
	return (element.checked) ? true : false;
}

FormValidation.prototype.validate = function() {
	var error=false;
	var err=new ErrorHandler(this.errMsgHeader);
	for (var i=0; i<this.validationObjects.length; i++) {
		var element=this.validationObjects[i][0];
		var label=this.validationObjects[i][1];
		var constraint=this.validationObjects[i][2];
		if ((constraint=="ne") && (this.isEmpty(element))) {
				error=true;
				err.add(label);
		} else if ((constraint=="em") && (!this.isValidEMail(element))) {
			error=true;
			err.add(label);
		}
		else if ((constraint=="ch") && (!this.isChecked(element))) {
			error=true;
			err.add(label);
		}
	}
	if (error) err.show();
	return !error;
}

///////////////
// TableOver //
///////////////

function initDataTable(table) {
	var elts=table.getElementsByTagName('a');
	
	for(var i=0;i<elts.length;i++) {
		var elt=elts[i];
		elt.setAttribute('target','_blank');
		elt.onmouseover=function(){
			if (this.parentNode.tagName.toLowerCase()=='td') {
				try {
					this.parentNode.parentNode.getElementsByTagName('th')[0].getElementsByTagName('a')[0].className='blue';
				} catch(e) {}
			}
			else
				try {
					this.parentNode.parentNode.getElementsByTagName('td')[0].getElementsByTagName('a')[0].className='blue';
				} catch(e) {}
		}
		elt.onmouseout=function(){
			if (this.parentNode.tagName.toLowerCase()=='td') {
				try {
					this.parentNode.parentNode.getElementsByTagName('th')[0].getElementsByTagName('a')[0].className='';
				} catch(e) {}
			}
			else
				try{
					this.parentNode.parentNode.getElementsByTagName('td')[0].getElementsByTagName('a')[0].className='';		
				} catch(e){}
		}
	}
}
