// Mastermind Javascript ressource
// Author: Marius Hein <mhein@netways.de>

	// JS_Submit
	// Subit's the parentform only if a value is given...
	function JS_Submit($obj)
	{
		if ($obj.value)
		{
			$obj.form.submit();
		}
	}
	
	// JS_Eval_Decimal()
	// Check's the active Formelement for Float
	function JS_Eval_Decimal()
	{
		var obj;
		var val;
		obj = document.activeElement;
		val = obj.value;
		if (val.indexOf(",") > 0 || val.indexOf(".") > 0 || parseFloat(val) > 0)
		{
			val = val.replace(/,/,".");
			val = parseFloat(val);
			document.activeElement.value = val;
		}
			else
			{
				document.activeElement.value="";
				document.activeElement.focus();
				return false;
			}
	}
	
	// JS_Eval_Integer
	// Checks the activeElement for Integer
	function JS_Eval_Integer()
	{
		var obj;
		var val;
		
		obj = document.activeElement
		val = obj.value;
		if (parseInt(val) > 0 && !isNaN(parseInt(val)))
		{
			val = parseInt(val);
			document.activeElement.value = val;
		}
			else
			{
				document.activeElement.value = "";
				document.activeElement.focus();
				return false;
			}
	}
	
	// JS_Select_Invert
	// Invert's the checkstate of checkboxgroup...
	function JS_Select_Invert(sub_str,form_str)
	{
		var e;
		var element;
		e = eval("document." + form_str + ".length");
		for (var i=0; i<e; i++)
		{
			element = eval("document." + form_str + ".elements[" + i + "]");
			if (element.type == 'checkbox' && element.name.indexOf(sub_str) > 0)
			{
				element.checked = !element.checked;
			}
		}
	}
	
	// Add one 0 if number under 10
	function JS_Check_Ten(val)
	{
		if (val)
		{
			if (val < 10)
			{
				val = "0" + val;
			}
			return (val);
		}
			else
			{
				return false;
			}
	}
	
	// Fills time Period's
	function JS_Set_Period(objSwitch,start_name,stop_name)
	{
		var form_name;
		var txtStart;
		var txtStop;
		var ndate;
		var day;
		var month;
		var year;
		var str1;
		var str2;
		
		if (objSwitch.value)
		{
			form_name = objSwitch.form.name;
			txtStart = eval("document." + form_name + ".elements['" + start_name + "']");
			txtStop = eval("document." + form_name + ".elements['" + stop_name + "']");
			ndate = new Date();
			
			switch(objSwitch.value)
			{
				case 'frame_reset':
				 txtStart.value='';
				 txtStop.value='';
				break;
				
				case 'frame_month':
				 month = JS_Check_Ten(ndate.getMonth()+1);
				 day = '01';
				 year = ndate.getFullYear();
				 str1 = day + "." + month + "." + year;
				 txtStart.value = str1;
				 month = ndate.getMonth()+1;
				 ndate.setMonth(month);
				 ndate.setDate(1);
				 ndate.setDate(-1);
				 month = JS_Check_Ten(ndate.getMonth()+1);
				 day = JS_Check_Ten(ndate.getDate());
				 year = ndate.getFullYear();
				 str2 = day + "." + month + "." + year;
				 txtStop.value = str2;
				break;
				
				case 'frame_day':
				 month = JS_Check_Ten(ndate.getMonth()+1);
				 day = JS_Check_Ten(ndate.getDate());
				 year = ndate.getFullYear();
				 str1 = day + "." + month + "." + year;
				 txtStart.value = str1;
				 txtStop.value = str1;
				break;
			}
		}
		
		objSwitch.value = '';
		objSwitch.blur();
	}
	
	// Adds an text to a combo.
	function JS_AddText2Combo(objNameText, objNameCombo, formName)
	{
		var objText = eval("document." + formName + ".elements['" + objNameText + "'];");
		var objCombo = eval("document." + formName + ".elements['" + objNameCombo + "'];");
		var cnt = 1;
		var checkExists = false;
		if (!objText.value) {
			alert ("Empty items are not allowed!");
		} else {
			for (cnt=1; cnt<=objCombo.options.length; cnt++) {
				if (objCombo.options[cnt-1].value==objText.value) {
					alert ("The item exists.\nPlease try another one!");
					checkExists = true;
				}
			}
			if (!checkExists == true) {
				JS_AddOption(objCombo, objText.value, objText.value);
				objText.value = "";
			}
		}
	}
	
	// Change the Content of multible Combos...
	function JS_ChangeCombo(selObj,target_name)
	{
		var cnt = 1;
		targetObj = eval("document." + selObj.form.name + ".elements['" + target_name + "'];");
		while (cnt <= selObj.options.length)
		{
			if (selObj.options[cnt - 1].value == selObj.value)
			{
				JS_AddOption(targetObj,selObj.options[cnt - 1].value,selObj.options[cnt - 1].text);
				JS_RemoveOption(selObj,selObj.options[cnt - 1].value);
				selObj.value = null;
				break;
			}
			cnt++;
		}
	}
	
	// Remove Option from Combo...
	function JS_RemoveOption(selObj,selId)
	{
		var cnt = 1;
		while (cnt <= selObj.options.length)
		{
			if (selObj.options[cnt - 1].value == selId)
			{
				selObj.options[cnt - 1] = null;
				break;
			}
			cnt++;
		}
	}
	
	// Add's an Option to COMBO...
	function JS_AddOption(selObj,oValue,oName)
	{
		if (!selObj.options.length)
		{
			newItem = 0;
		}
			else
			{
				newItem = selObj.options.length;
			}
		selObj.options.length++;
		selObj.options[newItem].text = oName;
		selObj.options[newItem].value = oValue;
	}
	
	// Selects all options in multiple List
	function JS_Select_All(obj_form,name)
	{
		var obj_sel;
		var cnt = 1;
		obj_sel = eval("document." + obj_form.name + ".elements['" + name + "']");
		while (cnt <= obj_sel.options.length)
		{
			obj_sel.options[cnt-1].selected = true;
			cnt++;
		}
	}
	
	// Switch between disabled status...
	function JS_Activate_Switch(formName,nameSource, nameTarget)
	{
		 objTarget = eval("document." + formName + ".elements['" + nameTarget + "']");
		 objSource = eval("document." + formName + ".elements['" + nameSource + "']");
		 objSource.disabled = false;
		 objTarget.disabled = true;
	}
	
	// Confirm delete action...
	function JS_Confirm_Del(val)
	{
		var text = 'confirm:'+ "\n" + 'Delete Record (' + val + ')';
		var retval = confirm(text);
		return (retval);
	}
	
	// Remove Values from ID Controls...
	function JS_Remove_Val(mID)
	{
		var obj = document.getElementById(mID);
		obj.value = '';
		obj.form.submit();
	}
	
	// checks if an element to be deleted...
	function JS_Check_Form(objForm, strDel)
	{
		var countItems = objForm.elements.length;
		for (var i=0; i<countItems; i++) {
			var objItem = objForm.elements(i);
			if ( (objItem.type == 'text' || objItem.type == 'textarea') && objItem.value.length <= 0 ) {
				objItem.value = strDel;
			}
		}
	}