function Aqua_openBrWindow(theURL,winName,features, myWidth, myHeight, isCenter) { if(window.screen)if(isCenter)if(isCenter=="true")
{ 
	var myLeft = (screen.width-myWidth)/2; 
	var myTop = (screen.height-myHeight)/2; 
	features+=(features!='')?',':''; 
	features+=',left='+myLeft+',top='+myTop; 
} 

window.open(theURL,winName,features+((features!='')?',':'')+'width='+myWidth+',height='+myHeight);}

function openPopup(theURL) { 
	
	var winName = 'popup' ;
	var features = 'scrollbars=yes,toolbar=yes,resizable=yes';
	var myWidth  = 750;
	var myHeight = 650;
	var isCenter = true;
	
	if(window.screen)if(isCenter){
		var myLeft = (screen.width-myWidth)/2; 
		var myTop = (screen.height-myHeight)/2;
		features += (features!='')?',':''; 
		features += ',left='+myLeft+',top='+myTop; 
	} 	
        popupsize = 1;
	var w1 = window.open(theURL,winName,features+((features!='')?',':'')+'width='+myWidth+',height='+myHeight);

}

var check = false;

requirefuncs = new Object();

requirefuncs.require_text = function(element) {
    return element.value.length > 0;
}

requirefuncs.require_numeric = function(element) {
    val = parseInt(element.value);
    return element.value.length > 0 && !isNaN(val);
}
requirefuncs.require_email = function(element) {
    return element.value.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/);
}

requirefuncs.require_zip = function(element) {
    field_ok = element.value.length == 4 ||  element.value.length == 5;
    zip = parseInt(element.value);
    field_ok = field_ok && !isNaN(zip);
    return field_ok;
}

requirefuncs.require_checkbox = function(element) {
    return element.checked;
}

function checkFormHandler(event) {
    var element;
    if(event != undefined) {
        element = event.target;
    } else {
        element = window.event.srcElement;
    }
    checkFormElement(element);
}

function checkFormElement(element, checkedForm) {
    if(!check) {
        return true;
    }
    var label;
    var parentElement = element;
    //while(label == undefined || label.length == 0 && parentElement != checkedForm) {
    //    parentElement = parentElement.parentNode;
    //    var searchedLabel = element.name + "Label";
    //    var label = document.getElementsByName(searchedLabel)[0];
    //}
    var searchedLabel = element.id + "Label";
    var label = document.getElementById(searchedLabel);
    var classes = element.className.split(" ");
    var i = 0;
    var field_ok;
    classes.forEach(function(myieclass) {
        if(requirefuncs[myieclass] != undefined) {
            field_ok = requirefuncs[myieclass](element);
            if(field_ok) {
                element.className = element.className.replace(/checkerror/g, "");
                var inputSiblingsWithMissing = getElementsByClass(parentElement, "checkerror", "input");
                var selectSiblingsWithMissing = getElementsByClass(parentElement, "checkerror", "select");
                if(inputSiblingsWithMissing.length == 0 && selectSiblingsWithMissing.length == 0 ) {
                    label.className = label.className.replace(/checkerror/g, "");
                }
            } else {
                element.className = element.className + " checkerror";
                label.className = label.className + " checkerror";
            }
        }
    });
    return field_ok;
}

function checkFormSubmit(checkedForm) {
    check = true;
    
    checkedForm.onkeyup = checkFormHandler;
    checkedForm.onclick = checkFormHandler;
    var inputElements = getElementsByClass(checkedForm, "require_[a-z]*","input");
    var formOK = true;
    inputElements.forEach(function(elem) {
        if(!checkFormElement(elem, checkedForm)) {
            formOK = false;
        }
    });
    var selectElements = getElementsByClass(checkedForm, "require_[a-z]*","select");
    selectElements.forEach(function(elem) {
        if(!checkFormElement(elem, checkedForm)) {
            formOK = false;
        }
    });
    if (!formOK) {
        var warningDiv  = document.getElementById("errorMessage");
        //warningDiv.innerHTML = document.mailForm.errorMessage.value;
        warningDiv.className = "errorVisible";
    } else {
        var warningDiv  = document.getElementById("errorMessage");
        //warningDiv.innerHTML = "";
        warningDiv.className = "errorInvisible";
    }
    return formOK;
}

function isEmailAddr(str) 
{
	return str.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/);
}


function getElementsByClass(node,searchClass,tag) {
    var classElements = new Array();
    var elements = node.getElementsByTagName(tag);
    var pattern = new RegExp("(^| )"+searchClass+"( |$)");
    collectionToArray(elements).forEach(function(element) {
        if (pattern.test(element.className)) {
            classElements.push(element);
        }
    });
    return classElements;
}

// Convert HTMLCollection list to a common array
function collectionToArray(col) {
    a = new Array();
    for (i=0; i<col.length; i++) a[i] = col[i];
    return a;
}

/* Compatibility functions for necessary array operations below */

// http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:Array:forEach
if (!Array.prototype.forEach)
{
  Array.prototype.forEach = function(fun /*, thisp*/)
  {
    var len = this.length;
    if (typeof fun != "function")
      throw new TypeError();

    var thisp = arguments[1];
    for (var i = 0; i < len; i++)
    {
      if (i in this)
        fun.call(thisp, this[i], i, this);
    }
  };
}

// http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:Array:filter
if (!Array.prototype.filter)
{
  Array.prototype.filter = function(fun /*, thisp*/)
  {
    var len = this.length;
    if (typeof fun != "function")
      throw new TypeError();

    var res = new Array();
    var thisp = arguments[1];
    for (var i = 0; i < len; i++)
    {
      if (i in this)
      {
        var val = this[i]; // in case fun mutates this
        if (fun.call(thisp, val, i, this))
          res.push(val);
      }
    }

    return res;
  };
}

// http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:Array:map
if (!Array.prototype.map)
{
  Array.prototype.map = function(fun /*, thisp*/)
  {
    var len = this.length;
    if (typeof fun != "function")
      throw new TypeError();

    var res = new Array(len);
    var thisp = arguments[1];
    for (var i = 0; i < len; i++)
    {
      if (i in this)
        res[i] = fun.call(thisp, this[i], i, this);
    }

    return res;
  };
}

// homebrew (http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:Array:indexOf)
if (!Array.prototype.indexOf) {
  Array.prototype.indexOf = function(thing) {
    for (var i = 0; i < this.length; i++) {
      if (thing === this[i]) return i;
    }
    return -1;
  };
}


function getWindowHeight() {
	var windowHeight = 0;
	if (typeof(window.innerHeight) == 'number') {
		windowHeight = window.innerHeight;
	}
	else {
		if (document.documentElement && document.documentElement.clientHeight) {
			windowHeight = document.documentElement.clientHeight;
		}
		else {
			if (document.body && document.body.clientHeight) {
				windowHeight = document.body.clientHeight;
			}
		}
	}
	return windowHeight;
}
/*
function setFooter() {
	if (document.getElementById) {
		var windowHeight = getWindowHeight();
		if (windowHeight > 0) {
			var contentHeight = document.getElementById('content').offsetHeight;
			var footerElement = document.getElementById('footer');
			var footerHeight  = footerElement.offsetHeight;
			if (windowHeight - (contentHeight + footerHeight) >= 0) {
				footerElement.style.top = (windowHeight - (contentHeight + footerHeight)) + 'px';
			}
			else {
				footerElement.style.top = '0px';
			}
		}
	}
}
window.onload = function() {
	setFooter();
}
window.onresize = function() {
	setFooter();
}
*/


function raw_popup(url, target, features) {
  if (isUndefined(features)) {
    features = _POPUP_FEATURES;
  }
  if (isUndefined(target)) {
    target = '_blank';
  }
  var theWindow =
    window.open(url, target, features);
  theWindow.focus();
  return theWindow;
}

function link_popup(src, features) {
  return
    raw_popup(src.getAttribute('href'),
    src.getAttribute('target') || '_blank',
    features);
}


// teaser alpes

function close_teaser(id) 
{
	var item = document.getElementById(id) ; 
	item.className = 'teaser-header-closed' ; 
	var plusminusid = document.getElementById("teaser_header_plusminus_" + id) ;
	plusminusid.style.background = "url(/interface/plus.gif) no-repeat" ; 
	var teaserentry = document.getElementById("teaser_entry_" + id) ;
	teaserentry.style.display = "none" ; 
	var linkid = document.getElementById("plus_minus_link_" + id) ;
	linkid.onclick = new Function('open_teaser('+ id +')') ; 
	var linktextid = document.getElementById("plus_minus_title_link_" + id) ;
	linktextid.onclick = new Function('open_teaser('+ id +')') ; 	
}

function open_teaser(id) 
{
	var item = document.getElementById(id) ; 
	item.className = 'teaser-header-open' ; 
	var plusminusid = document.getElementById("teaser_header_plusminus_" + id) ;
	plusminusid.style.background = "url(/interface/minus.gif) no-repeat" ; 
	var teaserentry = document.getElementById("teaser_entry_" + id) ;
	teaserentry.style.display = "block" ; 
	var linkid = document.getElementById("plus_minus_link_" + id) ;
	linkid.onclick = new Function('close_teaser('+ id +')') ; 
	var linktextid = document.getElementById("plus_minus_title_link_" + id) ;
	linktextid.onclick = new Function('close_teaser('+ id +')') ; 	
}

function close_home_teaser(id) 
{
	var plusminusid = document.getElementById("teaser_header_plusminus_" + id) ;
	plusminusid.style.background = "url(/interface/plus.gif) no-repeat" ; 
	var teaserentry = document.getElementById("teaser_entry_" + id) ;
	teaserentry.style.display = "none" ; 
	var linkid = document.getElementById("plus_minus_link_" + id) ;
	linkid.onclick = new Function('open_home_teaser('+ id +')') ; 
	var linktextid = document.getElementById("plus_minus_title_link_" + id) ;
	linktextid.onclick = new Function('open_home_teaser('+ id +')') ; 	
}

function open_home_teaser(id) 
{
	var plusminusid = document.getElementById("teaser_header_plusminus_" + id) ;
	plusminusid.style.background = "url(/interface/minus.gif) no-repeat" ; 
	var teaserentry = document.getElementById("teaser_entry_" + id) ;
	teaserentry.style.display = "block" ; 
	var linkid = document.getElementById("plus_minus_link_" + id) ;
	linkid.onclick = new Function('close_home_teaser('+ id +')') ; 
	var linktextid = document.getElementById("plus_minus_title_link_" + id) ;
	linktextid.onclick = new Function('close_home_teaser('+ id +')') ; 	
}



/**
* Function : dump()
* Arguments: The data - array,hash(associative array),object
*    The level - OPTIONAL
* Returns  : The textual representation of the array.
* This function was inspired by the print_r function of PHP.
* This will accept some data as the argument and return a
* text that will be a more readable version of the
* array/hash/object that is given.
*/
function dump(arr,level) 
{
	var dumped_text = "" ;
	if(!level) level = 0 ;

	//The padding given at the beginning of the line.
	var level_padding = "" ;
	for(var j=0;j<level+1;j++) level_padding += "    " ;

	if(typeof(arr) == 'object') 
	{ 								//Array/Hashes/Objects
 		for(var item in arr) 
 		{
  			var value = arr[item];
 
  			if(typeof(value) == 'object') 
  			{ //If it is an array,
   				dumped_text += level_padding + "'" + item + "' ...\n";
   				dumped_text += dump(value,level+1);
  			} 
  			else 
  			{
   				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
  			}
 		}
	} 
	else 
	{ //Stings/Chars/Numbers etc.
 		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
} 

