
/***********************************************************/
/******************* FormElement-Tools *********************/

// Focus of defined field
// call: focusField(name of field to focus[, name of form])
function focusField(strFieldName, strFormName){
	if(!strFormName){
		var objForm = document.forms[0];
		strFormName="[0]";
	} else 
		var objForm = document.forms[strFormName];
	objField = objForm[strFieldName];
	// Message if the element to select does not exist
	if (typeof(objField) == 'undefined'){
		// remove comment below for debugging
		// alert("Feld '" + strFieldName + "' in Formular '" + strFormName + "' des Focus nicht vorhanden!")
	} else {
		objField.focus();
		// Don't select field if it is a selectbox
		(objField.type != "select-one") ? objField.select() : 0;
	}
}



/******************************************************/
/******************* DHTML-Tools **********************/
/* (Used e.g. in Startpage with bestOf-Entries)       */

// Switch display-property. Hide if visible - show if not.
function toggleDisplay(strElement){
	var objRef = getReference(strElement);
	(objRef.display == "none" || objRef.display == "") ? showElement(strElement) : hideElement(strElement);	
}

// Show Element (visibility)
function showElement(strElementName){
	var objRef = getReference(strElementName);
	objRef.display = "block";
}

// Hide Element (visibility)
function hideElement(strElementName){
	var objRef = getReference(strElementName);
	objRef.display = "none";
}

// Set and get Color
function setColor(strElementName, strColor){
	var objRef = getReference(strElementName);	
	objRef.color = strColor;
}
function getColor(strElementName){
	var objRef = getReference(strElementName);	
	return objRef.color;
}

// Set and get BackgroundColor
function setBackgroundColor(strElementName, strColor){
	var objRef = getReference(strElementName);
	objRef.backgroundColor  = strColor;
}
function getBackgroundColor(strElementName){
	var objRef = getReference(strElementName);
	return objRef.backgroundColor;
}

// Disable and enable elements
var strCurrTextfieldColor, strCurrentTextfieldBG;
function disableElement(strElementID){
	// store current element-properties
	strCurrTextfieldColor = getColor(strElementID);
	strCurrentTextfieldBG = getBackgroundColor(strElementID);
	// set disabled-properties of element
	var objElement = getDom(strElementID);
	if(typeof objElement != "undefined"){
		setColor(strElementID, "#666666");
		switch(objElement.type){
			case "text":				
				setBackgroundColor(strElementID, "#cccccc");
				objElement.disabled = true;
				break;
		}		
	}
}
function enableElement(strElementID){
	// use default-properties for element (e.g. textfield) if nothing available
	if(!strCurrTextfieldColor) var strCurrTextfieldColor = "#000000";
	if(!strCurrentTextfieldBG) var strCurrentTextfieldBG = "#ffffff";
	// set enabled-properties of element
	var objElement = getDom(strElementID);
	if(typeof objElement != "undefined"){
		setColor(strElementID, strCurrTextfieldColor);
		switch(objElement.type){
			case "text":				
				setBackgroundColor(strElementID, strCurrentTextfieldBG);
				objElement.disabled = false;
				break;
		}
	}
}

// Get Object-Reference, dependent on browser
function getReference(strElementName){
	var objRef;
	if(document.all) objRef = document.all[strElementName].style;
	else if(document.layers) objRef = document[strElementName];
	else if(document.getElementById) objRef = document.getElementById(strElementName).style;
	return objRef;
}

function getDom(strElementName){
	var objRef;
	if(document.all) objRef = document.all[strElementName];
	else if(document.layers) objRef = document[strElementName];
	else if(document.getElementById) objRef = document.getElementById(strElementName);
	return objRef;
}
/*****************************************/
/***        Form-Element Class         ***/
/*****************************************/
var FormElementClass;
function FormElementClass(){
	FormElementClass = this;
}

var f = FormElementClass.prototype;

f.restrictToPhone = function(strElementID){
	this.objElement = getDom(strElementID);
	(window.Event) ? document.captureEvents(Event.KEYPRESS) : 0;  	// Netscape, Mozilla, Opera Handling
	eval(this.objElement).onkeypress = this.checkRestrictToPhone;	// IE Handling	
}
f.checkRestrictToPhone = function(e){
	// get KeyEvent-Object Information (ev = Event, pressedKey = pressed Key, target = target element)
	var objKeyEventInfo = FormElementClass.getKeyInfo(e);
	// Get pressed key from returned charCode
	var strEnteredKey = String.fromCharCode(objKeyEventInfo.pressedKey);
	//alert("Key '" + objKeyEventInfo.pressedKey + "' (" + strEnteredKey + ") was pressed at field '" + objKeyEventInfo.target.name + "'");	
	// Return false if no number or some further defined keys were not pressed
	if(strEnteredKey.search(/^[0-9]+$/) == -1 
		&& objKeyEventInfo.pressedKey != 0  	// Arrow-Keys
		&& objKeyEventInfo.pressedKey != 13 	// ENTER
		&& objKeyEventInfo.pressedKey != 32 	// SPACE
		&& objKeyEventInfo.pressedKey != 8) {	// DEL
			return false;
	}
}
f.getKeyInfo = function(e){
	var ev = (window.Event) ? e : window.event;
	var pressedKey = (window.Event) ? ev.which : ev.keyCode;
	var target = (window.Event) ? ev.target : ev.srcElement;
	//alert("Key '" + pressedKey + "' was pressed at field '" + target.name + "'");
	return objKeyEvent = {ev:ev, pressedKey:pressedKey, target:target};
}
