////////////////////////////////////////////////////////////////////////////////
/* vim: set expandtab tabstop=8 shiftwidth=8 foldmethod=marker: */
// util
//{{{ function refFrom
	function refForm(rF)
	{
		if (typeof(rF) == "object") {
			return rF;
		} else if (typeof(rF) == "string" || typeof(rF) == "number") {
			return document.forms[rF];
		} else {
			return false;
		}
	}
//}}}
	function refElement(rE, rF)
	{
		var oF;
		if (typeof(rE) == "object") {
			return rE;
		} else if (typeof(rE) == "string" || typeof(rF) == "number") {
			if (oF = refForm(rF)) {
				return oF.elements[rE];
			} else {
				return false;
			}
		} else {
			return false;
		}
	}

	function refOption(rO, rE, rF)
	{
		var oE, oF;
		if (typeof(rO) == "object") {
			return rO;
		} else if (typeof(rO) == "string" || typeof(rO) == "number") {	
			if ((oE=refElement(rE, rF))) {
				return oE.options[parseInt(rO)];
			} else {
				return false;
			}
		} else {
			return false;
		}
	}

	function is_single_element(o)
	{
		return (typeof(o.length) == "undefined");
	}

	function checkbox_all_checked(o, b)
	{
		//var b = new Boolean(b);
		if (is_single_element(o)) {
			o.checked = b;
		} else {
			var i;
			for (i=0; i<o.length; i++) {
				o[i].checked = b;
			}
		}
	}

	function checkbox_is_all_checked(o)
	{
		var rtn = false;
		if (is_single_element(o)) {
			rtn = o.checked;
		} else {
			var i;
			for (i=0; i<o.length; i++) {
				if (o[i].checked) {
					rtn = true;
				} else {
					rtn = false;
					break;
				}
			}
		}
		return rtn;
	}

	function checkbox_is_no_one_checked(o)
	{
		var rtn = true;
		if (is_single_element(o)) {
			rtn = !o.checked;
		} else {
			var i;
			for (i=0; i<o.length; i++) {
				if (o[i].checked) {
					rtn = false;
					break;
				} else {
					rtn = true;
				}
			}
		}
		return rtn;
	}


	function radio_checked_value(o)
	{
		var rtn = null;
		if (is_single_element(o)) {
			if (o.checked) {
				rtn = o.value;
			}
		} else {
			var i;
			for (i=0; i<o.length; i++) {
				if (o[i].checked) {
					rtn = o[i].value;
					break;
				}
			}
		}
		return rtn;
	}

	function radio_checked_index(o)
	{
		var rtn = null;
		if (is_single_element(o)) {
			if (o.checked) {
				rtn = 0;
			}
		} else {
			var i;
			for (i=0; i<o.length; i++) {
				if (o[i].checked) {
					rtn = i;
					break;
				}
			}
		}
		return rtn;
	}

	function element_value_is_blank(o)
	{
		return (o.value == '');
	}
//
////////////////////////////////////////////////////////////////////////////////	
// routine
	
	function routine_switch_all_checked(oSrc, oDes)
	{
		if(!oSrc) return;

		if (typeof(oDes) == "undefined" || oDes == null) {
			oDes = refElement('listchk[]', oSrc.form);
		}
		
		if(!oDes) return;

		checkbox_all_checked(oDes, oSrc.checked);
	}

	function routine_init_all_checked(oSrc, oDes)
	{
		if (typeof(oSrc) == "undefined" || oSrc == null) {
			oSrc = refElement('checkbox_check_all', 'thisform');
		}

		if (typeof(oDes) == "undefined" || oDes == null) {
			oDes = refElement('listchk[]', oSrc.form);
		}
		
		if(!oSrc || !oDes) return;

		oSrc.checked = checkbox_is_all_checked(oDes);
	}

	function routine_to_select_group(oSrc, oDes)
	{
		var tmp_descript = "";

		if (typeof(oSrc) == "undefined" || oSrc == null) {
			oSrc = refElement('rId_Group', 'thisform');
		}

		if (typeof(oDes) == "undefined" || oDes == null) {
			oDes = refElement('rName_Group', oSrc.form);
		}
		
		if (oSrc.selectedIndex) {
			oDes.value = oSrc.options[oSrc.selectedIndex].text;
		}
//
		if (typeof(window.group_descript) != "undefined") {
			if(!oSrc.selectedIndex) return;
			if(typeof(window.group_descript[oSrc.selectedIndex-1])) return;
			if (window.group_descript[oSrc.selectedIndex-1] == "&nbsp;&nbsp;&nbsp;&nbsp;") {
				tmp_descript = '';
			} else {
				tmp_descript = window.group_descript[oSrc.selectedIndex-1];
			}

			document.thisform.rDescript_Group.value = tmp_descript;
		}


	}



	function before_exe_delete()
	{
		return window.confirm("您確定要執行刪除嗎?");
	}

	function before_exe_package_to_other()
	{
		return window.confirm("您確定要脫離此群組嗎?");
	}

	function before_exe_package_to_own()
	{
		return window.confirm("您確定要加入此群組嗎?");
	}

	function before_edit_option_delete(url)
	{
		var sure = before_exe_delete();
		if (sure) {
			window.location = url;
			return true;
		} else {
			return false;	
		}
	}

	function window_open_function_add(url)
	{
		window.open(url, 'add', 'status=yes,scrollbars=yes,resizable=yes,toolbar=no,menubar=no,location=no', true);
	}

	function window_open_function_edit_option(url, name)
	{
		if (typeof(name) == 'undefined') {
			name = 'edit_option';
		}
		window.open(url, name, 'status=yes,scrollbars=yes,resizable=yes,toolbar=no,menubar=no,location=no', true);
	}


	function window_open_function_package_list(url)
	{
		window.location.href = url;
	}

	function window_open_function_group_list(url)
	{
		window.location.href = url;
	}

	function window_open_function_package_own_entity_list_own(url)
	{
		window.location.href = url;
	}

	function window_open_function_package_own_entity_list_other(url)
	{
		window.location.href = url;
	}


	function window_open_function_forward(url)
	{
		window.open(url, 'forward', 'status=yes,scrollbars=yes,resizable=yes,toolbar=no,menubar=no,location=no', true);
	}

//
////////////////////////////////////////////////////////////////////////////////
