//reset a form with security check
function resetFunction (string) {
  var chk = window.confirm(string);
  return (chk);
}
//focus an element by id
function focus(id){
	var obj_focus = document.getElementById(id);
	if(obj_focus){
		obj_focus.focus();
	}
}
function getSelectedItemfromSelectBox(id){
	var obj = document.getElementById(id).options[document.getElementById(id).selectedIndex];
	return obj;
}
//open a new page by clicking the link
function popuplink(sender) {
   window.open(sender.href,'popper','toolbar','resizable','scrollbars');
   return false;
}
//ask for confirmation the action
function userConfirm(message){
 return window.confirm(message);
}
function displayHide(id , obj_sender) {
    var obj = document.getElementById(id);
    if(obj.style.display){
    	obj.style.display = (obj.style.display == 'none' ? 'block' : 'none');
    }else{
   		obj.style.display = 'none';
    }
}
function cleanValue(sender){
	sender.value = '';
	return false;
}
//delete all empty chars from start and end of the string
function trim(str) {
  return(str.replace(/\s+/g," ").replace(/\s+$/,"").replace(/^\s+/,""));
}
// generate a random Password
function generatePassword(id) {
	var string_length = 8;
	var upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var lower = "abcdefghijklmnopqrstuvwxyz";
	var num = "0123456789";
	var special = "!§$%&/=?*#+-";

	var chars = upper + lower + num + special;
	var all = new Array(upper, lower, num, special);

	var randomstring = new Array();

	var j = 0;
	var tmp = '';

	// add one of each types of digits
	for(i = 0; i < all.length; i++){
		j = Math.floor(Math.random() * all[i].length);
		randomstring.push(all[i].substring(j, j + 1));
	}

	// fill with totally random digits till string_length is reached
	while(randomstring.length < string_length){
		j = Math.floor(Math.random() * chars.length);
		randomstring.push(chars.substring(j, j + 1));
	}

	// shuffle result
	for (i = 0; i < randomstring.length; i++){
		j = Math.round(Math.random() * (randomstring.length - i - 1)) + i;
		tmp = randomstring[i];
		randomstring[i] = randomstring[j];
		randomstring[j] = tmp;
	}

	document.getElementById(id).value = randomstring.join("");
}
//if focus not an input field block enter key else not
function blockEnter(event){

  var f=document.getElementById('basicForm');

  if(f.addEventListener)
  {
    f.addEventListener("focus",cancel,true);
    if(event.target.nodeName.toLowerCase() == "input"){
    	return false;
    }else{
    	return true;
    }
  }
  else if(f.attachEvent)
  {
    for(i=0;i<f.childNodes.length;i++){
    	if(event.srcElement.nodeName.toLowerCase() == "input"){
    		return false;
    	}else{
    		return true;
    	}
    }
  }
}
function cancel(event)
{
  return false;
}
//return the keycode of pressed key
function getKeyCode(e){
  var keyCode = window.event ? e.keyCode : e.which;
  if(keyCode == 13){
  	return blockEnter(e);
  }else{
  	return keyCode;
  }
}
//check e-mail
function checkEmail(email) {
	var proto  = "(mailto:)?";
	var usr    = "([a-zA-Z0-9][a-zA-Z0-9_.-]*|\"([^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")";
	var domain = "([a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,5}";
	var regex  = "^" + proto + "?" + usr + "\@" + domain + "$";

	var rgx    = new RegExp(regex);
	return rgx.exec(email) ? true : false;
}
function validateEmail(id,language){
	var email = document.getElementById(id).value;
	if(!checkEmail(email)){
		var error_msg = '';
		switch (language) {
		  case "DE":
		    error_msg = "E-Mail Adresse leider ungültig!";
		    break;
		  case "EN":
		    error_msg = "Invalid e-mail adress!";
		    break;
		}
		document.getElementById(id).value = '';
		AddClassName(id, 'errorInput');
		alert(error_msg);
		focus(id);
		return false;
	}
	return true;
}

function checkList(id,language){
	var isSelected = document.getElementById(id).options.selectedIndex;
  	if(isSelected != -1){
	    obj = getSelectedItemfromSelectBox(id);;
	    name = obj.innerHTML;
	    return true;
  	}else{
    	switch (language) {
		  case "DE":
		    alert('Bitte wählen Sie ein Name aus!')
		    break;
		  case "EN":
		    alert('Please selected a name!')
		    break;
		}
    	return false;
  	}
}
//Add new option to selectedBox from another selectBox by selected entry
function addNewSelectOptionFromSelectBox (sourceID, targetID, sourceButton, targetButton) {
  	var source_obj = document.getElementById(sourceID).options;
  	var target_obj = document.getElementById(targetID).options;
	var isSelected = source_obj.selectedIndex;
	var classname = null;
	
  	if(isSelected != -1){
		var selected_obj = getSelectedItemfromSelectBox(sourceID);
	  	var text = selected_obj.text;
	  	var value = selected_obj.value;
	  	var sindex = selected_obj.index;
	  	if(selected_obj.className)
	  		classname = selected_obj.className;
	  	
  		newEntry = new Option(text, value, false, false);	 
  		target_obj[target_obj.length] = newEntry;	  
  		if(classname != null)
  			newEntry.className = classname;	
  		
  		//delete value from source
  		source_obj[source_obj.selectedIndex] = null;
  		
  		source_obj = document.getElementById(sourceID).options;
  		target_obj = document.getElementById(targetID).options;
  		//select the first entry if not empty after delete   		
		if(target_obj.length > 0){
			document.getElementById(targetButton).disabled = false;
  			document.getElementById(targetButton).className = targetButton;
		} 
 		else{  			
		  	document.getElementById(targetButton).disabled = true;
		  	document.getElementById(targetButton).className = 'btnInvisible';
  		}	 			
  		if(source_obj.length > 0){
  			if(sindex >= source_obj.length){var sindex = source_obj.length-1; }
  			source_obj[sindex].selected = true;
  		}else{  			
		  	document.getElementById(sourceButton).disabled = true;
		  	document.getElementById(sourceButton).className = 'btnInvisible';
  		}		
  	}else{
  		alert('Bitte wählen Sie ein Name aus!');
  	}
  return false;
}
function getAllChooseActivities(source_id,target_id){
	var activityArray   = new Array();
	var allOptions 		= document.getElementById(source_id).options;
 		
	if(allOptions.length > 0){
		for(var i=0; i < allOptions.length; i++){
	 		var value = allOptions[i].value;
	 		activityArray.push(value);	
		}
		document.getElementById(target_id).value = activityArray;
	}	
}
function myTip(arg,text,saison)
{
    switch(arg)
    {
    case "ballon":
        return Tip(text, BALLOON, true, ABOVE, true, OFFSETX, -10, WIDTH, 250, TEXTALIGN, 'justify', FADEIN, 600, FADEOUT, 600, PADDING, 8)
    case "tip":
        return Tip(text, SHADOW, true);
    case "centeralways":
        return Tip(text, TITLE, "Zentriert", CENTERWINDOW, true, CENTERALWAYS, true, STICKY, true, CLOSEBTN, true, WIDTH, 300);
    case "followscroll":
        return Tip(text, TITLE, saison, STICKY, true, FOLLOWSCROLL, true, CLOSEBTN, true, WIDTH, 300);
    }
}
