/* 
 * Scripts
 *
 * $Id: scripts.js 26441 2010-05-03 13:52:08Z niels $
 */

var form_submit_alertNote = "";
var cart_submit_onlysetcounts = true;

function seminar_request_submit_handler(form) {
    return consulting_request_submit_handler(form);
}

function cart_submit_handler(form) {
    var countsOkay = cart_setcounts(form);
    if (cart_submit_onlysetcounts){
	return countsOkay;
    }
    return countsOkay 
	&& cart_submitdata(form);
}

function cart_setcounts(form) {
    var okay = true;

    for (var i = form.length - 2; i >= 0 ; i--) {
	var re  = /^setcount/;
	if (re.test(form[i].name)
	    && isNaN(form[i].value)){
	    okay = false;
            form[i].style.border = "1px solid red";
	    form[i].focus();
	}
    }
    if (!okay){
	var feedbackElem = document.getElementById("pCountsForm");
        feedbackElem.style.color = "red";
	feedbackElem.firstChild.nodeValue =  "Bitte geben Sie nur Zahlen ein.";
        location.replace("#aCountsForm");
    }
    return okay;
}

function cart_submitdata(form) {
    lastNotOkay = address_onbsubmit_handler(form);

    // Test ppp at the end:
    if (lastNotOkay == ""){
	lastNotOkay = ppp_onbsubmit_handler(form);
    }

    if (lastNotOkay != ""){
	var feedbackElem = document.getElementById("pFillInForm");
        feedbackElem.style.color = "red";
	if (form_submit_alertNote != ""){
	    feedbackElem.firstChild.nodeValue =  form_submit_alertNote;
	    form_submit_alertNote = "";
	}
	else {
	    feedbackElem.firstChild.nodeValue =  "Bitte füllen Sie alle gekennzeichneten Felder aus.";
	}
        location.replace("#aFillInForm");
	form[lastNotOkay].focus();
	return false;
    }
    return true;
}

function event_onsubmit_handler(form,par37) {
    lastNotOkay = address_onbsubmit_handler(form);
    if (par37 == 1){
        if (isEmptyStr(form.beschlussvom.value)
	    && !form.beschlussunnoetig.checked) {
	    form.beschlussvom.style.border = "1px solid red";	
	    lastNotOkay = "beschlussvom";
	} else { form.beschlussvom.style.border = "1px solid #a7a9ac"; }
    }
    if (isEmptyStr(form.anzahl.value)) {
        form.anzahl.style.border = "1px solid red";	
        lastNotOkay = "anzahl";
    } else { form.anzahl.style.border = "1px solid #a7a9ac"; }

    // Test ppp at the end:
    if (lastNotOkay == ""){
	lastNotOkay = ppp_onbsubmit_handler(form);
    }

    if (lastNotOkay != ""){
	var feedbackElem = document.getElementById("pFillInForm");
        feedbackElem.style.color = "red";
	if (form_submit_alertNote != ""){
	    feedbackElem.firstChild.nodeValue =  form_submit_alertNote;
	    form_submit_alertNote = "";
	}
	else {
	    feedbackElem.firstChild.nodeValue =  "Bitte füllen Sie alle gekennzeichneten Felder aus.";
	}
        location.replace("#aFillInForm");
	form[lastNotOkay].focus();
	return false;
    }
    return true;
}

function consulting_request_submit_handler(form) {
    lastNotOkay = address_onbsubmit_handler(form);

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

    // Test ppp at the end:
    if (lastNotOkay == ""){
	lastNotOkay = ppp_onbsubmit_handler(form);
    }

    if (lastNotOkay != ""){
	var feedbackElem = document.getElementById("pFillInForm");
        feedbackElem.style.color = "red";
	if (form_submit_alertNote != ""){
	    feedbackElem.firstChild.nodeValue =  form_submit_alertNote;
	    form_submit_alertNote = "";
	}
	else {
	    feedbackElem.firstChild.nodeValue =  "Bitte füllen Sie alle gekennzeichneten Felder aus.";
	}
        location.replace("#aFillInForm");
	form[lastNotOkay].focus();
	return false;
    }
    return true;
}

function address_onbsubmit_handler(form){
    var lastNotOkay = "";
    if (isEmptyStr(form.email.value)){
        form.email.style.border = "1px solid red";	
        lastNotOkay = "email";	
    } 
    else if (!isValidMailAdress(form.email.value)){
        form.email.style.border = "1px solid red";	
        lastNotOkay = "email";	
	form_submit_alertNote = "Die angegebene E-Mail-Adresse ist ungültig.";
    } else { form.email.style.border = "1px solid #EAEAEA"; }

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

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

    if (isEmptyStr(form.pc.value)){
        lastNotOkay = "pc";	
        form.pc.style.border = "1px solid red";	
    } 
    else if (isNaN(form.pc.value)){
        form.pc.style.border = "1px solid red";	
        lastNotOkay = "pc";	
	form_submit_alertNote = "Die angegebene Postleitzahl ist ungültig.";
    } else { form.pc.style.border = "1px solid #EAEAEA"; }

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

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

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

    return lastNotOkay;
}

function ppp_onbsubmit_handler(form){
    if (!form.ppp.checked){
        form.ppp.style.border = "1px solid red";
	form.ppp.parentNode.style.borderRight = "2px solid red";
	form_submit_alertNote = "Sie müssen der Verwendung Ihrer Daten zustimmen.";
        return "ppp";
    } else { form.ppp.style.border = "1px solid #EAEAEA"; }
    return "";
}

function seminar_onsubmit_handler(form) {
    var lastNotOkay = address_onbsubmit_handler(form);

    if (isEmptyStr(form.betrieb.value)){
        form.betrieb.style.border = "1px solid red";	
        lastNotOkay = "betrieb";
    } else { form.betrieb.style.border = "1px solid #a7a9ac"; }
    if (isEmptyStr(form.beschlussvom.value)) {
        form.beschlussvom.style.border = "1px solid red";	
        lastNotOkay = "beschlussvom";
    } else { form.beschlussvom.style.border = "1px solid #a7a9ac"; }
    if (isEmptyStr(form.anzahl.value)){
        form.anzahl.style.border = "1px solid red";	
        lastNotOkay = "anzahl";
    } else { form.anzahl.style.border = "1px solid #a7a9ac"; }

    // Test ppp at the end:
    if (lastNotOkay == ""){
	lastNotOkay = ppp_onbsubmit_handler(form);
    }

    if (lastNotOkay != ""){
	var feedbackElem = document.getElementById("pFillInForm");
        feedbackElem.style.color = "red";
	if (form_submit_alertNote != ""){
	    feedbackElem.firstChild.nodeValue =  form_submit_alertNote;
	    form_submit_alertNote = "";
	}
	else {
	    feedbackElem.firstChild.nodeValue =  "Bitte füllen Sie alle gekennzeichneten Felder aus.";
	}
        location.replace("#aFillInForm");
	form[lastNotOkay].focus();
	return false;
    }
    return true;
}

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);
}
/*
 * 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");
}

/*
 * For cweb's popup links
 */
function openPopupWindow(script, args) {
  var w = null;
  if (!script) {
    w = window.open(args,
      "CWebPopup", "width=800,height=600,scrollbars,resizable,menubar");
  } else {
    var width = 800;
    var height = 600;
    var hash = args.split("#");
    if (hash.length > 1) {
      var parts = hash[1].split("_");
      if (parts.length > 1) {
	var w = parseInt(parts[0]);
	var h = parseInt(parts[1]);
	if (!isNaN(w)) width = w;
	if (!isNaN(h)) height = h;
      }
    }
    w = window.open("popup.html" + "?" + args,
      "CWebPopup", "width=" + width + ",height=" + height + ",scrollbars,resizable");
  }

  if (w) w.focus();
}

/*
 * Search
 */
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();
}

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

/*
 * 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 = false; // 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) {
	if (tooltip != null){
	    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){};
    } 


  function toggleElementDisplay(elem_id, on){
    var elem = document.getElementById(elem_id);

    if (on == true){
	elem.style.display = "block";
    }
    else {
	elem.style.display = "none";
    }
 }

function toggleElementDisplayByInput(input_id, elem_id){
    var input_elem = document.getElementById(input_id);
    if (input_elem.checked == true)
	toggleElementDisplay(elem_id, true);
    else
	toggleElementDisplay(elem_id, false);
}
