function searchAll(radioObject, form1){
    if (radioObject[1].checked){
        document.forms['hiddenform'].elements['keyword'].value = form1.elements['keyword'].value;
        document.forms['hiddenform'].elements['sort'].value = form1.elements['sort'].value;
        document.forms['hiddenform'].submit();
        return false;
        }
    else{
        form1.submit();
        return true;
        }
}

// ref. application.properties:
var POPUP_WINDOW_WIDTH = 540;
var POPUP_WINDOW_HEIGHT = 740;

var SUBMIT_BUTTON_PROCESSING_TEXT = "Bitte warten";
var SUBMIT_BUTTON_DEFAULT_CLASS = "'button";

// These values are written out on page init (onload)
var NEXT_SUBMIT_BUTTON_VALUE = "weiter";
var BACK_SUBMIT_BUTTON_VALUE = "zurück";

var WARNING_TEXT_ILLEGAL_NUMBER_FORMAT = "Bitte achten Sie auf eine korrekte Eingabe der Zahlen";

// ID of form elements to keep in synch when reloading and going back for ad registration
var TERMS_ACCEPTED_CHECKBOX_ID = "attributes.ADV_TERMS_ACCEPTED";
var AD_REGISTRATION_NEXT_SUBMIT_BUTTON_ID = "nextButtonID";
var AD_REGISTRATION_BACK_SUBMIT_BUTTON_ID = "backButtonID";



function swapCurrency( formname, tofield, fromfield, selectedNo) {
	document.forms[formname].elements[tofield].value = document.forms[formname].elements[fromfield].options[selectedNo].text;
}

function expandCollapse() {
	for (var i=0; i<expandCollapse.arguments.length; i++) {
		var element = document.getElementById(expandCollapse.arguments[i]);
		element.style.display = (element.style.display == "none") ? "block" : "none";
	}
}

function expandCollapseInitiallyHidden() {
	for (var i=0; i<expandCollapseInitiallyHidden.arguments.length; i++) {
		var element = document.getElementById(expandCollapseInitiallyHidden.arguments[i]);
        element.style.display = (element.style.display == "block") ? "none" : "block";
	}
}

function hideIfEmpty(emptyTag, hideTag) {
	// if no hide tag i specified, hide the empty tag.
	if (hideTag == null) {
		hideTag = emptyTag;
	}

	// find tag which might be empty
	var e = document.getElementById(emptyTag);
	if (isEmpty(e)) {
		hide(hideTag);
	}
}

function isEmpty(element) {
	if (element != null && element.childNodes != null && element.childNodes.length <= 1) {
		if (element.childNodes.length == 0) {
			// element has no children
			return 1;
		} else if (element.childNodes.length == 1 && element.childNodes[0].data != null && !element.childNodes[0].data.match("[^ \t\n]")) {
			// element has one child, a the child contains only space, tabs and newlines.
			return 1;
		}
	}

	// the tag contains data
	return null;
}

/**
 *  Add an event listener to a DOM element.
 *
 *  @param element    DOM element, ie. "window"
 *  @param eventName  name of the event, ie. "'submit'", which is the onsubmit-event
 *  @param func       a reference to the function that should be called when the event fires
 **/
function _addEventListener(element, eventName, func) {
	if (element.addEventListener) element.addEventListener(eventName, func, false); // W3C
	else if (element.attachEvent) element.attachEvent('on' + eventName, func); // IE
	else element['on' + eventName] = func; // warning! removes existing event handler(s)
}

function show(object, displayMode) {
    if (document.getElementById && document.getElementById(object) !== null) {
         document.getElementById(object).style.visibility='visible';
         document.getElementById(object).style.display=displayMode?displayMode:'block';
    }
    else if (document.layers && document.layers[object] !== null) {
        document.layers[object].visibility = 'visible';
    }
    else if (document.all) {
        document.all[object].style.zIndex = 100;
        document.all[object].style.visibility = 'visible';
    }
}

function hide(object) {
    if (document.getElementById && document.getElementById(object) !== null) {
         document.getElementById(object).style.visibility='hidden';
         document.getElementById(object).style.display='none';
    }
    else if (document.layers && document.layers[object] !== null)
        document.layers[object].visibility = 'hidden';
    else if (document.all)
         document.all[object].style.visibility = 'hidden';
}

if (document.getElementById) { document.write('<style>.contractArticle {position:absolute;visibility:hidden;display:none}</style>'); }

// Prevent double form submits by using this function as an input submit button's onclick handler.
// Example usage: <input:submit functionString="disableButton(this, 'Processing...', 'smallbuttonDisabled')" ... />
function disableButton(button, disabledButtonText, disabledStyle) {
	if (!disabledButtonText) disabledButtonText = SUBMIT_BUTTON_PROCESSING_TEXT;
	button.onclick = preventDefaultAction;
	button.value = disabledButtonText;
	if (disabledStyle) button.className = disabledStyle;
	else if (button.style) button.style.color = '#BBBBBB';
}

// a modified version of 'disableButton'
// Example usage: <input:submit functionString="disableButton(this, 'Processing...')" ... />
function disableAdRegistrationButton(button, disabledButtonText) {
    if (!disabledButtonText) disabledButtonText = SUBMIT_BUTTON_PROCESSING_TEXT;
//	button.onclick = preventDefaultAction;
	button.value = disabledButtonText;
    if (button.style) button.style.color = '#BBBBBB';
}

// Prevents the default action for this event from being performed.
function preventDefaultAction(event) {
	if (!event) event = window.event; // does not work with Mozilla 1.75 and Netscape 4
	if (event) {
		if (event.preventDefault) event.preventDefault(); // W3C
		else event.returnValue = false; // IE
	}
	return false;
}

function submitForm(formName) {
    document[formName].submit()
}

function setFormAction(formName, actionValue) {
    document[formName].action = actionValue;
}

function setUserAction(formName, actionField, actionValue) {
    document[formName].elements[actionField].value = actionValue;
}

function setNextStep(formName, value) {
    document[formName].nextStep.value = value;
}

function changeImage(name, text) {
   document.images["main"].src = name;
   document.all.imagetext.innerText = text;
}

// Submit a form to a new popup window. Send all form elements, except files.
// Side effects: all input elements of type "file" will have the disabled-attribute set to false.
function submitToNewWindow(form, action, width, height) {
	function disableFileUpload(disable) {
		for (elemName in form.elements) {
			var elem = form.elements[elemName];
			if (elem!=null && elem.type=='file') elem.disabled = disable;
		}
	}
	// Default values
	if (!width) width = POPUP_WINDOW_WIDTH;
	if (!height) height = POPUP_WINDOW_HEIGHT;
	if (!action) action = form.action;

	// Remember old values
	var oldTarget = form.target;
	var oldAction = form.action;

	var windowName = "popupwindow";
	openWindow('', width, height, windowName);
	form.target = windowName;
	form.action = action;

	disableFileUpload(true);
	form.submit();
	disableFileUpload(false);

	// Restore original values
	form.target = oldTarget;
	form.action = oldAction;
	return false;
}

function openWindowWithDefaultSize(url, name) {
    openWindow(url,POPUP_WINDOW_WIDTH,POPUP_WINDOW_HEIGHT,name);
}
function openResizeableWindowWithDefaultSize(url, name) {
    openResizeableWindow(url,POPUP_WINDOW_WIDTH,POPUP_WINDOW_HEIGHT,name);
}

function openWindow(url, width, height, name){
	if (!name) name = "";
    var win;
    win = window.open(url, name, "toolbar=no,location=no,directories=no,status=no,menubar=0,resizable=0,copyhistory=no,width=" + width + ",height=" + height + ",scrollbars=1");
    if (((navigator.appName.indexOf("Netscape") != -1) && (parseInt(navigator.appVersion) >=3)) || ((navigator.userAgent.indexOf("MSIE") != -1) && (parseInt(navigator.appVersion) >= 4)))
        win.focus();
}

function openResizeableWindow(url, width, height, name){
	if (!name) name = "";
    var win;
    win = window.open(url, name, "toolbar=no,location=no,directories=no,status=no,menubar=0,resizable=yes,copyhistory=no,width=" + width + ",height=" + height + ",scrollbars=yes");
    if (((navigator.appName.indexOf("Netscape") != -1) && (parseInt(navigator.appVersion) >=3)) || ((navigator.userAgent.indexOf("MSIE") != -1) && (parseInt(navigator.appVersion) >= 4)))
        win.focus();
}

function openMapWindow(url) {
	mapwin = window.open(url, "Kart", "toolbar=no,location=no,directories=no,status=no,menubar=0,resizable=1,copyhistory=no,width=805,height=800,screenX=0,screenY=0,scrollbars=yes");
	if (((navigator.appName.indexOf("Netscape") != -1) && (parseInt(navigator.appVersion) >=3)) || ((navigator.userAgent.indexOf("MSIE") != -1) && (parseInt(navigator.appVersion) >= 4))) {
		mapwin.focus();
	}
}


function checkTextareaMaxLength (textarea, evt, maxLength) {
  if (textarea.selected && evt.shiftKey)
    // ignore shift click for select
    return true;
  var allowKey = false;
  if (textarea.selected && textarea.selectedLength > 0)
    allowKey = true;
  else {
    var keyCode =
      evt.which ? evt.which : evt.keyCode;
    if (keyCode < 48 && keyCode != 13 && keyCode != 32)
      allowKey = true;
    else
      allowKey = textarea.value.length < maxLength;
  }
  textarea.selected = false;
  if (!allowKey) {
    evt.returnValue = false;
    if (evt.preventDefault) evt.preventDefault();
  }
  return allowKey;
}

/**
 * Adds a counter to a textarea and limits its number of charaters to maxLength.
 */
function addTextAreaCounter(textareaName, maxLength, alertMessage) {
	var textarea = document.getElementById(textareaName)
	var textareaCounterName = textareaName + 'Counter';
	function updateCounter() {
		var value = maxLength - textarea.value.length;
		var counter = textarea.form[textareaCounterName];
		counter.value = value;
	}
	function onKeyPressHandler(evt) {
		if (!evt) evt = window.event;
		return checkTextareaMaxLength(textarea, evt, maxLength);
	}
	function onBlurHandler() {
		if (textarea.value.length>maxLength && alertMessage) {
			alert(alertMessage);
			if (textarea.focus) textarea.focus();
		}
	}

	if (!textarea.form[textareaCounterName]) {
		document.writeln('<input disabled="disabled" type="text" name="' + textareaCounterName + '" size="3" maxlength="3" value=""> characters remaining');
		updateCounter();
		textarea.onkeypress = onKeyPressHandler;
		textarea.onkeyup = textarea.onkeydown = updateCounter;
		textarea.onblur = onBlurHandler;
	} else {
		alert('Error in addTextAreaCounter(): Form already contains a child node named "' + textareaCounterName + '".');
	}
}


/* Checks and unchecks an array of checkboxes */
function allChecked(formname, fieldname){
	if (document[formname].elements[fieldname].length == void(0)) {
		var nr = 1;
 	} else {
		var nr = document[formname].elements[fieldname].length;
    }

	if (document[formname].elements["all_"+fieldname].checked == true) {
		var value = true;
	} else {
		var value = false;
    }

	for (var i=0;i<nr;i++) {
		if (nr == 1) {
			document[formname].elements[fieldname].checked = value;
		} else {
		    document[formname].elements[fieldname][i].checked = value;
		}
	}
}

/* Checks or unchecks an array of checkboxes, typically using an onclick method in a link */
function setGroupChecked(formname, fieldname, newstate){
	if (document[formname].elements[fieldname].length == void(0)) {
		var nr = 1;
 	} else {
		var nr = document[formname].elements[fieldname].length;
    }

	for (var i=0;i<nr;i++) {
		if (nr == 1) {
			document[formname].elements[fieldname].checked = newstate;
		} else {
		    document[formname].elements[fieldname][i].checked = newstate;
		}
	}
}

function splitComposite(form,compositefield,field1,field2) {

    var compValue = document.forms[form].elements[compositefield].value;
    var tmpArr = compValue.split("|");
    document.forms[form].elements[field1].value = tmpArr[0];
    document.forms[form].elements[field2].value = tmpArr[1];
}

function setSelected(form, field) {
	if (document.forms[form].elements[field].options) {
		var length = Number(document.forms[form].elements[field].options.length);
		for (var i=0;i<length;i++) {
			document.forms[form][field][i].selected = true;
		}
	}
}


function copyChild(form,parent,from,to,parentfield,insertparenttext) {
   var parentLenght = Number(document.forms[form].elements[parent].options.length);
   var parentText = "";
   var parentValue = "";

   for (var p=0;p<parentLenght;p++) {
        if (document.forms[form].elements[parent].options[p].selected) {
            parentText = document.forms[form].elements[parent].options[p].text;
            parentValue = document.forms[form].elements[parent].options[p].value;
        }
   }
   var length = Number(document.forms[form].elements[from].options.length);
   for (var i=0;i<length;i++) {
     if (document.forms[form][from][i].selected) {

        var valuefrom = document.forms[form][from][i].value;
        var textfrom =  parentText + " " + document.forms[form][from][i].text;
        var all = false;
        if (valuefrom == '0') {
            all = true;
 	}
 	var exists = false;

        var tolength = Number(document.forms[form].elements[to].options.length);
        for (var j=0;j<tolength;j++) {
            var valueto = document.forms[form][to][j].value;
            var textto =  document.forms[form][to][j].text;

            if (valueto == valuefrom && valueto != 0 || (textto == textfrom)) {
                 exists = true;
            }
        }

        if (!exists) {
            if (insertparenttext == false) {
                parentText = "";
            }
            var l = document.forms[form].elements[to].options.length;
            if (all) {
                document.forms[form][to][l] = new Option(parentText + " " + document.forms[form][from][i].text,parentValue);
            } else {
                document.forms[form][to][l] = new Option(parentText + " " + document.forms[form][from][i].text,document.forms[form][from][i].value);
            }
            document.forms[form][to][l].selected = true;
        }
      }
   }
}


function deleteChild(form,from,all,parentfield) {
    var length = Number(document.forms[form].elements[from].options.length);
    if (!all) {
        for (var i=length-1;i>=0;i--) {
            if (document.forms[form][from][i].selected) {
                if (navigator.appName.indexOf("Netscape") != -1) {
                    document.forms[form].elements[from].options[i]=null;
                } else if (navigator.userAgent.indexOf("Opera") != -1) {
                    document.forms[form].elements[from].options.remove(i);
                } else if ((navigator.userAgent.indexOf("MSIE") != -1) && (parseInt(navigator.appVersion) >= 4)) {
                    document.forms[form].elements[from].options.remove(i);
                } else if ((navigator.userAgent.indexOf("MSIE") != -1) && (parseInt(navigator.appVersion) < 4)) {
                    document.forms[form].elements[from].options[i].selected = false;
                } else {
                    document.forms[form].elements[from].options[i].selected = false;
                }
            } else {
                    document.forms[form].elements[from].options[i].selected = true;
            }
        }
   } else {
        if (navigator.appName.indexOf("Netscape") != -1) {
            for (var i=(length); i >= 0; i--) {
                document.forms[form].elements[from].options[i]=null;
            }
        } else if (navigator.userAgent.indexOf("Opera") != -1) {
            for(var i=(length); i >= 0; i--) {
                document.forms[form].elements[from].options.remove(i);
            }
        } else if ((navigator.userAgent.indexOf("MSIE") != -1) && (parseInt(navigator.appVersion) >= 4)) {
            for(var i=(length); i >= 0; i--) {
                document.forms[form].elements[from].options.remove(i);
            }
        } else if ((navigator.userAgent.indexOf("MSIE") != -1) && (parseInt(navigator.appVersion) < 4)) {
            for (var i=(length-1); i >= 0; i--) {
                document.forms[form].elements[from].options[i].selected = false;
            }
        } else {
            for (var i=(length-1); i >= 0; i--) {
                document.forms[form].elements[from].options[i].selected = false;
            }
        }
   }

}

function setCheckedRegions(form,name,value) {
	var valueArr = value.split(";");
	for (var i=0;i<document[form][name].length;i++) {
		for (var ii=0;ii<valueArr.length;ii++) {
			if (document[form][name][i].value == valueArr[ii]) document[form][name][i].checked = true;
		}
	}
}

function setCheckedSubRegions(form,name,name2,value,subRegion) {
    var childs = childArr[value];
    var tmpArr = childs.split("|");
    var tmpArr2;
    var id;
    var checked = document[form][name][value].checked;

    if (!subRegion) {
        var exit = false;
        for (var d=0;d<document[form][name2].length;d++) {
            for (var c=0;c<tmpArr.length;c++) {
                tmpArr2 = tmpArr[c].split(";");
                id = tmpArr2[0];
                if (document[form][name2][d].value == id) {
                    document[form][name2][d].checked = checked;
                    exit = true;
                }
            }
        }
    } else {
        checked = true;
        for (var s=0;s<tmpArr.length;s++) {
            if (document[form][name2][s].checked == false) {
                checked = false;
            }
        }

        if (checked) {
            document[form][name][value].checked = true;
        } else {
            document[form][name][value].checked = false;
        }

    }

}


function setCheckedSubRegionsVisible(form,name,value,regions) {
	var subRegionsArr;
	var tempArr;
	var lastChanged;;
	var found = false;
	var valueArr = value.split(";");
	var mainRegionsArr = regions.split("#");
	for (var i=0;i<mainRegionsArr.length;i++) {
		tempArr = mainRegionsArr[i].split("|");
		subRegionsArr = tempArr[1].split(";");
		for (var ii=0;ii<subRegionsArr.length;ii++) {
			for (var iii=0;iii<valueArr.length;iii++) {
				if (subRegionsArr[ii].length > 0 && valueArr[iii].length > 0 && subRegionsArr[ii] == valueArr[iii]) {
					if (lastChanged != tempArr[0]) {
						menu("submenu"+tempArr[0]);
						swapImage(tempArr[0]);
						lastChanged = tempArr[0];
					}
				}
			}
		}
	}
}

function fillChilds(form,name1,name2,allchilds,allparents) {
	emptySelectBox(form, name1, allchilds);
	var childid = 0;
	var start = 1;
	var name2Length = document[form][name2].length;
	if (allchilds == true) {
		childid = 1;
	}
	if (allparents == false) {
		start = 0;
	}
    var selectedvalue = 0;
	for (var i=start;i<name2Length;i++) {
		if (document[form][name2][i].selected) {

            selectedvalue = parentArr[i-start].split(";")[0];
			var tmpArr = childArr[i-start].split("|");
			for (var j=0;j<tmpArr.length;j++) {
				var tmpArr2 = tmpArr[j].split(";");
			    document[form].elements[name1].options[childid] = new Option(tmpArr2[1],tmpArr2[0]);
                childid++;
			}
		}
	}
    if (allchilds) {
        document[form].elements[name1].options[0].value = '0';
    }
}

function fillChilds_FirstEntryCustomised(form,name1,name2,allparents,value,text,defaultTextIfNoParentSelected) {
	var childid = 0;
	var start = 1;
	var name2Length = document[form][name2].length;

	if (allparents == false) {
		start = 0;
	}
    var selectedvalue = 0;
	for (var i=start;i<name2Length;i++) {
		if (document[form][name2][i].selected) {
            document[form].elements[name1].options.length = 0;
            document[form].elements[name1].options[childid] = new Option(text, value);
            childid++;
            selectedvalue = parentArr[i-start].split(";")[0];
			var tmpArr = childArr[i-start].split("|");
			for (var j=0;j<tmpArr.length;j++) {
				var tmpArr2 = tmpArr[j].split(";");
			    document[form].elements[name1].options[childid] = new Option(tmpArr2[1],tmpArr2[0]);
                childid++;
			}
		}
	}
    // No parent selected. Reset all values in the child.
    if (!childid) {
        document[form].elements[name1].options.length = 0;
        document[form].elements[name1].options[childid] = new Option(defaultTextIfNoParentSelected?defaultTextIfNoParentSelected:text, value);
    }
}

function fillChildsLocation(form,name1,name2,allchilds,allparents) {
	emptySelectBox(form, name1, allchilds);
	var childid = 0;
	var start = 1;
	var name2Length = document[form][name2].length;
	if (allchilds == true) {
		childid = 1;
	}
	if (allparents == false) {
		start = 0;
	}
    var selectedvalue = 0;
	for (var i=start;i<name2Length;i++) {
		if (document[form][name2][i].selected) {

            selectedvalue = parentArrLocation[i-start].split(";")[0];
            var tmpArr = childArrLocation[i-start].split("|");
            for (var j=0;j<tmpArr.length;j++) {
				var tmpArr2 = tmpArr[j].split(";");
			    document[form].elements[name1].options[childid] = new Option(tmpArr2[1],tmpArr2[0]);
                childid++;
			}
		}
	}
    if (allchilds) {
        document[form].elements[name1].options[0].value = '0';
    }
}

// Used by the <input:select> tag to remember options when the user navigates back in history
function rememberoptions_load(inputSelect) {
	if (inputSelect && inputSelect.form && inputSelect.options) {
		var hValues = inputSelect.form[inputSelect.name + '_values'];
		var hText = inputSelect.form[inputSelect.name + '_text'];
		var hSelected = inputSelect.form[inputSelect.name + '_selected'];
		if (hValues && hText && hSelected && hValues.value.length > 0) {
			// deserialize the arrays from the hidden fields
			var optionValues = hValues.value.split(';');
			var optionText = hText.value.split(';');
			var optionSelected = hSelected.value.split(';');

			// Delete all existing options.
			emptySelectBox(inputSelect.form.name, inputSelect.name, true)

			for (var i=0; i<optionValues.length; ++i) {
				// Create a new option
				var option = new Option(optionText[i], optionValues[i]);
				// Add the option to the select tag
				inputSelect.options[i] = option;
				// Mark the option as selected if it should be
				for (var j=0; j<optionSelected.length; ++j) if (option.value == optionSelected[j]) {
					option.selected = true;
				}
			}
		}
	}
}

// Used by the <input:select> tag to remember options when the user navigates back in history
function rememberoptions_save(inputSelect) {
	if (inputSelect && inputSelect.form && inputSelect.options) {
		var options = inputSelect.options;
		var optionValues = new Array(), optionText = new Array(), optionSelected = new Array();

		// Store options to arrays
		for (var i=0; i<options.length; ++i) {
			var option = options[i];
			optionValues.push(option.value);
			optionText.push(option.text);
			if (option.selected) optionSelected.push(option.value);
		}

		// Serialize the arrays to hidden fields
		inputSelect.form[inputSelect.name + '_values'].value = optionValues.join(';');
		inputSelect.form[inputSelect.name + '_text'].value = optionText.join(';');
		inputSelect.form[inputSelect.name + '_selected'].value = optionSelected.join(';');
	}
}

// Used by the <input:select> tag to remember options when the user navigates back in history
function rememberoptions_registerEventHandlers(formName, selectTagName) {
	// Find formName if it's missing.
	if (!formName || formName.length==0) {
		var tags = document.getElementsByName(selectTagName);
		if (tags.length>0 && tags[0] && tags[0].form && tags[0].form.name) formName = tags[0].form.name;
	}
	var form = document.forms[formName];
	if (form) {
		var selectTag = form[selectTagName];
		if (selectTag) {
			_addEventListener(form, 'submit', function() { rememberoptions_save(selectTag); });
			_addEventListener(window, 'load', function() { rememberoptions_load(selectTag); });
		}
	}
}

function emptySelectBox(form, boxname, allchilds){
    if (document[form][boxname].disabled==false) {
        var length = Number(document.forms[form].elements[boxname].options.length);

        if (navigator.appName.indexOf("Netscape") != -1) {
            for (var i=(length); i > 0; i--) {
                document.forms[form].elements[boxname].options[i]=null;
            }
        } else if (navigator.userAgent.indexOf("Opera") != -1) {
            for(var i=(length); i > 0; i--) {
                document.forms[form].elements[boxname].options.remove(i);
            }
        } else if ((navigator.userAgent.indexOf("MSIE") != -1) && (parseInt(navigator.appVersion) >= 4)) {
            for(var i=(length); i > 0; i--) {
                document.forms[form].elements[boxname].options.remove(i);
            }
        } else if ((navigator.userAgent.indexOf("MSIE") != -1) && (parseInt(navigator.appVersion) < 4)) {
            for (var i=(length-1); i > 0; i--) {
                document.forms[form].elements[boxname].options[i].selected = false;
            }
        } else {
            for (var i=(length-1); i > 0; i--) {
                document.forms[form].elements[boxname].options[i].selected = false;
            }
        }
        if ((navigator.appName.indexOf("Netscape") == -1) || ((navigator.appName.indexOf("Netscape") != -1) && (parseInt(navigator.appVersion) > 4))) {
            if (allchilds) {
                document.forms[form].elements[boxname].options[0] = new Option("Alle","0",true,true);
            } else {
                document.forms[form].elements[boxname].options[0] = new Option("","0",true,true);
            }
            document.forms[form].elements[boxname].options[0].selected = true;
        }
    }
}

function removeNonDigits(inputObject) {
	inputObject.value = inputObject.value.replace(/[\.,:]-$/,'');
	inputObject.value = inputObject.value.replace(/[\.,:][0-9][0-9]$/,'');
	inputObject.value = inputObject.value.replace(/[^0-9]/g,'');
}

function removePrecedingZeros(inputObject) {
	inputObject.value = inputObject.value.replace(/^0+/,'');
}

function removeExceptNumbersAndLetters(inputObject) {
	inputObject.value = inputObject.value.replace(/\W/g,'');
}

function MM_findObj(n, d) {
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function menu(objName) {
  var obj = MM_findObj(objName);
  var theProp = "style.display";
  if (obj.style.display == "none"){
    var theValue = "block";
  } else {
    var theValue = "none";
  }
  if (obj && (theProp.indexOf("style.")==-1 || obj.style)){
    if (theValue == true || theValue == false)
      eval("obj."+theProp+"="+theValue);
    else eval("obj."+theProp+"='"+theValue+"'");
  }
}

function swapImage(intImage) {
	var filenamePosition = document.getElementById("image" + intImage).src.indexOf('collapse2.gif');
	var originalSrc = document.getElementById("image" + intImage).src;
	if (filenamePosition > 0) {
		document.getElementById("image" + intImage).src = originalSrc.substring(0,filenamePosition) + 'expand2.gif';
	} else {
		filenamePosition = document.getElementById("image" + intImage).src.indexOf('expand2.gif');
		document.getElementById("image" + intImage).src = originalSrc.substring(0,filenamePosition) + 'collapse2.gif';
	}
    return(false);
}

function swapImage1(intImage) {
	var filenamePosition = document.getElementById("image" + intImage).src.indexOf('collapse1.gif');
	var originalSrc = document.getElementById("image" + intImage).src;
	if (filenamePosition > 0) {
		document.getElementById("image" + intImage).src = originalSrc.substring(0,filenamePosition) + 'expand1.gif';
	} else {
		filenamePosition = document.getElementById("image" + intImage).src.indexOf('expand1.gif');
		document.getElementById("image" + intImage).src = originalSrc.substring(0,filenamePosition) + 'collapse1.gif';
	}
    return(false);
}

// Merge two or more collections.
// Example usage: var result = concat_collections(divTag.getElementsByTagName('input'), divTag.getElementsByTagName('textarea'))
function concat_collections() {
	var result = new Array();
	for (var i=0; i<concat_collections.arguments.length; ++i) {
		var collection = concat_collections.arguments[i];
		for (var j=0; j<collection.length; ++j) result.push(collection[j]);
	}
	return result;
}

// Find all input fields that are children of a given tag and enable or disable them.
function toggle_enable_inputfields(parentTagId, enable, disabledBgColor) {
	if (!disabledBgColor) disabledBgColor = '#DDDDDD';
	var divTag = document.getElementById(parentTagId);
	if (divTag) {
		var inputFields = concat_collections(divTag.getElementsByTagName('input'), divTag.getElementsByTagName('textarea'));
		for (var i=0; i<inputFields.length; ++i) {
			inputFields[i].disabled = !enable;
			// Change the background color. IE only.
			var bgColor = '';
			if (!enable) bgColor = disabledBgColor;
			if (inputFields[i].runtimeStyle) inputFields[i].runtimeStyle.backgroundColor = bgColor;
		}
	}
}

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

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

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

/*
* See the init function
*/



function updateNextButton(tickId, buttonId, buttonText, disabledStyle, enabledStyle) {
    var tick =    document.getElementById(tickId);
    var button = document.getElementById(buttonId);
//alert("tick("+tickId +"): " + tick + " button("+ buttonId +"): " + button);
    if ( null == tick)  {
        // form already submitted with user agreeing to terms. The submit button should already be enabled,
    }
    else {
        if (tick.checked) {
            button.disabled = false;
            if (enabledStyle) {
                button.className = enabledStyle;
            } else {
                button.className = SUBMIT_BUTTON_DEFAULT_CLASS;
            }
        }
        else {
            button.disabled = true;
            if (disabledStyle) {
                button.className = disabledStyle;
            }
        }
    }

    if (button == null) {}
    else {
        // name was changed when submitted:
        if (buttonText != null) {
            button.value = buttonText;
        } else {
            button.value = NEXT_SUBMIT_BUTTON_VALUE;
        }
    }
}

function updateBackButton(tickId, buttonId, buttonText) {
    var tick =    document.getElementById(tickId);
    var button = document.getElementById(buttonId);
//alert("tick("+tickId +"): " + tick + " button("+ buttonId +"): " + button);
    if ( null == tick)  {
        // form already submitted with user agreeing to terms. The submit button should already be enabled,
    }
    else {
        if (tick.checked) { button.disabled = false; }
        else { button.disabled = true; }
    }


 if (button == null) { }
 else {
     // name was changed when submitted:
     if (buttonText != null) {
         button.value = buttonText;
     } else {
         button.value = BACK_SUBMIT_BUTTON_VALUE;
     }
 }
 }

function init() {
    // run as part of body.onload on ad registration page.
    //make next-button synch with check box for agreeing to advertising terms:
//    alert("running init");
    updateNextButton(TERMS_ACCEPTED_CHECKBOX_ID,AD_REGISTRATION_NEXT_SUBMIT_BUTTON_ID);
}

/*
 * Copied from Hebbes as variaPriceFieldCheck
 */
function longPriceFieldCheck(inputObject) {
	var temp = inputObject.value;
	temp = temp.replace(/[,]$/,'');
	temp = temp.replace(/[^0-9,]/g,'');
	if (temp != inputObject.value) {
	    alert(WARNING_TEXT_ILLEGAL_NUMBER_FORMAT);
        inputObject.value = temp;
    }
}

/*
 * Special for Kalaydo:
 * NO_OF_ROOMS: number of rooms can be given as 3.4 or 4.5
 * meaning 3-4 or 4-5 rooms
 * Almost as longPriceFieldCheck() method over,
 * but allowing '.' instead of ','
 */
function nmbOfRoomsFieldCheck(inputObject) {
	var temp = inputObject.value;
	temp = temp.replace(/[.]$/,'');
	temp = temp.replace(/[^0-9.]/g,'');
	if (temp != inputObject.value) {
	    alert(WARNING_TEXT_ILLEGAL_NUMBER_FORMAT);
        inputObject.value = temp;
    }
}

/**
 * This function are used to check if a JSON object has more than one element.
 * The JSON object has no length property
 *
 * @param jsonObject
 */
function isSingle(jsonObject) {
    var counter = 0;
    var single = true;
    for (k in jsonObject) {
        counter++;
        if (counter > 1) {
            single = false;
            break;
        }
    }
    return single;
}

/**
 * Refill a select list with options, and add an additional option at top of the list.
 *
 * @param field - jQuery selection string.
 * @param options
 * @param topOptionLabel - An additional first option on the list. i.e. "Select from list ...". If null, then no additional first option.
 */
function jQueryFillList(field, options, topOptionLabel) {
    jQuery(field).removeOption(/./).removeOption(0);
    if (topOptionLabel) {
        jQuery(field).addOption("", topOptionLabel);
    }
    jQuery(field).addOption(options, false);
}

/**
 * Update selected products. Will return html, and insert it to div#order.
 *
 * @param form
 * @param ajaxUrl
 */
function updateOrder(form, ajaxUrl) {
    var parameters = jQuery(form).serialize();
    jQuery.ajax({
        url: ajaxUrl, type: 'POST', dataType: 'html', timeout: 2000,
        data: parameters,
        error:   function(){/* If error then no changes will occur. */},
        success: function(html){
            jQuery("div#order").html(html);
        }
    });
}

/**
 * Clears the 'descriptive' value from an input element.
 * Dynamically remove the marker class if specified.
 *
 * @param thisfield
 * @param defaulttext
 * @param markerClass
 */
function clickclear(thisfield, defaulttext, markerClass) {
    if (markerClass) {
        jQuery(thisfield).removeClass(markerClass);
    }
    if (thisfield.value == defaulttext) {
        thisfield.value = "";
    }
}

/**
 * Adds a 'descriptive' value to an input element if empty.
 * Dynamically set a marker class if specified.
 *
 * @param thisfield
 * @param defaulttext
 * @param markerClass
 */
function clickrecall(thisfield, defaulttext, markerClass) {
    if (thisfield.value == "" || thisfield.value == defaulttext) {
        thisfield.value = defaulttext;
        if (markerClass) {
            jQuery(thisfield).addClass(markerClass);
        }
    }
}

/**
 * Unobtrusive windows.onload replacement. Will keep existing onload events.
 **/
function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            oldonload();
            func();
        }
    }
}

/**
 * Script that will set image size to myMaxWidth/Height if they are larger in any direction.
 * @param myAnchor  (will work on all images inside this element)
 * @param myMaxWidth max height
 * @param myMaxHeight max witdh
 * Usage: addLoadEvent(function(){adjustImageSize("resultlist",150,100);});
 **/
function adjustImageSize(myAnchor, myMaxWidth, myMaxHeight) {
    var myAnchorElement = document.getElementById(myAnchor);
    if (myAnchorElement) {
        var myImages = myAnchorElement.getElementsByTagName("img");
        if (myImages) {
            for (var x = 0; x < myImages.length; x++) {
                if (myImages[x].width > myMaxWidth) {
                    myImages[x].width = myMaxWidth;
                }
                if (myImages[x].height > myMaxHeight) {
                    myImages[x].height = myMaxHeight;
                }
            }
        }
    }
}


/**
 * Help script for iadinstance
 * Handle the "iadinstace.xx" element in the url if it exists. iadinstance.xx is always the last
 * part in the url, we must add "/result" in the "middle" if iadinstance.xx exists.
 */

function appendPathToUrl(baseUrl, pathToAppend) {
    var iadInstanceRegEx = /\/?iadinstance.[0-9]+\/?/;
    var match = iadInstanceRegEx.exec(baseUrl);
    if (match !== null) {
        var baseUrlWithOneSlash = concatenateWithOneSlash(baseUrl.replace(iadInstanceRegEx, ''), pathToAppend);
        return concatenateWithOneSlash(baseUrlWithOneSlash, match[0]);
    } else {
        return concatenateWithOneSlash(baseUrl, pathToAppend);
    }

    
}
/**
 * Concatenates two element and ensures that only one slash is between the elements, eg. baseurl/pathElements
 * @param elem1, eg baseurl
 * @param elem2, path elements
 */
function concatenateWithOneSlash(elem1, elem2) {
    elem1 = elem1.replace(/\/$/, "");
    elem2 = elem2.replace(/^\//, "");
    return elem1+"/"+elem2;
}

/*
 * Prevents that a form will be submitted by pressing the enter-/return-key. The only way to submit it is to click on a submit button.
 * See KLDO-697: after a validation error the bap-input-page will be displayed again but the form action is already set to shoppingcart (the next step).
 *                           while clicking on the submit button the form action is changed to the bap-input-action.
 *                           but if pressing enter the form will be submitted to the shoppingcart without any validation 
 *
 * See KLDO-792: with the previous fix we suppressed the enter key in a textarea field so no newlines would be possible
 *                           because of that we have to check the eventSource and allow enter keys in textareas explicitly
 */

function isEnterKey(e){
    var key;
    if(window.event)
        key = window.event.keyCode;     //IE
    else
        key = e.which;     //firefox

    if(key == 13)
        return true;

    return false;

}

function disableEnterKey(e) {
    var eventTargetNodeName = "";
    if(e.target != null){
        eventTargetNodeName = e.target.nodeName; //FF
    }else{
        eventTargetNodeName = e.srcElement.nodeName; //IE
    }
     if(isEnterKey(e)){
         if(eventTargetNodeName == 'TEXTAREA'){
             return true;
         }
         return false;
     }
     else
          return true;
}