/*******************************************
 GENEARAL FUNCTIONS
*******************************************/
  // clears an input identified by 'ifield' if it contains a specific string given by 'icontent'
	function clear_field(ifield,icontent) {
         if (document.getElementById(ifield).value == icontent) {
             document.getElementById(ifield).value = "";
         }
	}
  // fills an input identified by 'ifield' if it contains nothing with the string specified in 'icontent'
	function fill_field(ifield,icontent) {
         if (document.getElementById(ifield).value.length <= 1 || document.getElementById(ifield).value == "") {
		     document.getElementById(ifield).value = icontent;
		 }
	}
  // limits an input identified by 'ifield' by 'iregex' and by a specific case 'icase'
	function limit_field (ifield,iregex,icase) {
		var field = document.getElementById(ifield);
		if (icase == "upper") {
			field.value = field.value.replace(/-/,"_");
			field.value = field.value.toUpperCase();
		}
		while (field.value.match(iregex)) {
			var inputLength=field.value.length;
			field.value=field.value.substring(0,inputLength-1);
		}
	}
  // opens a link defined by 'iurl' in the same window
	function openURL (iurl) {
		open(iurl, "_self");
	}
  // opens a link defined by 'iurl' in the same window if user accepts the confirm string defined in 'iconfirm'
	function checkURL (iurl,iconfirm) {
		Check = confirm(iconfirm);
        if (Check == true) {
            open(iurl, "_self");
        }
	}
  // submits a form identified by 'iform' if user accepts the confirm string defined in 'iconfirm'
	function checkSUBMIT (iform,iconfirm) {
		Check = confirm(iconfirm);
        if (Check == true) {
            document.getElementById(iform).submit();
        }
	}
  // check for possible valid email
	function checkEmail (ifield) {
		if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(document.getElementById(ifield).value)){
			return true;
		} else {
			return false;
		}
	}
  // sizes a textarea identified by 'ifield' by number of chars per line defined in 'cline' and ranges defined in 'min' and 'max'
	function size_textarea (ifield,cline,min,max) {
		var field = document.getElementById(ifield);
		var lines = field.value.split('\n');
		var newValue = lines.length;
		for (i=0;i<lines.length;i++) {
			var line = lines[i];
			var check = line.split(" ");
			var wu = "";
			for (x=0;x<check.length;x++) {
				if ((wu.length+check[x].length)<cline) {
					wu = wu+check[x]+" ";
				} else {
					wu = "";
					newValue++;
				}
			}
		}
		if (max==0 || newValue<max || newValue>max) {
			if (newValue < min) {
				newValue = min;
			}
			if (newValue > max) {
				newValue = max;
			}
			field.rows = newValue;
		}
	}
  // limits an input identified by 'ifield' by char length defined in 'maxLength' and sets free char count to value of input identified by 'countTarget'
	function limit_input (ifield,maxLength,countTarget) {
		var field = document.getElementById(ifield);
		var inputLength=field.value.length;
		if (inputLength >= maxLength) {
			field.value=field.value.substring(0,maxLength);
		}
		if (countTarget != "false") {
			document.getElementById(countTarget).value=maxLength-field.value.length;
		}
	}
  // toggles the display property between ('none' and 'block') of an object identified by 'itarget'
	function toggle_display (itarget) {
		var target = document.getElementById(itarget);
		if (target.style.display == 'none') {
			target.style.display = 'block';
		} else {
			target.style.display = 'none';
		}
	}
  // toggles the display property between ('none' and 'block') of an object identified by 'itarget' refering to a checkbox identified by 'icheck'
	function hide_toggle (icheck,itarget) {
		var check = document.getElementById(icheck);
		if (check.checked == true) {
			document.getElementById(itarget).style.display = 'none';
		} else {
			document.getElementById(itarget).style.display = 'block';
		}
	}
  // toggles the display property between ('none' and 'block') of an object identified by 'itarget' refering to a checkbox identified by 'icheck'
	function show_toggle (icheck,itarget) {
		var check = document.getElementById(icheck);
		if (check.checked == false) {
			document.getElementById(itarget).style.display = 'none';
		} else {
			document.getElementById(itarget).style.display = 'block';
		}
	}
  // selects a file defined by 'fileID' within fileselector to the selector field identified by 'selectorID'
	function fileSelector_select(selectorID,fileID) {
		obj_files = document.getElementById('fileSelector_'+selectorID+'_files');
		obj_selected = document.getElementById('fileSelector_'+selectorID+'_selected');
		if (fileID == 0) {
			obj_empty = document.getElementById('fileSelector_'+selectorID+'_empty');
			obj_selected.innerHTML = obj_empty.innerHTML;
		} else {
			obj_file = document.getElementById('file_'+selectorID+'_'+fileID);
			obj_selected.innerHTML = obj_file.innerHTML;
		}
		document.getElementById(selectorID).value = fileID;
		if (obj_files.style.display == 'block') {
			obj_files.style.display = 'none';
		}
	}
  // creates a page link string from 'actGroup' and 'actTarget' and saves to field identified by 'target'
	function setCreatorLink (target,actGroup,actTarget) {
		var o_groups = document.getElementById(actGroup);
		var o_elems = document.getElementById(actTarget);
        var gid = o_groups.options[o_groups.selectedIndex].value;
        var sid = o_elems.options[o_elems.selectedIndex].value;
		document.getElementById(target).value = 'page.php?g='+gid+'&s='+sid;
	}
  // sets all options of a select identified by 'target' as selected 
	function selectAllOptions (target) {
		var o_target = document.getElementById(target);
		var len = o_target.options.length;
        for (var i = 0; i < len; i++) {
            o_target.options[i].selected = true;
        }
	}
  // sets element selection
	function setElemsSelect (actGroup,actTarget) {
		// define selects
		var o_groups = document.getElementById(actGroup);
		var o_elems = document.getElementById(actTarget);
		
		// get selected value
        var selID = o_groups.selectedIndex;
        var g_id = o_groups.options[selID].value;
		
		// set empty content
		o_elems.length = 1;
		// get group content
		if (g_id > 0) {
			// has group content
			//if (document.getElementById('data_c_'+g_id).value == 'true') {
			//	o_elems.options[o_elems.options.length] = new Option(document.getElementById('data_c_has').value,'c');
			//}
			if (document.getElementById('data_g_'+g_id).value != '0') {
				var o_cont = document.getElementById('data_g_'+g_id).value.split(",");
				for (var i = 0; i < o_cont.length; i++) {
					o_elems.options[o_elems.options.length] = new Option(document.getElementById('data_e_'+o_cont[i]).value,o_cont[i]);
				}
			}
		}
	}
  // flips options from select to select
	function flipSelect (Efrom,Eto,noCont) {
         var o_noCont = document.getElementById(noCont).value;
         // define selects
         var o_Efrom = document.getElementById(Efrom);
         var o_Eto = document.getElementById(Eto);

         // get selected value
         var selID = o_Efrom.selectedIndex;
         var id = o_Efrom.options[selID].value;
         var name = o_Efrom.options[selID].text;

         // create new option on other side
         if (id != '0') {
             o_Eto.options[o_Eto.options.length] = new Option(name,id);
             if (o_Eto.options.length <= 2) {
                 if (o_Eto.options[0].value == '0') {
                     var eobj = o_Eto.options[0];
                     del = o_Eto.removeChild(eobj);
                 }
             }
             // remove option in self
             var notobj = o_Efrom.options[selID];
             var notlen = o_Efrom.options.length;
             if (notlen <= 1) {
                 o_Efrom.options[o_Efrom.options.length] = new Option(o_noCont,'0');
             }
             del = o_Efrom.removeChild(notobj);
         }
	}
  // menu function
	function selectMenu (iselect,iurl,igetVar) {
        var o_select = document.getElementById(iselect);
		openURL(iurl+'&'+igetVar+'='+o_select.options[o_select.selectedIndex].value);
	}
