/**
 * gibt den richtigen Wert im OnClick-Bereich eines Links zurück, damit der Link weiterverfolgt wird
 */
function followLink () {
  var bAgent = window.navigator.userAgent;
  var bAppName = window.navigator.appName;
  if ((bAppName.indexOf("Explorer") >= 0) && (bAgent.indexOf("Mozilla/3") >= 0) && (bAgent.indexOf("Mac") >= 0))
    return false; // dont follow link
  else return true; // dont follow link
}


/**
 * Wird im onClick vom Delete-Link aufgerufen
 * Frägt ab, ob der Datensatz wirklich gelöscht werden soll
 */
var inQuest = false;
 
function askFollowLink(link, quest_string) {
  inQuest = true;
  ret = confirm(quest_string);
  inQuest = false;
  if (ret) {
		// confirmed der URL des Links hinzufügen -> ohne Javascript wird in html nachgefragt!
		link.href = link.href + "&confirmed=true";	
		return followLink();
	} else {
		// abbrechen
		return !followLink();
	}
}

function askForDelete(deletelink, deletebutton, Redx_Base) {
	inQuest = true;
	// LöschenIcon auf aktiv setzen
	if (deletebutton != null){
	  deletebutton.src=Redx_Base + '/res/pics/delete_over.gif';
	}
	// Fragen
  quest_string = 'Möchten Sie diesen Eintrag wirklich löschen?';
	ret = confirm(quest_string);
	// LöschenIcon auf nicht aktiv setzen
	if (deletebutton != null){
	  deletebutton.src=Redx_Base + '/res/pics/delete.gif';
	}
  inQuest = false;
	if (ret) {
		// confirmed der URL des Links hinzufügen -> ohne Javascript wird in html nachgefragt!
		deletelink.href = deletelink.href + "&confirmed=true";	
		return followLink();
	} else {
		// abbrechen
		return !followLink();
	}
}

/**
 * Wird im onClick vom Copy-Link aufgerufen
 * Frägt ab, ob der Datensatz wirklich kopiert werden soll
 */
function askForCopy(copylink, copybutton, Redx_Base) {
   inQuest = true;
	// LöschenIcon auf aktiv setzen
	copybutton.src=Redx_Base + '/res/pics/copy_over.gif';
	// Fragen
	ret = confirm('Möchten Sie diesen Eintrag wirklich kopieren?');
	// KopierenIcon auf nicht aktiv setzen
	copybutton.src=Redx_Base + '/res/pics/copy.gif';
	inQuest = false;
	if (ret) {
		// kopieren
		return followLink();
	} else {
		// abbrechen
		return !followLink();
	}
}


/**
* wird bei DeleteSelections aufgerufen
* Abfrage, ob die Datensätze wirklich gelöscht werden sollen
*/
function askForSelectionAction(actionlink, action) {
	inQuest = true;
	// Prüfe, ob ein Datensatz selektiert wurde
	var selected = false;
	var keys = document.getElementsByName("keys[]");
	for (var i=0; i < keys.length; ++i) {
		if (keys[i].checked) {
		  actionlink.href = actionlink.href + "&keys[]=" + keys[i].value;
			selected = true;
		} 
	}
	if (!selected) {
		// kein Datensatz selektiert
		alert("Bitte vorher einen Eintrag auswählen!");
		inQuest = false;
		return !followLink();
	}
	ret = confirm('Möchten Sie diese Einträge wirklich ' + action + '?');
	inQuest = false;
	if (ret) {
		return followLink();
	} else {
		return !followLink();
	}
}


function askForSelectionAction_(form, action) {
	inQuest = true;
	// Prüfe, ob ein Datensatz selektiert wurde
	var selected = false;
	var keys = document.getElementsByName("keys[]");
	for (var i=0; i < keys.length; ++i) {
		if (keys[i].checked) {
			selected = true;
			i = keys.length;
		} 
	}
	if (!selected) {
		// kein Datensatz selektiert
		alert("Bitte vorher einen Eintrag auswählen!");
		inQuest = false;
		return !followLink();
	}
	ret = confirm('Möchten Sie diese Einträge wirklich ' + action + '?');
	inQuest = false;
	if (ret) {
		return followLink();
	} else {
		return !followLink();
	}
}

/**
* wird für die list_admins benötigt, um die keys zu selectieren, bzw. deselektieren
*/
function selectAllKeys(value) {
	var keys = document.getElementsByName("keys[]");
	for (var i=0; i < keys.length; ++i) {
		keys[i].checked = value;
	}
}

function updateSequenceByUserInput(sequenceLink, sequence_value) {
	var value = prompt("Bitte geben Sie die Position für den Eintrag an:",sequence_value);
	if (!value) return !followLink();
	isnumeric = /^\d{1,4}$/;
	while (!isnumeric.exec(value) && value) {
		value = prompt("Bitte geben Sie die Position für den Eintrag an:",sequence_value);
	}
	if (!value) return !followLink();
	sequenceLink.href = sequenceLink.href + "&sequence=" + value;	
	return followLink();
}

function listUpdate(target_script, form_element, s_table, key, next_view, optenv) {
  var url = target_script + '?action=update&entity=' + s_table + '&key=' + key + '&' + form_element.name  + '=' + form_element.value + '&next_view=' + next_view + '&' + optenv;
  window.location = url;
}

function showHideStatusSelects(display) {
  showHideSelects(display);
}

function showHideSelects(display) {
  if (BrowserIsIE() && (BrowserVersion() < 7)) {
    var selects = document.getElementsByTagName("select");
    for (var i=0; i < selects.length; i++) {
      selects[i].style.display=display;
    }
  }
}

var last_opend_drop_down;
last_opend_drop_down = false;
function showHideButtonsDropdown(id) {
  dropdown = document.getElementById(id);
  if (dropdown.style.visibility == 'visible') {
    dropdown.style.visibility='hidden';
    dropdown.style.zIndex=-1;
  } else {
    closeLastOpenedDropDown();
    dropdown.style.visibility='visible';
    dropdown.style.zIndex=99;
    last_opend_drop_down = dropdown;
  }
}


/**
 * Ändert das Bild des Button Dropdown
 */
function changeButtonsDropdownPic(drop_id, type, redx_base) {
  var new_src = redx_base + "/res/pics/down";
  if (type == 1) {
    new_src += "_over";
  }
  new_src += ".gif";
  $('img_drop_down_' + drop_id).src = new_src;
}


/**
 * Schließt das zuletzt geöffnete Dropdown
 */
function closeLastOpenedDropDown() {
  if (last_opend_drop_down) {
    last_opend_drop_down.style.visibility='hidden';
    last_opend_drop_down.style.zIndex=-1;
  }
}

function copy_clip(meintext)
{

 if (window.clipboardData) 
   {
   
   // the IE-manier
   window.clipboardData.setData("Text", meintext);
   
   // waarschijnlijk niet de beste manier om Moz/NS te detecteren;
   // het is mij echter onbekend vanaf welke versie dit precies werkt:
   }
   else if (window.netscape) 
   { 

   // Achtung:
   // Im Firfox: 
   //notes about security:
   //a cause of the tight security settings in mozilla you have to sign the javascript to make it work another way is to change your mozilla settings
   //to do this add this line to your prefs.js file in your Mozilla user profile directory
   //user_pref("signed.applets.codebase_principal_support", true);
   //or change it from within the browser with calling the "about:config" page
   // dit is belangrijk maar staat nergens duidelijk vermeld:
   // you have to sign the code to enable this, or see notes below 
   netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
   
   // maak een interface naar het clipboard
   var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
   if (!clip) return;
   
   // maak een transferable
   var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
   if (!trans) return;
   
   // specificeer wat voor soort data we op willen halen; text in dit geval
   trans.addDataFlavor('text/unicode');
   
   // om de data uit de transferable te halen hebben we 2 nieuwe objecten nodig   om het in op te slaan
   var str = new Object();
   var len = new Object();
   
   var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
   
   var copytext=meintext;
   
   str.data=copytext;
   
   trans.setTransferData("text/unicode",str,copytext.length*2);
   
   var clipid=Components.interfaces.nsIClipboard;
   
   if (!clip) return false;
   
   clip.setData(trans,null,clipid.kGlobalClipboard);
   
   }
   alert("Folgender Text wurde in die Zwischenablage kopiert:\n\n" + meintext);
   return false; 
}

function BrowserIsIE() {
  return navigator.appName == "Microsoft Internet Explorer";
}

function BrowserVersion() {
  if (BrowserIsIE()) {
    var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
    reIE.test(navigator.userAgent);
    var fIEVersion = parseFloat(RegExp["$1"]);
    return fIEVersion;
  } else {
    return parseInt(navigator.appVersion);
  }
}

function setCookie(sName, sValue, oExpires, sPath, sDomain, bSecure) {
  var sCookie = sName + "=" + encodeURIComponent(sValue);
  if (oExpires) {
    sCookie += "; expires=" + oExpires.toGMTString();
  }
  if (sPath) {
    sCookie += "; path=" + sPath;
  }
  if (sDomain) {
    sCookie += "; domain=" + sDomain;
  }
  if (bSecure) {
    sCookie += "; secure";
  }
  document.cookie = sCookie;
}

function getCookie(sName) {
  var sRE = "(?:; )?" + sName + "=([^;]*);?";
  var oRE = new RegExp(sRE);
  if (oRE.test(document.cookie)) {
    return decodeURIComponent(RegExp["$1"]);
  } else {
    return null;
  }
}