/* 
 * Cross-browser event handling, by Scott Andrew
 */
function addEvent(element, eventType, lamdaFunction, useCapture) {
    if (element.addEventListener) {
        element.addEventListener(eventType, lamdaFunction, useCapture);
        return true;
    } else if (element.attachEvent) {
        var r = element.attachEvent('on' + eventType, lamdaFunction);
        return r;
    } else {
        return false;
    }
}

/* 
 * Kills an event's propagation and default action
 */
function knackerEvent(eventObject) {
    if (eventObject && eventObject.stopPropagation) {
        eventObject.stopPropagation();
    }
    if (window.event && window.event.cancelBubble ) {
        window.event.cancelBubble = true;
    }
    
    if (eventObject && eventObject.preventDefault) {
        eventObject.preventDefault();
    }
    if (window.event) {
        window.event.returnValue = false;
    }
}

/* 
 * Safari doesn't support canceling events in the standard way, so we must
 * hard-code a return of false for it to work.
 */
function cancelEventSafari() {
    return false;        
}

/* 
 * Cross-browser style extraction, from the JavaScript & DHTML Cookbook
 * <http://www.oreillynet.com/pub/a/javascript/excerpt/JSDHTMLCkbk_chap5/index5.html>
 */
function getElementStyle(elementID, CssStyleProperty) {
    var element = document.getElementById(elementID);
    if (element.currentStyle) {
        return element.currentStyle[toCamelCase(CssStyleProperty)];
    } else if (window.getComputedStyle) {
        var compStyle = window.getComputedStyle(element, '');
        return compStyle.getPropertyValue(CssStyleProperty);
    } else {
        return '';
    }
}

/* 
 * CamelCases CSS property names. Useful in conjunction with 'getElementStyle()'
 * From <http://dhtmlkitchen.com/learn/js/setstyle/index4.jsp>
 */
function toCamelCase(CssProperty) {
    var stringArray = CssProperty.toLowerCase().split('-');
    if (stringArray.length == 1) {
        return stringArray[0];
    }
    var ret = (CssProperty.indexOf("-") == 0)
              ? stringArray[0].charAt(0).toUpperCase() + stringArray[0].substring(1)
              : stringArray[0];
    for (var i = 1; i < stringArray.length; i++) {
        var s = stringArray[i];
        ret += s.charAt(0).toUpperCase() + s.substring(1);
    }
    return ret;
}

/*
 * Disables all 'test' links, that point to the href '#', by Ross Shannon
 */
function disableTestLinks() {
  var pageLinks = document.getElementsByTagName('a');
  for (var i=0; i<pageLinks.length; i++) {
    if (pageLinks[i].href.match(/[^#]#$/)) {
      addEvent(pageLinks[i], 'click', knackerEvent, false);
    }
  }
}

/* 
 * Cookie functions
 */
function createCookie(name, value, days) {
    var expires = '';
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days*24*60*60*1000));
        var expires = '; expires=' + date.toGMTString();
    }
    document.cookie = name + '=' + value + expires + '; path=/';
}

function readCookie(name) {
    var cookieCrumbs = document.cookie.split(';');
    var nameToFind = name + '=';
    for (var i = 0; i < cookieCrumbs.length; i++) {
        var crumb = cookieCrumbs[i];
        while (crumb.charAt(0) == ' ') {
            crumb = crumb.substring(1, crumb.length); /* delete spaces */
        }
        if (crumb.indexOf(nameToFind) == 0) {
            return crumb.substring(nameToFind.length, crumb.length);
        }
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name, '', -1);
}

/*
 * Clear Default Text: functions for clearing and replacing default text in
 * <input> elements.
 *
 * by Ross Shannon, http://www.yourhtmlsource.com/
 */

addEvent(window, 'load', init, false);

function init() {
    var formInputs = document.getElementsByTagName('input');
    for (var i = 0; i < formInputs.length; i++) {
        var theInput = formInputs[i];
        
        if (theInput.type == 'text' && theInput.className.match(/\bmessage\b/)) {  
            /* Add event handlers */          
            addEvent(theInput, 'focus', clearDefaultText, false);
            addEvent(theInput, 'blur', replaceDefaultText, false);
            
            /* Save the current value */
            if (theInput.value != '') {
                theInput.defaultText = theInput.value;
            }
        }
    }
}

function clearDefaultText(e) {
    var target = window.event ? window.event.srcElement : e ? e.target : null;
    if (!target) return;
    
    if (target.value == target.defaultText) {
        target.value = '';
    }
}

function replaceDefaultText(e) {
    var target = window.event ? window.event.srcElement : e ? e.target : null;
    if (!target) return;
    
    if (target.value == '' && target.defaultText) {
        target.value = target.defaultText;
    }
}

// Textfeld vergrößern
function adjust(sender)
{
	// zeilenumbrueche harmonisieren
	var text = sender.value.replace(/(\015\012)|(\015)|(\012)/g, '\n');
	// text in array verwandeln
	var text_arr = text.split('\n');
	//zeilen zaehlen
	sender.rows = text_arr.length+1;
} 

// Textfeld von Site vergrößern
function adjustTextfeld(sender)
{
	// zeilenumbrueche harmonisieren
	var text = sender.value.replace(/(\015\012)|(\015)|(\012)/g, '\n');
	// text in array verwandeln
	var text_arr = text.split('\n');
	//zeilen zaehlen
	sender.rows = text_arr.length+4;
} 

// SlideDown
var defaultT = 'Schreiben Sie gleich hier Ihre Anfrage...';
var VisStatusMsg = true;
function SlideDownFkt()
{
	if(VisStatusMsg)
	{
	Effect.SlideDown('TextMessage');
	VisStatusMsg = false;
	}
	ta = document.getElementsByTagName('textarea');
	ta0 = ta[0];
	/* Save the current value */
    	if (ta0.value == defaultT) {
        	ta0.value = '';
    	}
}

// Timer (z) in sek
function SlideUpFkt(z)
{
	if(!VisStatusMsg)
	{
	TimerMsg = setTimeout("SetTimerMsg()", z*1000);
	}
	ta = document.getElementsByTagName('textarea');
	ta0 = ta[0];
		if (ta0.value == '') {
        	ta0.value = defaultT;
	}
}

// Timer (z) in sek
function SetTimerMsg(z)
{
	Effect.SlideUp('TextMessage');
	VisStatusMsg = true;
}

function CreateBookmarkLink(url,title)
{

	if (window.sidebar) { // Mozilla Firefox Bookmark
		window.sidebar.addPanel(title, url,"");
	} else if(window.external) { // IE Favorite
		window.external.AddFavorite( url, title);
	} else { // all others
    document.getElementById('AddFavorite').innerHTML = 'Dr&uuml;cken Sie Strg + D';
	}
}

function CreateRSS(url)
{

	if (window.sidebar) { // Mozilla Firefox
		document.location.href=url;
	} else { // all others
    document.getElementById('AddRSS').innerHTML = 'Bitte &uuml;ber Ihren Browser';
	}
}

// Empfehlung einblenden
var VisStatusEmpf = true;

function ShowEmpf(z)
{
	if (VisStatusEmpf)
	{
	Effect.SlideDown('BlendEmpfehlung');
	TimerEmpf = setTimeout("HideEmpf()", z*1000);
	VisStatusEmpf = false;
	}
}

// Empfehlung ausblenden
function HideEmpf()
{
	if (!VisStatusEmpf)
	{
	Effect.SlideUp('BlendEmpfehlung', { duration: 2.5 });
	VisStatusEmpf = true;
	}
}

// Formular überprüfen Site
function CheckMailFormSite()
{
	res = true;
	a = document.SendNachricht;
	infoN = '';
	infoE = '';
	infoA = '';
	infoP = '';
	document.getElementById('formName').innerHTML = 'Ihr Name:&nbsp;';
	document.getElementById('formEmail').innerHTML = 'Ihre Email Adresse:&nbsp;';
	document.getElementById('formNachricht').innerHTML = 'Ihre Nachricht:&nbsp;';
	document.getElementById('formPW').innerHTML = 'Sicherheitsabfrage:&nbsp;';
	document.getElementById('formMailSite').innerHTML = '';
	if(a.Name.value == '')
	{
		res = false;
		infoN = 'Ihren Namen! ';
		document.getElementById('formName').innerHTML = '<span class="h8">Ihr Name:&nbsp;</span>';
	}
	if(a.Email.value == '')
	{
		res = false;
		infoE = 'Eine gültige E-mail Adresse! ';
		document.getElementById('formEmail').innerHTML = '<span class="h8">Ihre Email Adresse:&nbsp;</span>';
	}
	if(a.Nachricht.value == '')
	{
		res = false;
		infoA = 'Eine Nachricht! ';
		document.getElementById('formNachricht').innerHTML = '<span class="h8">Ihre Nachricht:&nbsp;</span>';
	}
	if(a.PW.value == '')
	{
		res = false;
		infoP = 'Die Sicherheitsabfrage!';
		document.getElementById('formPW').innerHTML = '<span class="h8">Sicherheitsabfrage:&nbsp;</span>';
	}
	reg = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)'+ //Name
				  	'(\\@)'+ //@-Zeichen
					'([a-zA-Z0-9\\-\\.]+)'+ //Domain
					'(\\.)'+ //Punkt
					'([a-zA-Z]{2,4})$'); //TLD
	if(reg.test(a.Email.value) == false){
		res = false;
		infoE = 'Eine gültige E-mail Adresse! ';
		document.getElementById('formEmail').innerHTML = '<span class="h8">Ihre Email Adresse:&nbsp;</span>';
	}
	
	if(res == false)
	{
		document.getElementById('formMailSite').innerHTML = 'Bitte geben Sie fogendes ein: '+infoN+infoE+infoA+infoP;
	}
	return res;
}

// Formular überprüfen Bottom
function CheckMailFormBottom()
{
	res = true;
	a = document.SendeNachricht;
	infoN = '';
	infoE = '';
	infoA = '';
	document.getElementById('formMailBottom').innerHTML = '';
	if(a.Name.value == '' || a.Name.value == 'Ihr Name')
	{
		res = false;
		infoN = 'Ihren Namen! ';
	}
	if(a.Email.value == '' || a.Email.value == 'Ihre Email-Adresse')
	{
		res = false;
		infoE = 'Eine gültige E-mail Adresse! ';
	}
	if(a.Nachricht.value == '' || a.Nachricht.value == defaultT)
	{
		res = false;
		infoA = 'Eine Nachricht!';
	}
	
	reg = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)'+ //Name
				  	'(\\@)'+ //@-Zeichen
					'([a-zA-Z0-9\\-\\.]+)'+ //Domain
					'(\\.)'+ //Punkt
					'([a-zA-Z]{2,4})$'); //TLD
	if(reg.test(a.Email.value) == false){
		res = false;
		infoE = 'Eine gültige E-mail Adresse! ';
	}
	
	if(res == false)
	{
		document.getElementById('formMailBottom').innerHTML = 'Bitte geben Sie fogendes ein: '+infoN+infoE+infoA;
	}
	return res;
}

// Empfehlung überprüfen Navigation
function CheckEmpfFormNav()
{
	Eres = true;
	a = document.SendEmpf;
	infoAN = '';
	infoEN = '';
	infoEE = '';
	document.getElementById('BlendEmpfStat').innerHTML = '';
	if(a.IhrName.value == '' || a.IhrName.value == 'Ihr Name')
	{
		Eres = false;
		infoAN = 'Ihr Name! ';
	}
	if(a.NameDerPerson.value == '' || a.NameDerPerson.value == 'Name des Bekannten')
	{
		Eres = false;
		infoEN = 'Name des Bekannten! ';
	}
	if(a.EmailDerPerson.value == '' || a.EmailDerPerson.value == 'E-mail des Bekannten')
	{
		Eres = false;
		infoEE = 'E-mail des Bekannten!';
	}
	
	Ereg = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)'+ //Name
				  	'(\\@)'+ //@-Zeichen
					'([a-zA-Z0-9\\-\\.]+)'+ //Domain
					'(\\.)'+ //Punkt
					'([a-zA-Z]{2,4})$'); //TLD
	if(Ereg.test(a.EmailDerPerson.value) == false){
		Eres = false;
		infoEE = 'Gültige E-mail Adresse!';
	}
	
	if(Eres == false)
	{
		document.getElementById('BlendEmpfStat').innerHTML = 'Folgendes fehlt: '+infoAN+infoEN+infoEE;
	}
	return Eres;
}
