/* 
 * Scripts
 *
 * $Id: scripts.js 19862 2007-09-14 13:56:17Z niels $
 */

/*
 * Form submit handler
 */
var form_submit_alertNote = "";

function address_data_checker(form,lastNotOkay){

    if (isEmptyStr(form.city.value)){
        lastNotOkay = "city";	
        form.city.style.border = "1px solid red";	
    } else { form.city.style.border = "1px solid #E5E5E5"; }

    if (isEmptyStr(form.pc.value)){
        lastNotOkay = "pc";	
        form.pc.style.border = "1px solid red";	
    } 
    else if (!isNumber(form.pc.value)){
        form.pc.style.border = "1px solid red";	
        lastNotOkay = "pc";	
	form_submit_alertNote = "Die angegebene Postleitzahl ist ung&uuml;ltig.";
    } else { form.pc.style.border = "1px solid #E5E5E5"; }

    if (isEmptyStr(form.nr.value)){
        lastNotOkay = "nr";	
        form.nr.style.border = "1px solid red";	
    } else { form.nr.style.border = "1px solid #E5E5E5"; }

    if (isEmptyStr(form.street.value)){
        lastNotOkay = "street";	
        form.street.style.border = "1px solid red";	
    } else { form.street.style.border = "1px solid #E5E5E5"; }

    if (isEmptyStr(form.org.value)){
        lastNotOkay = "org";	
        form.org.style.border = "1px solid red";	
    } else { form.org.style.border = "1px solid #E5E5E5"; }

    if (isEmptyStr(form.name.value)){
        lastNotOkay = "name";	
        form.name.style.border = "1px solid red";	
    } else { form.name.style.border = "1px solid #E5E5E5"; }

    if (isEmptyStr(form.fname.value)){
        lastNotOkay = "fname";	
        form.fname.style.border = "1px solid red";	
    } else { form.fname.style.border = "1px solid #E5E5E5"; }

    return lastNotOkay;
}

function program_order_submit_handler(form){

    var lastNotOkay = "";

    if (isEmptyStr(form.cnt.value)){
	lastNotOkay = "cnt";	
	form.cnt.style.border = "1px solid red";	
    } 
    else if (!isNumber(form.cnt.value)){
	form.cnt.style.border = "1px solid red";	
	lastNotOkay = "cnt";	
	form_submit_alertNote = "Die angegebene St&uuml;ckzahl ist ung&uuml;ltig.";
    } else { form.cnt.style.border = "1px solid #E5E5E5"; }

    lastNotOkay = address_data_checker(form,lastNotOkay);

    if (lastNotOkay != ""){
	var msg = "Bitte f&uuml;llen Sie alle gekennzeichneten Felder korrekt aus.";
	if (form_submit_alertNote != ""){
	    msg += " <ul><li>"+form_submit_alertNote+"</li></ul>";
	    form_submit_alertNote = "";
	}

	var feedbackElem = document.getElementById("msgs");
	feedbackElem.innerHTML = msg;
	feedbackElem.style.display = "block";
        location.replace("#aContentStart");
	form[lastNotOkay].focus();
	return false;
    }
}


function sem_appl_submit_handler(form){

    var lastNotOkay = "";

    if (isEmptyStr(form.phone.value)){
	lastNotOkay = "phone";	
	form.phone.style.border = "1px solid red";	
    } else { form.phone.style.border = "1px solid #E5E5E5"; }

    lastNotOkay = address_data_checker(form,lastNotOkay);

    if (form.salut.selectedIndex == 0){
	    lastNotOkay = "salut";	
	    form.salut.style.border = "1px solid red";	
    } else { form.salut.style.border = "1px solid #E5E5E5"; }

    if (!form.terms_accepted.checked){
	    lastNotOkay = "terms_accepted";	
	    form.terms_accepted.style.border = "1px solid red";	
	    form_submit_alertNote = "Sie m&uuml;ssen die Teilnahmebedingungen akzeptieren!";
    } else { form.terms_accepted.style.border = "1px solid #E5E5E5"; }

    if (lastNotOkay != ""){
	var msg = "Bitte f&uuml;llen Sie alle gekennzeichneten Felder korrekt aus.";
	if (form_submit_alertNote != ""){
	    msg += "<ul><li>" + form_submit_alertNote + "</li></ul>";
	    form_submit_alertNote = "";
	}

	var feedbackElem = document.getElementById("msgs");
	feedbackElem.innerHTML = msg;
	feedbackElem.style.display = "block";
        location.replace("#aContentStart");
	form[lastNotOkay].focus();
	return false;
    }
}


/*
 * Tools
 */

function isNumber(str) {
    var re  = /^[0-9]+$/;
    return re.test(str);
}

function isValidMailAdress(address) {
    var re  = /^([a-z0-9_\.\-])+\@(([a-z0-9\-])+\.)+([a-z0-9]{2,4})$/;
    return re.test(address.toLowerCase());
}

function isEmptyStr(str){
   var re  = /^\s*$/;
   return re.test(str);
}

function openPopupWindow(script, args) {
 if (!script) {
   w = window.open(args,"CWebPopup", "width=500,height=500,scrollbars,resizable,menubar");
 }
 else {
   w = window.open(script + "?" + args,"CWebPopup", "width=500,height=500,scrollbars,resizable,menubar");
 }
 w.focus();
}

/*
 * Sitemap
 */

var wins = new Array();

function openWindow(url, name, props, focus) {
  if(wins[name]) wins[name].close();
  wins[name] = window.open(url, name, props);
  if(focus != false) wins[name].focus();
}

function openSitemap(args) {
  openWindow('sitemap.cw' + (args?'?' + args:''), "CWebSitemap", "width=380,height=400,scrollbars,resizable");
}

/*
 * Search
 */
function openSearch(searchterms, args) {
  var openstr = 'search.html' + (searchterms ? ('?gl_mode=extended&gl_searchstring='+searchterms+(args ? '&'+args : '')) : (args ? '?'+args : ''));
  openWindow(openstr, "CWebSuche", "width=516,height=500,scrollbars,resizable");
}

function gl_searchspan_onclick ()
{
    var form = document.getElementById('searchform');
    if (!form) return;

    if (!form.gl_searchstring.value) return;
    if (form.gl_searchstring.value == "Suchbegriff") return;

    form.submit();
}

/*
 * Event Helpers
 */
function attachEventHandler (element, eventName, handler)
{
	if (element.addEventListener) {
		/* W3C */
		element.addEventListener (eventName, handler, false);
	} else if (element.attachEvent) {
		/* MS */
		element.attachEvent ("on" + eventName, handler);
	}
	return handler;
}

function detachEventHandler (element, eventName, handler)
{
	if (element.removeEventListener) {
		/* W3C */
		element.removeEventListener (eventName, handler, false);
	} else if (element.detachEvent) {
		/* MS */
		element.detachEvent ("on" + eventName, handler);
	}
}

function cancelBubble (event)
{
	if (!event) event = window.event;
	if (!event) return;

	if (event.preventDefault) {
		/* W3C */
		event.preventDefault();
		event.stopPropagation();
	} else {
		/* MS */
		event.returnValue = false;
		event.cancelBubble = true;
	}
}

/*
 * Styled Tooltips
 */
    // Config
    var defXPos = 915; // false or absolute px;
    var defYPos = false; // false or absolute px;
    var xDelay = -50;
    var yDelay = 5;
    var closeDelay = 1;

    // The Tooltip DOM object
    var tooltip = null;

    function setStyledTooltipPos(event) {

	// Get IEs scroll object information
	var docElem = (typeof document.compatMode != "undefined" && 
		       document.compatMode        != "BackCompat")
	    ? "documentElement" 
	    :  "body";
	
	if (!defXPos){
	    xPos = document.all 
		? window.event.x + document[docElem].scrollLeft 
		: event.pageX;
	}
	else {
	    xPos = defXPos;
	}
	if (!defYPos){
	    yPos = document.all 
		? window.event.y + document[docElem].scrollLeft 
		: event.pageY;
	}
	else {
	    yPos = defYPos;
	}

	// Set tooltips's pos
	if (tooltip){
	    tooltip.style.left = xPos + xDelay + "px";
	    tooltip.style.top = yPos + yDelay + "px";
	}
	// Detach pos finder eventHandler
	detachEventHandler (document, "mousemove", setStyledTooltipPos);
    }

    function showTooltip(id) {
	var already_open = false;
	if (tooltip){
	    // Are we open?
	    if (tooltip.id == id){
		already_open = true;
	    }
	    // No. It's another one, close it:
	    else {
		closeTooltip();
	    }
	}

	// Do the job we're called for:
	if (!already_open){
	    attachEventHandler (document, "mousemove", setStyledTooltipPos);
	    // open requested tooltip:
	    tooltip = document.getElementById(id);
	    tooltip.style.display = "block";
	}
    }

    function closeTooltip(event) {
	tooltip.style.display = "none";
	tooltip = null;
    }

    function closeTooltipById(id) {
	tooltip = document.getElementById(id);
	closeTooltip()
    }

    function sleep(sec){
	var start = (new Date()).getTime();
	while((new Date()).getTime() < start + 1000 * sec){};
    } 


/*
 * Swiches between print and display styles.
 */
function switchStyles ()
{
    var link = document.getElementById("printstyle");
    if (!link) return;
    if (link.href.indexOf("fake.css") >= 0) {
        link.href = "print.css";
    } else {
        link.href = "fake.css";
    }
}
