var elements = new Array();
var submitValue = "Senden";
function FormElement(label,typ,nValue,index,require)
{
	this.label = label;
	this.typ = typ;
	this.nValue = nValue;
	this.index = index;
	this.requiredField = require;
}
function trim(s) {
 	return s.replace (/^\s+/, '').replace (/\s+$/, '');
}
function checkEmail(email)
{
 	strReg = "^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$";
 	regex = new RegExp(strReg);
 	return(regex.test(email));
}
function spitAndCheckEmail(emails)
{
	check = true;
	emails = emails.split(",");
	for(i=0;i<emails.length;i++)
	{
		if(checkEmail(trim(emails[i])) != true)
		{
			check = false;
			break;
		}
	}
	return check;
}
function doSubmit()
{
	if(elements.length == 0)
	{
		alert("Es sollte mindestens 1 Formular Element existieren");
	}
	else if(document.forms.main_form.form_title.value == "")
	{
		alert("Bitten geben Sie einen Titel an.");
	}
	else if(document.forms.main_form.form_email.value == "")
	{
		alert("Es muss mindestens eine E-Mail Adresse angegeben werden.");
	}
	else if(spitAndCheckEmail(document.forms.main_form.form_email.value) != true) 
	{
		alert("Mit mindestens einer E-Mail Adresse stimmt etwas nicht.");
	}
	else{
		writeForm();
		document.forms['main_form'].submit();
	}
}
function generateHiddens(i)
{
	if(elements[i].requiredField)
	{
		req = "1";
	}
	else
	{
		req = "0";
	}
	return 	"<input type=\"hidden\" name=\"element_"+i+"[0]\" value=\""+i+"\" />" +
			"<input type=\"hidden\" name=\"element_"+i+"[1]\" value=\""+elements[i].typ+"\" />" +	
			"<input type=\"hidden\" name=\"element_"+i+"[2]\" value=\""+req+"\" />" +
			"<input type=\"hidden\" name=\"element_"+i+"[3]\" value=\""+elements[i].label+"\" />";	
}
function syncSettings()
{
	document.forms.main_form.form_title.value = document.forms.form_settings.form_title.value;
	document.forms.main_form.form_email.value = document.forms.form_settings.form_email.value;
	document.forms.main_form.form_subject.value = document.forms.form_settings.form_subject.value;
	document.forms.main_form.form_redirect.value = document.forms.form_settings.form_redirect.value;
}
function writeForm()
{
	s = "";
	for(i=0;i<elements.length;i++)
	{
		if(elements[i] != null)
		{
			switch(elements[i].typ)
			{
				case "Text" 	: s += 	"<div class=\"form_row\" onmouseout=\"bg('"+i+"','transparent')\" onmouseover=\"bg('"+i+"','#FFFFFF')\" id=\"element_"+i+"\">" +
											"<div class=\"form_label\">" +
												"<textarea onClick=\"this.focus(); this.select();\" class=\"form_tf_label\" type=\"text\" name=\"label_"+i+"\" onblur=\"setLabel("+i+",this)\">" +
													elements[i].label +
												"</textarea>" +
											"</div>" +
											"<div class=\"form_input\">" +
													generateHiddens(i) +
												"<input class=\"form_tf_input\" type=\"text\" name=\"element_"+i+"[]\" onblur=\"setValue("+i+",this)\" value=\""+elements[i].nValue+"\" />" +
											"</div>" + form_buttons(""+i+"") +
										"</div>" + 
										"<div class=\"clear\"></div>"; break; 
				
				case "Textarea"	: s += 	"<div class=\"form_row\" onmouseout=\"bg('"+i+"','transparent')\" onmouseover=\"bg('"+i+"','#FFFFFF')\"  id=\"element_"+i+"\">" +
											"<div class=\"form_label\">" +
												"<textarea onClick=\"this.focus(); this.select();\" class=\"form_ta_label\" type=\"text\" name=\"label_"+i+"\" onblur=\"setLabel("+i+",this)\">"+
													elements[i].label+
												"</textarea>" +
											"</div>" +
											"<div class=\"form_input\">" +
													generateHiddens(i) +
												"<textarea class=\"form_ta_input\" name=\"element_"+i+"[]\" onblur=\"setValue("+i+",this)\">" +
													elements[i].nValue+
												"</textarea>" +
											"</div>" + form_buttons(""+i+"") +
										"</div><div class=\"clear\"></div>"; break; 
									
				case "Checkbox" : s += 	"<div class=\"form_row\" onmouseout=\"bg('"+i+"','transparent')\" onmouseover=\"bg('"+i+"','#FFFFFF')\"  id=\"element_"+i+"\">" +
											"<div class=\"form_label\">" +
												"<textarea onClick=\"this.focus(); this.select();\" class=\"form_tf_label\" type=\"text\" name=\"label_"+i+"\" onblur=\"setLabel("+i+",this)\">"+
													elements[i].label +
												"</textarea>"+
											"</div>"+
											"<div class=\"form_input\">" +
												generateHiddens(i) +
												generateCheckboxes(i)+
											"</div>" + form_buttons(""+i+"") +
										"</div>" + 
										"<div class=\"clear\"></div>"; break; 
										
				case "Radio" 	: s += 	"<div class=\"form_row\" onmouseout=\"bg('"+i+"','transparent')\" onmouseover=\"bg('"+i+"','#FFFFFF')\"  id=\"element_"+i+"\">" +
											"<div class=\"form_label\">" +
												"<textarea onClick=\"this.focus(); this.select();\" class=\"form_tf_label\" type=\"text\" name=\"label_"+i+"\" onblur=\"setLabel("+i+",this)\">"+
													elements[i].label+
												"</textarea>" +
											"</div>" +
											"<div class=\"form_input\">"+
												generateHiddens(i) +
												generateRadiobuttons(i) +
											"</div>" + form_buttons(""+i+"") +
										"</div>" + 
										"<div class=\"clear\"></div>"; break; 
										
				case "Select" 	: s += 	"<div class=\"form_row\" onmouseout=\"bg('"+i+"','transparent')\" onmouseover=\"bg('"+i+"','#FFFFFF')\"  id=\"element_"+i+"\">" +
											"<div class=\"form_label\">" +
												"<textarea onClick=\"this.focus(); this.select();\" class=\"form_tf_label\" type=\"text\" name=\"label_"+i+"\" onblur=\"setLabel("+i+",this)\">" +
													elements[i].label +
												"</textarea>" +
											"</div>" +
											"<div class=\"form_input\">" +
												generateHiddens(i) +
												generateSelect(i)+
											"</div>" + form_buttons(""+i+"") +
										"</div>" + 
										"<div class=\"clear\"></div>"; break; 
										
				case "PlzOrt" 	: s += 	"<div class=\"form_row\" onmouseout=\"bg('"+i+"','transparent')\" onmouseover=\"bg('"+i+"','#FFFFFF')\"  id=\"element_"+i+"\">" +
											"<div class=\"form_label\">" +
												"<textarea onClick=\"this.focus(); this.select();\" class=\"form_tf_label\" type=\"text\" name=\"label_"+i+"\" onblur=\"setLabel("+i+",this)\">" +
													elements[i].label +
												"</textarea>" +
											"</div>" +
											"<div class=\"form_input\">" +
												generateHiddens(i) +
												"<input class=\"form_plz_input\" type=\"text\" id=\"value_"+i+"_plz\" name=\"element_"+i+"[]\" onblur=\"setValueFromPlzOrt("+i+")\" value=\""+elements[i].nValue[0]+"\" />" +
												"<input class=\"form_ort_input\" type=\"text\" id=\"value_"+i+"_ort\" name=\"element_"+i+"[]\" onblur=\"setValueFromPlzOrt("+i+")\" value=\""+elements[i].nValue[1]+"\" />" +
											"</div>" + form_buttons(""+i+"") +
										"</div>" + 
										"<div class=\"clear\"></div>"; break; 
										
				case "StrNr" 	: s += 	"<div class=\"form_row\" onmouseout=\"bg('"+i+"','transparent')\" onmouseover=\"bg('"+i+"','#FFFFFF')\"  id=\"element_"+i+"\">" +
											"<div class=\"form_label\">" +
												"<textarea onClick=\"this.focus(); this.select();\" class=\"form_tf_label\" type=\"text\" name=\"label_"+i+"\" onblur=\"setLabel("+i+",this)\">" +
													elements[i].label +
												"</textarea>" +
											"</div>" +
											"<div class=\"form_input\">" +
												generateHiddens(i) +
												"<input class=\"form_str_input\" type=\"text\" id=\"value_"+i+"_str\" name=\"element_"+i+"[]\" onblur=\"setValueFromStrNr("+i+")\" value=\""+elements[i].nValue[0]+"\" />" +
												"<input class=\"form_nr_input\" type=\"text\" id=\"value_"+i+"_nr\" name=\"element_"+i+"[]\" onblur=\"setValueFromStrNr("+i+")\" value=\""+elements[i].nValue[1]+"\" />" +
											"</div>" + form_buttons(""+i+"") +
										"</div>" + 
										"<div class=\"clear\"></div>"; break; 
										
				case "TelFax" 	: s += 	"<div class=\"form_row\" onmouseout=\"bg('"+i+"','transparent')\" onmouseover=\"bg('"+i+"','#FFFFFF')\"  id=\"element_"+i+"\">" +
											"<div class=\"form_label\">" +
												"<textarea onClick=\"this.focus(); this.select();\" class=\"form_tf_label\" type=\"text\" name=\"label_"+i+"\" onblur=\"setLabel("+i+",this)\">" +
													elements[i].label +
												"</textarea>" +
											"</div>" +
											"<div class=\"form_input\">" +
												generateHiddens(i) +
												"<input class=\"form_tel_input\" type=\"text\" id=\"value_"+i+"_tel\" name=\"element_"+i+"[]\" onblur=\"setValueFromTelFax("+i+")\" value=\""+elements[i].nValue[0]+"\" />" +
												"<input class=\"form_fax_input\" type=\"text\" id=\"value_"+i+"_fax\" name=\"element_"+i+"[]\" onblur=\"setValueFromTelFax("+i+")\" value=\""+elements[i].nValue[1]+"\" />" +
											"</div>" + form_buttons(""+i+"") +
										"</div>" + 
										"<div class=\"clear\"></div>"; break; 
										
				case "Mail" 	: s += 	"<div class=\"form_row\" onmouseout=\"bg('"+i+"','transparent')\" onmouseover=\"bg('"+i+"','#FFFFFF')\" id=\"element_"+i+"\">" +
											"<div class=\"form_label\">" +
												"<textarea onClick=\"this.focus(); this.select();\" class=\"form_tf_label\" type=\"text\" name=\"label_"+i+"\" onblur=\"setLabel("+i+",this)\">" +
													elements[i].label +
												"</textarea>" +
											"</div>" +
											"<div class=\"form_input\">" +
												generateHiddens(i) +
												"<input class=\"form_tf_input\" type=\"text\" name=\"element_"+i+"[]\" onblur=\"setValue("+i+",this)\" value=\""+elements[i].nValue+"\" />" +
											"</div>" + form_buttons(""+i+"") +
										"</div>" + 
										"<div class=\"clear\"></div>"; break; 

				case "Website" 	: s += 	"<div class=\"form_row\" onmouseout=\"bg('"+i+"','transparent')\" onmouseover=\"bg('"+i+"','#FFFFFF')\" id=\"element_"+i+"\">" +
											"<div class=\"form_label\">" +
												"<textarea onClick=\"this.focus(); this.select();\" class=\"form_tf_label\" type=\"text\" name=\"label_"+i+"\" onblur=\"setLabel("+i+",this)\">" +
													elements[i].label +
												"</textarea>" +
											"</div>" +
											"<div class=\"form_input\">" +
												generateHiddens(i) +
												"<input class=\"form_tf_input\" type=\"text\" name=\"element_"+i+"[]\" onblur=\"setValue("+i+",this)\" value=\""+elements[i].nValue+"\" />" +
											"</div>" + form_buttons(""+i+"") +
										"</div>" + 
										"<div class=\"clear\"></div>"; break; 

				case "none"		: s += 	"<div class=\"form_row\" onmouseout=\"bg('"+i+"','transparent')\" onmouseover=\"bg('"+i+"','#FFFFFF')\"  id=\"element_"+i+"\">" +
											"<div class=\"form_label\">&nbsp;</div>" +
											"<div class=\"form_input\">" +
												generateHiddens(i) +
												"<textarea onClick=\"this.focus(); this.select();\"  class=\"form_txt_input\" name=\"element_"+i+"[]\" onblur=\"setValue("+i+",this)\">" +
													elements[i].nValue +
												"</textarea>" +
											"</div>" + form_buttons(""+i+"") +
										"</div>" + 
										"<div class=\"clear\"></div>"; break; 
			}
		}
	}
	s += 	"<div class=\"form_row\" id=\"element_"+i+"\">" +
				"<div class=\"form_label\">" +
					"&nbsp;" +
				"</div>" +
				"<div class=\"form_input\">" +
					"<input type=\"button\" value=\""+submitValue+"\" disabled=\"disabled\" />" +
					"<input type=\"hidden\" name=\"save\" value=\"save\" />" +
					"<input type=\"hidden\" value=\"Formular speichern\" onmouseover=\"this.focus();\" onclick=\"doSubmit()\" />" +
				"</div>" +
				"<div class=\"form_buttons\">" +
					"&nbsp;" +
				"</div>" +
			"</div>";

	document.getElementById("form").innerHTML = s;
}
function form_buttons(i)
{
	if(elements[i].requiredField)
	{
		checked = "checked=\"checked\"";	
	}
	else
	{
		checked = "";	
	}
	return 	"<div id=\"buttons_"+i+"\" class=\"form_buttons\" style=\"visibility:hidden\">" +
				"<img onclick=\"deleteElement("+i+")\" class=\"form_img\" src=\"/general/images/form/form_delete.png\" onclick=\"form_up("+i+")\" border=\"0\" alt=\"\" /> " +
				"<img class=\"form_img\" src=\"/general/images/form/form_up.png\" onclick=\"form_up("+i+")\" border=\"0\" alt=\"\" /> " +
				"<img class=\"form_img\" onclick=\"form_down("+i+")\" src=\"/general/images/form/form_down.png\" alt=\"\" border=\"0\" />" +
				"<input type=\"checkbox\" "+ checked +" name=\"require_"+i+"\" id=\"require_"+i+"\" onclick=\"change_element_require_state("+i+")\" /> <label class=\"form_buttons_label\" for=\"require_"+i+"\">Pflichtfeld</label>" +
			"</div>";
}
function generateRadiobuttons(x)
{
	s = "";
	for(j=0;j<elements[x].nValue.length;j++)
	{
		s += 	"<div class=\"form_rb\">" +
					"<input type=\"hidden\" name=\"element_"+x+"["+(j+4)+"]\" value=\""+elements[x].nValue[j]+"\" />" +
					"<input type=\"radio\" id=\"element_"+x+"_"+j+"\" name=\"value_"+x+"\" value=\""+elements[x].nValue[j]+"\" />" +
						elements[x].nValue[j] +
				"</div>";	
	}
	return s;
}
function bg(id,css)
{
	document.getElementById("element_"+id).style.backgroundColor = css;
	if(css == "transparent")
	{
		document.getElementById("buttons_"+id).style.visibility = "hidden";
	}
	else
	{
		document.getElementById("buttons_"+id).style.visibility = "visible";	
	}
}
function generateCheckboxes(x)
{
	s = "";
	for(j=0;j<elements[x].nValue.length;j++)
	{	
		s += 	"<div class=\"form_cb\">" +
					"<input type=\"hidden\" name=\"element_"+x+"["+(j+4)+"]\" value=\""+elements[x].nValue[j]+"\" />" +
					"<input type=\"checkbox\" id=\"value_"+x+"_"+j+"\" name=\"value_"+x+"[]\" value=\""+elements[x].nValue[j]+"\">" +
						elements[x].nValue[j] +
				"</div>";
	}
	return s;
}
function generateSelect(x)
{
	s = 		"<select class=\"form_sl_input\" name=\"value_"+x+"[]\">";
	for(j=0;j<elements[x].nValue.length;j++)
	{
		s += 		"<option value=\""+elements[x].nValue[j]+"\">" +
						elements[x].nValue[j] +
					"</option>";
	}
	s +=  		"</select>";
	for(j=0;j<elements[x].nValue.length;j++)
	{
		s += "<input type=\"hidden\" name=\"element_"+x+"["+(j+4)+"]\" value=\""+elements[x].nValue[j]+"\" />";
	}
	return s;
}
function deleteElement(i)
{
	elements = elements.slice(0,i).concat(elements.slice((i+1),elements.length));
	writeForm();
}
function form_up(i)
{
	if(i!=0){
		tempA = elements[(i-1)];
		tempB = elements[i];
		elements[i] = tempA;
		elements[(i-1)] = tempB;
		writeForm();
	}
}
function form_down(i)
{
	if(!(i > elements.length))
	{
		tempA = elements[(i+1)];
		tempB = elements[i];
		elements[i] = tempA;
		elements[(i+1)] = tempB;
		writeForm();
	}
}
function setLabel(i,element)
{
	elements[i].label = element.value;
	writeForm();
}
function setValue(i,element)
{
	elements[i].nValue = element.value;
}
function change_element_require_state(i)
{
	if(document.getElementById("require_"+i).checked)
	{
		elements[i].requiredField = true;
	}
	else
	{
		elements[i].requiredField = false;
	}
}
function setValueFromPlzOrt(i)
{
	elements[i].nValue = new Array(document.getElementById("value_"+i+"_plz").value,document.getElementById("value_"+i+"_ort").value);
}
function setValueFromStrNr(i)
{
	elements[i].nValue = new Array(document.getElementById("value_"+i+"_str").value,document.getElementById("value_"+i+"_nr").value);
}
function setValueFromTelFax(i)
{
	elements[i].nValue = new Array(document.getElementById("value_"+i+"_tel").value,document.getElementById("value_"+i+"_fax").value);
}
function newTextfield()
{
	elements.push(new FormElement("Beschreibung","Text","",(elements.length+1)));
	writeForm();
}
function newMail()
{
	elements.push(new FormElement("E-Mail Adresse","Mail","",(elements.length+1)));
	writeForm();
}
function newWebsite()
{
	elements.push(new FormElement("Webseite","Website","http://",(elements.length+1)));
	writeForm();
}
function newTextarea()
{
	elements.push(new FormElement("Beschreibung","Textarea","",(elements.length+1)));
	writeForm();
}
function newText(){
	elements.push(new FormElement("","none","hier klicken um Text einzufügen",(elements.length+1)));
	writeForm();
}
function newPlzOrt()
{
	elements.push(new FormElement("PLZ / Ort","PlzOrt",new Array("",""),(elements.length+1)));
	writeForm();
}
function newStrNr()
{
	elements.push(new FormElement("Strasse / Nr.","StrNr",new Array("",""),(elements.length+1)));
	writeForm();
}
function newTelFax()
{
	elements.push(new FormElement("Telefon / Telefax","TelFax",new Array("+49 ","+49 "),(elements.length+1)));
	writeForm();
}
function newMultipleElement(step,typ)
{
	if(step==1)
	{
		hide('newCheckbox');
		hide('newRadio');
		hide('newSelect');
		document.getElementById("new"+typ).style.display = "block";
	}
	else if(step == 2)
	{
		if(document.getElementById("new"+typ+"Options").value != "")
		{
			elements.push(new FormElement("Beschreibung",typ,document.getElementById("new"+typ+"Options").value.split("\n"),(elements.length+1)));
			document.getElementById("new"+typ+"Options").value = "";
			writeForm();
		}
		document.getElementById("new"+typ).style.display = "none";
	}
}
function noSubmit()
{
	return false;
}
function valueInfoOut(element,value)
{
	if(element.value == '')
	{
		element.value = value;	
	}
}
function valueInfoOn(element,value)
{
	if(element.value == value)
	{
		element.value = '';	
	}
}
function hide(id)
{
	document.getElementById(id).style.display = "none";	
}


	/*
	 * 	Mausposition + Tooltip   --> lieber nicht...
	 */
	 /*
var form_docEl = (
             typeof document.compatMode != "undefined" && 
             document.compatMode        != "BackCompat"
            )? "documentElement" : "body";

var form_xPos = 0;
var form_yPos = 0;

if(document.layers) document.captureEvents(Event.MOUSEMOVE)
{
	document.onmousemove =	form_mouse_pos;
}
function form_mouse_pos(e)
{
	form_xPos    =  e? e.pageX : window.event.x;
	form_yPos    =  e? e.pageY : window.event.y;

	if (document.all && !document.captureEvents)
	{
		form_xPos    += document[form_docEl].scrollLeft;
		form_yPos    += document[form_docEl].scrollTop;
	}
    
	if(document.layers) routeEvent(e);
}
function form_tooltip(id,msg)
{
	document.getElementById(id).innerHTML = "<p>" + msg + "</p>";
	document.getElementById(id).style.left = form_xPos+"px";
	document.getElementById(id).style.top = form_yPos+"px";
	document.getElementById(id).style.display = "block";
}
*/