//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;
}
function getSelectedValue(id){
	return getSelectedItemfromSelectBox(id).value;
}
//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(trim(message));
}
function displayHide(id) {
    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;
  	}
}
function transparency(element,percentage) {
 // Lokale Variablen definieren
 var i, count, objStyle, filterValue, opacityValue;
 // Browser unterstuetzt (W3C-)DHTML?
 if(document.getElementById) {
  // Wurde Object uebergeben und existiert es?
  if(typeof(element)=="object" && element) { obj=element; }
  // Ansonsten: Existiert (mindestens) ein HTML-Element mit passendem NAME-Attribut?
  else if (document.getElementsByName(element) && document.getElementsByName(element)[0]) { obj=document.getElementsByName(element); }
  // Ansonsten: Existiert ein HTML-Element mit passendem ID-Attribut?
  else if (document.getElementById(element)) { obj=document.getElementById(element); }
  // Ansonsten: Existiert (mindestens) ein passendes HTML-Element?
  else if (document.getElementsByTagName && document.getElementsByTagName(element) && document.getElementsByTagName(element)[0]) { obj=document.getElementsByTagName(element); }
  // Ansonsten: Kein passendes Objekt gefunden
  else { obj=false; }

  // Wenn ein Objekt existiert
  if(obj) {
   // Gueltigen Prozentwert definieren (Deckungswert)
   percentage=(typeof(percentage)=="undefined")?50:100-percentage;
   // Wert fuer (IE-)Filter
   filterValue="Alpha(opacity="+percentage+")";
   // Wert fuer CSS opacity
   opacityValue=""+percentage/100;
   // Anzahl der passenden Elemente bestimmen
   count=(obj.length)?obj.length:1;
   // Diese Elemente durchgehen
   for(i=0;i<count;i++) {
    // (Arbeits-)Stylesheet-Objekt definieren
    objStyle=(obj.length)?obj[i].style:obj.style;
    // "filter(Alpha)"-Style setzen (fuer IE)
    objStyle.filter=filterValue;
    // "-moz-opacity"-Style setzen (fuer Mozilla)
    objStyle.MozOpacity=opacityValue;
    // "-khtml-opacity"-Style setzen (fuer Konqueror/Safari)
    objStyle.KhtmlOpacity=opacityValue;
    // "opacity"-Style setzen (fuer CSS-3-Browser)
    objStyle.opacity=opacityValue;
   }
  }
 }
}
function getMousePositionX(evt) {
	if (evt.pageX) return evt.pageX;
	else if (evt.clientX)
	   return evt.clientX + (document.documentElement.scrollLeft ?
	   document.documentElement.scrollLeft :
	   document.body.scrollLeft);
	else return 0;
}
function getMousePositionY(evt) {
	if (evt.pageY) return evt.pageY;
	else if (evt.clientY)
	   return evt.clientY + (document.documentElement.scrollTop ?
	   document.documentElement.scrollTop :
	   document.body.scrollTop);
	else return 0;
}
function moveTable(table_id,confirmMsg){
	var obj_id	= 'table_' + table_id;
	var width 	= document.getElementById(obj_id).offsetWidth;
	var height 	= document.getElementById(obj_id).offsetHeight;
	var x 		= document.getElementById(obj_id).offsetLeft;
	var y 		= document.getElementById(obj_id).offsetTop;
	xajax_moveTable(x,y,width,height,table_id);
	if(confirmMsg == true)
		alert("Objekt wurde gespeichert");
	return true;
}
function countMax(id)
{
	var currentNumber,max;
	max = 150;
	currentText = document.getElementById(id).value;
	currentNumber = max-document.getElementById(id).textLength;
	
	if (currentNumber < 0) {
		document.getElementById(id).value = currentText.substring(0, max);
	}
}
function createRemoveDiv(newClassName,id)
{
	var newDiv=document.createElement("div");
	newDiv.className=newClassName;
	return document.getElementById(id).appendChild(newDiv);
} 
function isInt(x) {
   var y=parseInt(x);
   if (isNaN(y)) return false;
   return true;
 } 
