/////////////////////////////////////////////////////////////////////////////////////////////////////////
self.onError=null;

var clientPC = navigator.userAgent.toLowerCase(); // Get client info
var clientVer = parseInt(navigator.appVersion); // Get browser version

  // *** BROWSER VERSION ***
// Note: On IE5, these return 4, so use is_ie5up to detect IE5.
var is_major = parseInt(navigator.appVersion);
var is_minor = parseFloat(navigator.appVersion);

var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1));
var is_nav = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1)  && (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1)  && (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1));
var is_moz = 0;
var is_win = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1));
var is_mac = (clientPC.indexOf("mac")!=-1);
var NS = (document.layers) ? 1 : 0;
var IE = (document.all) ? 1: 0;

var is_ie3    = (is_ie && (is_major < 4));
var is_ie4    = (is_ie && (is_major == 4) && (clientPC.indexOf("msie 4")!=-1) );
var is_ie4up  = (is_ie && (is_major >= 4));
var is_ie5    = (is_ie && (is_major == 4) && (clientPC.indexOf("msie 5.0")!=-1) );
var is_ie5_5  = (is_ie && (is_major == 4) && (clientPC.indexOf("msie 5.5") !=-1));
var is_ie5up  = (is_ie && !is_ie3 && !is_ie4);
var is_ie5_5up =(is_ie && !is_ie3 && !is_ie4 && !is_ie5);
var is_ie6    = (is_ie && (is_major == 4) && (clientPC.indexOf("msie 6.")!=-1) );
var is_ie6up  = (is_ie && !is_ie3 && !is_ie4 && !is_ie5 && !is_ie5_5);
	

var keine_action = 1;
var alle_action = 2;

var now = new Date();
var start_time = now.getTime();
var show_session_layer = false;

var currentX = 0;
var currentY = 0;  
var whichIt = null;           
var lastScrollX = 0; 
var lastScrollY = 0;

/////////////////////////////////////////////////////////////////////////////////////////////////////////

function setCssClass (element, classname) {
	element.setAttribute('class',classname);
	element.setAttribute('className',classname); // IE6 is now our friend!
}

function addOnErrorEvent (fnc) {
  if ( typeof window.addEventListener != "undefined" )
    window.addEventListener( "error", fnc, false );
  else if ( typeof window.attachEvent != "undefined" ) {
    window.attachEvent( "onerror", fnc );
  }
  else {
    if ( window.onerror != null ) {
      var oldOnerror = window.onerror;
      window.onerror = function ( e ) {
        oldOnerror( e );
        window[fnc]();
      };
    }
    else
      window.onerror = fnc;
  }
}

function addEventHandler(element, type, handler) {
    try {
        element.addEventListener(type, handler, false);
    } catch(inferiorBrowserException) {
        if(element.attachEvent) 
            element.attachEvent('on'+type, handler);
        else 
            element['on'+type] = handler;
    }
    return [element, type, handler];
}

/* does not work in Safari */
if (window.addEventListener) {
	window.addEventListener("error", (function () {return null;}), false);
} else if (window.attachEvent) {
	window.attachEvent("onerror", (function () {return null;}));
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function sliding(element_name) {
	if(IE) { diffY = document.body.scrollTop+120; diffX = document.body.scrollLeft; }
	if(NS) { diffY = self.pageYOffset; diffX = self.pageXOffset; }

	if(diffY != lastScrollY) {
		percent = .1 * (diffY - lastScrollY);
		if(percent > 0) percent = Math.ceil(percent);
		else percent = Math.floor(percent);

		if(IE) document.getElementById(element_name).style.pixelTop += percent;
		if(NS) document.getElementById(element_name).top += percent; 

		lastScrollY = lastScrollY + percent;
	}
	if(diffX != lastScrollX) {
		percent = .1 * (diffX - lastScrollX);
		if(percent > 0) percent = Math.ceil(percent);
		else percent = Math.floor(percent);
		if(IE) getElementById(element_name).style.pixelLeft += percent;
		if(NS) document.getElementById(element_name).left += percent;
		lastScrollX = lastScrollX + percent;
	}       
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function getActiveText (selectedtext) { 
	text = (document.all) ? document.selection.createRange().text : document.getSelection();
	if (selectedtext.createTextRange) selectedtext.caretPos = document.selection.createRange().duplicate();
	return true;
}
//////////////////////////////////////////////////////////////////////////////////////////////////
function fenster (seite) {
	neu4 = window.open(seite,"preview","toolbar=no,width=500,height=550,scrollbars=yes,directories=no,menubar=no,screenx=1,screeny=1,pageXOffset=1,pageYOffset=1");
	neu4.focus();
}
//////////////////////////////////////////////////////////////////////////////////////////////////
function popup (seite) {
	neu4 = window.open(seite,"preview","toolbar=no,width=500,height=550,scrollbars=no,directories=no,menubar=no,screenx=1,screeny=1,pageXOffset=1,pageYOffset=1");
	neu4.focus();
}
//////////////////////////////////////////////////////////////////////////////////////////////////
function fenster_new (seite) {
	neu4 = window.open(seite,"preview","toolbar=yes,resizable=yes,width=600,height=500,scrollbars=yes,directories=yes,menubar=yes,screenx=1,screeny=1,pageXOffset=1,pageYOffset=1");
	neu4.focus();
}
//////////////////////////////////////////////////////////////////////////////////////////////////
function fenster2 (seite, breite, hoehe, id) {
	window.open(seite, id,"width=" +breite +",height=" +hoehe + ",resizable=no,location=no,status=no,toolbar=no,scrollbars=no,directories=no,menubar=no,screenx=1,screeny=1,pageXOffset=10,pageYOffset=10");
}

//////////////////////////////////////////////////////////////////////////////////////////////////
function fenster3 (seite, breite, hoehe, id) {
	window.open(seite, id,"width=" +breite +",height=" +hoehe + ",resizable=no,location=no,status=no,toolbar=no,scrollbars=no,directories=no,menubar=no,screenx=1,screeny=1,pageXOffset=10,pageYOffset=10");
//	neu=window.open("seite", id,"width=" +breite +",height=" +hoehe + ",resizable=no,location=no,status=no,toolbar=no,scrollbars=no,directories=no,menubar=no,screenx=1,screeny=1,pageXOffset=10,pageYOffset=10");
//	neu.document.write('<html><head><\/head><body topmargin="0" leftmargin="0"><img onClick="window.close();" src="'+seite+'"><\/body><\/html>')
//	neu.focus()
}

//////////////////////////////////////////////////////////////////////////////////////////////////
function fenster2_scrollbars (seite, breite, hoehe, id) {
	window.open(seite, id,"width=" +breite +",height=" +hoehe + ",resizable=yes,location=no,status=yes,toolbar=no,scrollbars=yes,directories=no,menubar=no,screenx=1,screeny=1,pageXOffset=1,pageYOffset=1");
}

////////////////////////////////////////////////////////////////////////////////////
function picture (seite, breite, hoehe, id) {
	neu=   window.open(seite, id ,"toolbar=no,width=" +breite +",height=" +hoehe + ",directories=no,status=no,menubar=no,screenx=1,screeny=1,pageXOffset=1,pageYOffset=1");
	neu.focus();
}

////////////////////////////////////////////////////////////////////////////////////
function image_link (start, image, breite, hoehe, id) {
	var string = "javascript: picture ('/index.php?action=" + start + "&image=" + image + "','" + breite +"','" + hoehe + "'," + id + ");"; 
	return string
}
////////////////////////////////////////////////////////////////////////////////////
function print_page (seite) {
	neu1=   window.open(seite, "Druckversion" ,"width=545,height=600,left=0,top=0,toolbar=yes,scrollbars=yes");
	neu1.focus();
}

////////////////////////////////////////////////////////////////////////////////////
function xml (seite) {
	neu2=   window.open(seite, "XMLVersion" ,"width=545,height=600,left=0,top=0,menubar=yes,toolbar=no,scrollbars=yes");
	neu2.focus();
}

////////////////////////////////////////////////////////////////////////////////////
function details (seite,id) {
	if (id != "") {
		neu3=   window.open(seite + "&idtoedit=" + id, "Details" ,"width=545,height=600,left=0,top=0,toolbar=yes,scrollbars=yes");
		neu3.focus();
	}
}
////////////////////////////////////////////////////////////////////////////////////
function GO (target) {
    if (target != "nix") {
    	self.location.href = target;
   }
}

////////////////////////////////////////////////////////////////////////////////////
function ListOption(content, id) {
	this.content = content;
	this.id = id;
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function AddText(NewCode,formName,fieldName) {
	var txtarea = document.forms[formName].elements[fieldName];
	
	if ((clientVer >= 4) && is_ie && is_win)	{
		var d = (document.forms ? document.forms[formName] : null);
		var e = (d && d.elements ? d.elements[fieldName] : null);
	   	if (e.createTextRange && e.caretPos) {
			var caretPos = e.caretPos;
			caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? NewCode + ' ' : NewCode;
		} else {
			e.value+=NewCode
		}
		txtarea.focus();
		text = '';
	} else {
		txtarea.value += NewCode;
	}
	getActiveText (txtarea);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
function markSelection (start_tag, stop_tag, element, formName, fieldName){
	var temp = "..." + stop_tag;  
	var val = start_tag;
	val += (stop_tag ? temp  : "");
	if (text)    {
    	val = start_tag + text +  stop_tag;
    }		
	AddText(val , formName, fieldName);
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function SetActionValue (formName, fieldName, valueAssign) {
	document.forms[formName].elements[fieldName].value=valueAssign;
	document.forms[formName].submit();
	return true;
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function MM_showHideLayers() { //v3.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
    obj.visibility=v; }
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
function switch_layer(listID) { 
 if(listID.style.display=="none") { 
 	listID.style.display=""; 
 } else { 
 	listID.style.display="none"; 
 } 
} 

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function backendSwitch () {
	switch_layer(document.getElementById('extended_footer_layer'));
	switch_layer(document.getElementById('admin_tree_layer'));
	switch_layer(document.getElementById('arrow_down'));
	switch_layer(document.getElementById('arrow_up'));
}


/////////////////////////////////////////////////////////////////////////////////////////////////////////
function treeSwitch () {
	switch_layer(document.getElementById('admin_tree'));
	switch_layer(document.getElementById('options_tree'));
	switch_layer(document.getElementById('admin_tree_icon'));
	switch_layer(document.getElementById('options_tree_icon'));
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function auctionSwitch () {
	switch_layer(document.getElementById('teaser_layer'));
	switch_layer(document.getElementById('info_layer'));
	switch_layer(document.getElementById('flash_layer'));
	switch_layer(document.getElementById('phone_layer'));
	switch_layer(document.getElementById('button_layer'));
	switch_layer(document.getElementById('back_layer'));
	}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function refreshDoc () {
	location.reload();
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function expandTree () {
	switch_layer(document.getElementById('tree_down'));
	switch_layer(document.getElementById('tree_up'));
	expand_all();
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function handleLoading () {
	switch_layer(document.getElementById('loading_message'));
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function colapseTree () {
	switch_layer(document.getElementById('tree_down'));
	switch_layer(document.getElementById('tree_up'));
	collapse_all();
}


/////////////////////////////////////////////////////////////////////////////////////////////////////////
function AddParameter (to_add, value, start_string) { 
    var param     = new Array(); 
    var parameter = new Array(); 
    var location  = (start_string ? start_string  :  window.location.search); 
	var return_string = '';
	parameters   = location.substr(1, location.length - 1); 
    i            = -1; 
    x            = parameters.indexOf("&"); 

    while (x != -1) { 
      i++; 
      parameter[i] = parameters.substr(0, x); 
      parameters   = parameters.substr((x+1), parameters.length - (x+1)); 
      x            = parameters.indexOf("&"); 
    } 
    i++; 
    parameter[i] = parameters; 
    for( i=0; i<parameter.length; i++) { 
      x = parameter[i].indexOf("="); 
      if (x != -1) { 
        param['Name'+i] = parameter[i].substr(0, x); 
        param['Wert'+i] = parameter[i].substr((x+1), parameter[i].length - (x+1)); 
      } 
    } 
	for( i=0; i<parameter.length; i++) { 
		if (param['Name'+i] && param['Name'+i] != to_add) { return_string = return_string + '&' + param['Name'+i] + '=' + param['Wert'+i]; }
	} 
	return_string = return_string + '&' + to_add + '=' + value;
	return return_string; 
  } 


/////////////////////////////////////////////////////////////////////////////////////////////////////////
function saveLayer () {
	var string = '';
	var value = '';
	Check = confirm("Möchten Sie die Fenstereinstellungen wirklich speichern?\nBitte speichern Sie vorher Ihre ggf. gemachten Änderungen.");
	if (Check == true) {
	  string = window.location.pathname;
	  string = string + '?';
	  value = document.getElementById('admin_tree_layer').style.display;
	  value = value + ";" + document.getElementById('admin_tree').style.display;
	  value = value + ";" + document.getElementById('tree_up').style.display;
	  location.href= string  + AddParameter("save_layer", value, '');
	   
	}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
function changeParameter (parameter, value) {
	var string = '';
	var addon_string = '';
	string = window.location.pathname;
	string = string + '?';
	addon_string = AddParameter(parameter, value);
	location.href= string  + addon_string;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
function changeLayout (layout) {
	var string = '';
	var addon_string = '';
	string = window.location.pathname;
	string = string + '?';
	addon_string = AddParameter("designName", layout);
	location.href= string  + addon_string;
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function changeLanguage (language) {
	var string = '';
	var addon_string = '';
	string = window.location.pathname;
	string = string + '?';
	addon_string = AddParameter("reinitialize_options_tree", 1);
	addon_string = AddParameter("cache", 0, addon_string);
	addon_string = AddParameter("lang", language, addon_string);
	location.href= string  + addon_string;
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function reInitTree () {
	var string = '';
	var addon_string = '';
	Check = confirm("Möchten Sie die Baumansicht aktualisieren?\nBitte speichern Sie vorher Ihre ggf. gemachten Änderungen.");
	if (Check == true) {
		string = window.location.pathname;
	  string = string + '?';
		addon_string = AddParameter("reinitialize_options_tree", 1);
		addon_string = AddParameter("cache", 0, addon_string);
		location.href= string  + addon_string;
	}
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function exportAccount (id) {
	var string = '';
	Check = confirm("Bitte beachten Sie, dass sich die Exportfunktion noch in der Entwicklung befindet.\nEs werden noch nicht alle Daten bzw. Module vollständig exportiert.\nWollen Sie den Export trotzdem fortsetzen?");
	if (Check == true) {
		string = "/index.php?action=account_export&account_id=" +id;
		self.location.href= string;
	}
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function MM_nbGroup(event, grpName) { //v6.0
  var i,img,nbArr,args=MM_nbGroup.arguments;
  if (event == "init" && args.length > 2) {
    if ((img = MM_findObj(args[2])) != null && !img.MM_init) {
      img.MM_init = true; img.MM_up = args[3]; img.MM_dn = img.src;
      if ((nbArr = document[grpName]) == null) nbArr = document[grpName] = new Array();
      nbArr[nbArr.length] = img;
      for (i=4; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
        if (!img.MM_up) img.MM_up = img.src;
        img.src = img.MM_dn = args[i+1];
        nbArr[nbArr.length] = img;
    } }
  } else if (event == "over") {
    document.MM_nbOver = nbArr = new Array();
    for (i=1; i < args.length-1; i+=3) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = (img.MM_dn && args[i+2]) ? args[i+2] : ((args[i+1])? args[i+1] : img.MM_up);
      nbArr[nbArr.length] = img;
    }
  } else if (event == "out" ) {
    for (i=0; i < document.MM_nbOver.length; i++) {
      img = document.MM_nbOver[i]; img.src = (img.MM_dn) ? img.MM_dn : img.MM_up; }
  } else if (event == "down") {
    nbArr = document[grpName];
    if (nbArr)
      for (i=0; i < nbArr.length; i++) { img=nbArr[i]; img.src = img.MM_up; img.MM_dn = 0; }
    document[grpName] = nbArr = new Array();
    for (i=2; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = img.MM_dn = (args[i+1])? args[i+1] : img.MM_up;
      nbArr[nbArr.length] = img;
  } }
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function hasOptions(obj) {
	if (obj!=null && obj.options!=null) { return true; }
	return false;
	}

 /////////////////////////////////////////////////////////////////////////////////////////////////////////
function lockOptions (obj) {
	if (!hasOptions(obj)) { return false; }
	for (var i=0; i<obj.options.length; i++) {
		if (obj.options[i].value == keine_action || obj.options[i].value == alle_action) return true;
		}
	}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function unSelectMatchingOptions(obj,regex) {
	selectUnselectMatchingOptions(obj,regex,"unselect",false);
	}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function selectUnselectMatchingOptions(obj,regex,which,only) {
	if (window.RegExp) {
		if (which == "select") {
			var selected1=true;
			var selected2=false;
			}
		else if (which == "unselect") {
			var selected1=false;
			var selected2=true;
			}
		else {
			return;
			}
		var re = new RegExp(regex);
		for (var i=0; i<obj.options.length; i++) {
			if (re.test(obj.options[i].text)) {
				obj.options[i].selected = selected1;
				}
			else {
				if (only == true) {
					obj.options[i].selected = selected2;
					}
				}
			}
		}
	}
		
/////////////////////////////////////////////////////////////////////////////////////////////////////////
function sortSelect(obj) {
	var o = new Array();
	if (!hasOptions(obj)) { return; }
	for (var i=0; i<obj.options.length; i++) {
		o[o.length] = new Option( obj.options[i].text, obj.options[i].value, obj.options[i].defaultSelected, obj.options[i].selected) ;
		}
	if (o.length==0) { return; }
	o = o.sort( 
		function(a,b) { 
			if ((a.text+"") < (b.text+"")) { return -1; }
			if ((a.text+"") > (b.text+"")) { return 1; }
			return 0;
			} 
		);

	for (var i=0; i<o.length; i++) {
		obj.options[i] = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);
		}
	}


function editSelectedOption(from,fieldset,label,edit,labeltext){
	tmp = new String(labeltext)
	label.innerHTML = tmp.replace( /%s/, from.text);
	new Effect.Appear(fieldset);
	$tmp = $('id_hidden_value_' + o.value + '_' + o.text);
	$tmp.setAttribute("text","TEST");
}
	
	
/////////////////////////////////////////////////////////////////////////////////////////////////////////
function moveSelectedOptions(from,to,check,proove,sort) {
	// Unselect matching options, if required
	var selectcount = 0;
    var option_set = 0;
    var lock = false;
    
    if (!hasOptions(from)) { return; }
    for (var i=0; i<from.options.length; i++) {
		var o = from.options[i];
		if (o.selected) { 

            selectcount++; 
            if (o.value == keine_action) option_set =  option_set + 1;
            if (o.value == alle_action) option_set = option_set + 2;
        }
    }
    
    if (proove == 1 && lockOptions(to) && option_set == 0) { return;  }

    if (proove ==1 && option_set > 0) {
         moveAllOptions (to, from);
        if (option_set > 1) {
            setSelectOptionsbyObj (from, alle_action, true);
        } else {
            setSelectOptionsbyObj (from, keine_action, true);
        }
    } 

	// Maximum exeeded ?
	if (check > 0 && (to.length >= check || ((selectcount+to.length) > check))) { return; }
	
	// Move them over
	for (var i=0; i<from.options.length; i++) {
		var o = from.options[i];
		if (o.selected) {
	        if (!hasOptions(to)) { var index = 0; } else { var index=to.options.length; }
			to.options[index] = new Option( o.text, o.value, false, false);
			}
		}

	// Delete them from original
	for (var i=(from.options.length-1); i>=0; i--) {
		var o = from.options[i];
		if (o.selected) {
			from.options[i] = null;
			}
		}

	if (sort == 1) {
		sortSelect(from);
		sortSelect(to);
	}
	from.selectedIndex = -1;
	to.selectedIndex = -1;
	}
	
	
/////////////////////////////////////////////////////////////////////////////////////////////////////////
function moveSelectedOptionsAJAX(from,to,check,proove,sort,form) {
	// Unselect matching options, if required
	
	var selectcount = 0;
    var option_set = 0;
    var lock = false;
    
    if (!hasOptions(from)) { return; }
    for (var i=0; i<from.options.length; i++) {
		var o = from.options[i];
		if (o.selected) { 

			var tmp = document.createElement("hidden");
			tmp.className = 'hidden_value_' + o.value + '_' + o.text;
			tmp.setAttribute('id','id_'+tmp.className);
			
            selectcount++; 
            if (o.value == keine_action) option_set =  option_set + 1;
            if (o.value == alle_action) option_set = option_set + 2;
        }
    }
    
    if (proove == 1 && lockOptions(to) && option_set == 0) { return;  }

    if (proove ==1 && option_set > 0) {
         moveAllOptions (to, from);
        if (option_set > 1) {
            setSelectOptionsbyObj (from, alle_action, true);
        } else {
            setSelectOptionsbyObj (from, keine_action, true);
        }
    } 

	// Maximum exeeded ?
	if (check > 0 && (to.length >= check || ((selectcount+to.length) > check))) { return; }
	
	// Move them over
	for (var i=0; i<from.options.length; i++) {
		var o = from.options[i];
		if (o.selected) {
	        if (!hasOptions(to)) { var index = 0; } else { var index=to.options.length; }
			to.options[index] = new Option( o.text, o.value, false, false);
			}
		}

	// Delete them from original
	for (var i=(from.options.length-1); i>=0; i--) {
		var o = from.options[i];
		if (o.selected) {
			from.options[i] = null;
			}
		}

	if (sort == 1) {
		sortSelect(from);
		sortSelect(to);
	}
	from.selectedIndex = -1;
	to.selectedIndex = -1;
	}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function moveAllOptions(from,to) {
	selectAllOptions(from);
	moveSelectedOptions(from,to);
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function copySelectedOptions(from,to,check,proove,sort,count) {
	if (!this.hasOptions(from)) { return false; }
	var options = new Object();
	
	// Maximum exeeded ?
	if (check > 0 && (to.length >= check || ((selectcount+to.length) > check))) { return; }

	for (var i=0; i<from.options.length; i++) {
		var o = from.options[i];
		if (o.selected) {
			if (typeof(options[o.value])=="undefined" || options[o.value]==null || options[o.value]!=o.text) {
				if (!this.hasOptions(to)) { 
					var index = 0; 
				} 
				else { 
					var index=to.options.length; 
				}
				if (count > 1) {
					for(var j=0; j<count; j++)
					to.options[index++] = new Option( o.text, o.value, false, false);
				} 
				else if (count == 1) {
					to.options[index] = new Option( o.text, o.value, false, false);
				}
				else {
					to.options[index] = new Option( o.text, o.value, false, false);
				}
			}
		}
	}

	from.selectedIndex = -1;
	to.selectedIndex = -1;
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function removeSelectedOptions(from) { 
	if (!hasOptions(from)) { return; }
	if (from.type=="select-one") {
		from.options[from.selectedIndex] = null;
		}
	else {
		for (var i=(from.options.length-1); i>=0; i--) { 
			var o=from.options[i]; 
			if (o.selected) { 
				from.options[i] = null; 
				} 
			}
		}
	from.selectedIndex = -1; 
} 

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function setSelectOptions(the_form, the_select, do_check) {
    var selectObject = document.forms[the_form].elements[the_select];
    var selectCount  = selectObject.length;
    for (var i = 0; i < selectCount; i++) {
        selectObject.options[i].selected = do_check;
    } // end for
    return true;
} 

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function setSelectOptionbyId(the_form, the_select, option_number) {
	if (option_number > 0) option_number = option_number-1; 
    var selectObject = document.forms[the_form].elements[the_select];
	selectObject.options[option_number].selected = true;
	return true;
} 

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function setSelectOptionsbyObj ( obj, the_select, do_check) {
     for (var i=0; i < obj.options.length; i++) {
		var o = obj.options[i];
		if (o.value == the_select) {
            o.selected = do_check;
        } else {
              o.selected = false;
        }
    }
    return true;
} 

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function moveOptionUp(obj) {
	if (!hasOptions(obj)) { return; }
	for (i=0; i<obj.options.length; i++) {
		if (obj.options[i].selected) {
			if (i != 0 && !obj.options[i-1].selected) {
				swapOptions(obj,i,i-1);
				obj.options[i-1].selected = true;
			}
		}
	}
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function moveOptionDown(obj) {
	if (!hasOptions(obj)) { return; }
	for (i=obj.options.length-1; i>=0; i--) {
		if (obj.options[i].selected) {
			if (i != (obj.options.length-1) && ! obj.options[i+1].selected) {
				swapOptions(obj,i,i+1);
				obj.options[i+1].selected = true;
			}
		}
	}
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function moveOptionDownAjax(obj) {
	
	if (!hasOptions(obj)) { return; }
	for (i=obj.options.length-1; i>=0; i--) {
		if (obj.options[i].selected) {
			
			if (i != (obj.options.length-1) && ! obj.options[i+1].selected) {
				swapOptions(obj,i,i+1);
				obj.options[i+1].selected = true;
			}
		}
	}
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function swapOptions(obj,i,j) {
	var o = obj.options;
	var i_selected = o[i].selected;
	var j_selected = o[j].selected;
	var temp = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);
	var temp2= new Option(o[j].text, o[j].value, o[j].defaultSelected, o[j].selected);
	o[i] = temp2;
	o[j] = temp;
	o[i].selected = j_selected;
	o[j].selected = i_selected;
}
	
/////////////////////////////////////////////////////////////////////////////////////////////////////////
function timeRedirect (in_time, link) {
	var current_date = new Date();
	var current_time = Math.round((current_date.getTime() - start_time)/1000);
	if (current_time >= (in_time+2)) {
		self.location.href = link;
	}
	window.setTimeout('timeRedirect(' + in_time + ',\'' + link + '\')',1000);
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function sessionWarning (in_time) {
	var current_date = new Date();
	var current_time = Math.round((current_date.getTime() - start_time)/1000);
	if (current_time >= (in_time-120) && show_session_layer == false) {
		switch_layer(document.getElementById('session_warning'));
		show_session_layer = true;
		if (NS || IE) action = window.setInterval("sliding('session_warning')",50);
	}
	window.setTimeout('sessionWarning(' + in_time + ')',1000);
	
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
function selectAllOptions(obj) {
//alert(obj.name);
	
	if (!hasOptions(obj)) { return; }
	obj.multiple=true;
	for (var i=0; i<obj.options.length; i++) {
		obj.options[i].selected = true;
		
		}
	}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function Auswahl(form,index) {
      form.options[index].selected = true;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
function updateGame () {
	var string = '';	
	var addon_string = '';
	var selected_value = document.forms["anbieter_search"].search_team.options[document.forms["anbieter_search"].search_team.selectedIndex].value;

	string = window.location.pathname;
	string = string + '?';
	addon_string = AddParameter("game", "0");
	addon_string = AddParameter("team", selected_value, addon_string);
	self.location.href= string  + addon_string;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
function updateGameTime () {
	var string = '';
	var selected_value = document.forms["anbieter_search"].search_game.options[document.forms["anbieter_search"].search_game.selectedIndex].value;
	string = window.location.pathname;
	string = string + '?';
	self.location.href= string  + AddParameter("game", selected_value, '');
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
function updateVariant () {
	var string = '';
	var selected_value = (document.forms["new_variant"]) ? document.forms["new_variant"].fk_product.options[document.forms["new_variant"].fk_product.selectedIndex].value : 0;
	selected_value = (document.forms["edit_variant"]) ? document.forms["edit_variant"].fk_product.options[document.forms["edit_variant"].fk_product.selectedIndex].value : selected_value;
	string = window.location.pathname;
	string = string + '?';
	self.location.href= string  + AddParameter("fk_product", selected_value, '');
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function updateBranches () {
	document.forms["kooperation_newsletter"].submit_type.value = 'changes';
	document.forms["kooperation_newsletter"].submit();
}	
/////////////////////////////////////////////////////////////////////////////////////////////////////////
function updateBranchesSimple () {
	var string = '';	
	var addon_string = '';
	var selected_branch = document.forms["kooperation_newsletter"].search_branches.options[document.forms["kooperation_newsletter"].search_branches.selectedIndex].value;
	var selected_technology = document.forms["kooperation_newsletter"].search_technology.options[document.forms["kooperation_newsletter"].search_technology.selectedIndex].value;

	string = window.location.pathname;
	string = string + '?';
	addon_string = AddParameter("technology", selected_technology);
	addon_string = AddParameter("branch", selected_branch, addon_string);
	self.location.href= string  + addon_string;
}	
	
/////////////////////////////////////////////////////////////////////////////////////////////////////////
function updateIndustry (audit) {
	var string = '';	
	var addon_string = '';
	var selected_branch = document.forms["delete_form"].industry.options[document.forms["delete_form"].industry.selectedIndex].value;

	string = window.location.pathname;
	string = string + '?';
	addon_string = AddParameter("industry", selected_branch);
	addon_string = AddParameter("audit", audit, addon_string);
	self.location.href= string  + addon_string;
}		
/////////////////////////////////////////////////////////////////////////////////////////////////////////

// -----------------------------------------------------------------------------
// Globals
// Major version of Flash required
var requiredMajorVersion = 6;
// Minor version of Flash required
var requiredMinorVersion = 0;
// Minor version of Flash required
var requiredRevision = 0;
// the version of javascript supported
var jsVersion = 1.0;
// -----------------------------------------------------------------------------

var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
jsVersion = 1.1;

/////////////////////////////////////////////////////////////////////////////////////////////////////////

// JavaScript helper required to detect Flash Player PlugIn version information
function JSGetSwfVer(i){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
      		var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			descArray = flashDescription.split(" ");
			tempArrayMajor = descArray[2].split(".");
			versionMajor = tempArrayMajor[0];
			versionMinor = tempArrayMajor[1];
			if ( descArray[3] != "" ) {
				tempArrayMinor = descArray[3].split("r");
			} else {
				tempArrayMinor = descArray[4].split("r");
			}
      		versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
            flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
      	} else {
			flashVer = -1;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	// Can't detect in all other cases
	else {
		
		flashVer = -1;
	}
	return flashVer;
} 

/////////////////////////////////////////////////////////////////////////////////////////////////////////

// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) 
{
 	reqVer = parseFloat(reqMajorVer + "." + reqRevision);
   	// loop backwards through the versions until we find the newest version	

	for (i=25;i>0;i--) {	
		if (isIE && isWin && !isOpera) {
			versionStr = VBGetSwfVer(i);
		} else {
			versionStr = JSGetSwfVer(i);		
		}
		
		if (versionStr == -1 ) { 
			return false;
		} else if (versionStr != 0) {
			if(isIE && isWin && !isOpera) {
				tempArray         = versionStr.split(" ");
				tempString        = tempArray[1];
				versionArray      = tempString .split(",");				
			} else {
				versionArray      = versionStr.split(".");
			}
			versionMajor      = versionArray[0];
			versionMinor      = versionArray[1];
			versionRevision   = versionArray[2];
			
			versionString     = versionMajor + "." + versionRevision;   // 7.0r24 == 7.24
			versionNum        = parseFloat(versionString);
        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
			if ( (versionMajor > reqMajorVer) && (versionNum >= reqVer) ) {
				return true;
			} else {
				return ((versionNum >= reqVer && versionMinor >= reqMinorVer) ? true : false );	
			}
		}
	}	
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
function updateParent(target) {
	if(window.opener && window.opener.closed == false) {
		window.opener.location.href = target;
		window.opener.focus();
	}
	else 
	{ 
		window.open(target,"Parent");
 	}
	window.close();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
function fnSetInfo(text) {
	if (text != '') {
	text = text.replace(/§§/gi, '"');
	text = text.replace(/&lt;/gi, '<');

	
  event.dataTransfer.setData("Text", text); 
  event.dataTransfer.effectAllowed = "copy";                 
	}
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function fnGetInfo(formName, fieldName) {
  event.returnValue = false;                           
  event.dataTransfer.dropEffect = "copy";              
  document.forms[formName].elements[fieldName].value += event.dataTransfer.getData("Text");
  document.forms[formName].elements[fieldName].focus();
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function fnCancelDefault() {                                            
  event.returnValue = false;                  
  event.dataTransfer.dropEffect = "copy";  
}


/////////////////////////////////////////////////////////////////////////////////////////////////////////
function radioCheck (name, current_value) {
	for (i = 0; i < document.getElementsByName(name).length; i++) {
    if (document.getElementsByName(name)[i].value != current_value) {
     document.getElementsByName(name)[i].checked = false;
    } else {
		document.getElementsByName(name)[i].checked = true;
   }
  }
}


/////////////////////////////////////////////////////////////////////////////////////////////////////////
function formDynamicSubmit (name, field) {
	var string = '';
	if (field == null) field = 'Option';
	for (i = 0; i < document.getElementsByName(name).length; i++) {
		if (document.getElementsByName(name)[i].checked) {
			string = document.getElementsByName(name)[i].value;
		}
	}
	if (string != '') {
		document.forms[string].submit();
	} else {
		alert ('Bitte wähle eine ' + field + ' durch Anklicken des Kreises vor der Option.');
	}
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
function xorCrypt(text) {
	key = "emailverschlüsselungfüradressenwegendenspammern";
	result = '';
	for (i = 0; i < text.length; i++){
		j = (i >= text.length)? 0 : i;
		result += String.fromCharCode(text.charCodeAt(i) ^ key.charCodeAt(j));		
	}
	return result;
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function sendmail(mail) {
	mail = 'mailto:'+xorCrypt(unescape(mail));
	location.href=mail;
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
String.prototype.removeTags = function() {
	var tmp = this;
	while (tmp.search(/\<[^>]*\>/) != -1){
		tmp = tmp.replace(/\<[^>]*\>/,'').replace(/\n/,'').replace(/\r/,'');
	}
	return tmp.replace(/^(^\s*|\s*$)/, "").replace(/(^\s*|\s*$)$/, "");
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
String.prototype.trim = function(){
	return this.replace(/(^\s*|\s*$)/, "");
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function insertText(from,select,field){
	var fieldset = $('id_'+field);
	var obj = $('id_'+from);
	var obj2 = document.getElementsByName(from);
	var select1 = document.getElementsByName(select+'[]')[0];
	var select2 = document.getElementsByName(select+'_unselected[]')[0];
	var input = obj2[0].value;
	var elementId = obj.g_id;
	var object = document.getElementById('id_hidden_value_' + elementId);
	object.value = input;
	var cstring = '';
	if (input.length > 10) cstring = input.slice(0,7) + '...';
	else cstring = input;
	if (fieldset != 'undefined') {Effect.Fade(fieldset);};
	if (hasOptions(select1)){ 
	    for (var i=0; i<select1.options.length; i++) {
			var o1 = select1.options[i];
			if (o1.value == elementId){
				o1.text = o1.text.replace(/\(.*\)/,'');
				o1.text = o1.text.concat(' ('+cstring+')');
				return;
			}
		}
	}
	if (hasOptions(select2) && cstring.length > 0){ 
	    for (var i=0; i<select2.options.length; i++) {
			var o2 = select2.options[i];
			if (o2.value == elementId){
				o2.text = o2.text.replace(/\(.*\)/,'');
				o2.text = o2.text.concat(' ('+cstring+')');
				return;
			}
		}
	}
	if (hasOptions(select2) && cstring.length == 0){ 
	    for (var i=0; i<select2.options.length; i++) {
			var o2 = select2.options[i];
			if (o2.value == elementId){
				o2.text = o2.text.replace(/\(.*\)/,'');
				o2.text = o2.text.concat('');
				return;
			}
		}
	}
	
}

function getSelectedValue(object){
	if (hasOptions(object)) {
		for (var i=0; i<object.options.length; i++) {
		//	alert("hasOptions(obj)");
			if (object.options[i].selected) { 
				return object.options[i].value;
			}
		}
	}
	return null;
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function showEditArea(fieldset,obj,textobj){
	var index;
	var replace = new Array();	
	index = (obj.selectedIndex > -1)?obj.options[obj.selectedIndex].value:null;
	
	if (index != null) {
		
		var object = $('id_hidden_value_' + index);
		var test2 = (object.replacetext == undefined || object.replacetext == null)? '' : new String(object.replacetext);
		var outer_replace = test2.split('+++++');	
		var obj2 = document.getElementsByName(textobj);
		$('id_'+textobj).g_id = obj.value;
		for (i=0;i<outer_replace.length;i++){
			replace.push(outer_replace[i].split('-----'));		
			var tmp = (is_ie)
						? $("id_"+replace[i][0]).firstChild
						: $("id_"+replace[i][0]);
			var myregexp = new RegExp(tmp.innerHTML.removeTags());
			tmp.innerHTML = tmp.innerHTML.replace(myregexp,replace[i][1]);	
			tmp.innerHTML = tmp.innerHTML.replace(myregexp,replace[i][1]);
			var tmp_array = tmp.innerHTML.split('%s');
			var IH = '';
			for (j=0;j<tmp_array.length;j++){
				IH = IH.concat(tmp_array[j]);
				if (replace[i][j+2] != undefined) IH = IH.concat(replace[i][j+2]);
			}
			tmp.innerHTML = IH;
		}	
		Effect.Appear(fieldset);
		
		obj2[0].value = object.value;
	}
}

function prepareHiddenFields(from1,from2){
	if (hasOptions(from1)) { 
		for (var i=0; i<from1.options.length; i++) {
			var o = from1.options[i];
			var object = $('id_hidden_value_' + o.value);
			object.replacetext = o.id;
			o.id ='';
		}
	}
	if (hasOptions(from2)) { 
	    for (var i=0; i<from2.options.length; i++) {
			var o = from2.options[i];
			var object = $('id_hidden_value_' + o.value);
			object.replacetext = o.id;
			o.id ='';
		}
	}
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function moveSelectedOptionsAJAX(from,to,check,proove,sort,form,fieldset) {
	// Unselect matching options, if required
	var selectcount = 0;
    var option_set = 0;
    var lock = false;
	
	
    if (!hasOptions(from)) { return; }
    for (var i=0; i<from.options.length; i++) {
		var o = from.options[i];
		
		if (o.selected) { 
			selectcount++; 
	        if (o.value == keine_action) option_set =  option_set + 1;
	        if (o.value == alle_action) option_set = option_set + 2;
        }
    }
    
    if (proove == 1 && lockOptions(to) && option_set == 0) { return;  }

    if (proove ==1 && option_set > 0) {
         moveAllOptions (to, from);
        if (option_set > 1) {
            setSelectOptionsbyObj (from, alle_action, true);
        } else {
            setSelectOptionsbyObj (from, keine_action, true);
        }
    } 

	// Maximum exeeded ?
	if (check > 0 && (to.length >= check || ((selectcount+to.length) > check))) { return; }
	
	// Move them over
	for (var i=0; i<from.options.length; i++) {
		var o = from.options[i];
		if (o.selected) {
	        if (!hasOptions(to)) { var index = 0; } else { var index=to.options.length; }
			to.options[index] = new Option( o.text, o.value, false, false);
			to.options[index].setAttribute("id",o.id);
			}
		}

	// Delete them from original
	for (var i=(from.options.length-1); i>=0; i--) {
		var o = from.options[i];
		if (o.selected) {
				from.options[i] = null;			
			}
		}
	
	if (sort == 1) {
		sortSelect(from);
		sortSelect(to);
	}
	if (fieldset) {Effect.Fade(fieldset);};
	from.selectedIndex = -1;
	to.selectedIndex = -1;
	
	}
	
/**
*
*  UTF-8 data encode / decode
*
**/
var Utf8 = {

    // public method for url encoding
    encode : function (string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // public method for url decoding
    decode : function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while ( i < utftext.length ) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
    }

}

// This code is in the public domain. Feel free to link back to http://jan.moesen.nu/
		function sprintf()
		{
			if (!arguments || arguments.length < 1 || !RegExp)
			{
				return;
			}
			var str = arguments[0];
			var re = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
			var a = b = [], numSubstitutions = 0, numMatches = 0;
			while (a = re.exec(str))
			{
				var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4];
				var pPrecision = a[5], pType = a[6], rightPart = a[7];
				
				//alert(a + '\n' + [a[0], leftpart, pPad, pJustify, pMinLength, pPrecision);

				numMatches++;
				if (pType == '%')
				{
					subst = '%';
				}
				else
				{
					numSubstitutions++;
					if (numSubstitutions >= arguments.length)
					{
						alert('Error! Not enough function arguments (' + (arguments.length - 1) + ', excluding the string)\nfor the number of substitution parameters in string (' + numSubstitutions + ' so far).');
					}
					var param = arguments[numSubstitutions];
					var pad = '';
					       if (pPad && pPad.substr(0,1) == "'") pad = leftpart.substr(1,1);
					  else if (pPad) pad = pPad;
					var justifyRight = true;
					       if (pJustify && pJustify === "-") justifyRight = false;
					var minLength = -1;
					       if (pMinLength) minLength = parseInt(pMinLength);
					var precision = -1;
					       if (pPrecision && pType == 'f') precision = parseInt(pPrecision.substring(1));
					var subst = param;
					       if (pType == 'b') subst = parseInt(param).toString(2);
					  else if (pType == 'c') subst = String.fromCharCode(parseInt(param));
					  else if (pType == 'd') subst = parseInt(param) ? parseInt(param) : 0;
					  else if (pType == 'u') subst = Math.abs(param);
					  else if (pType == 'f') subst = (precision > -1) ? Math.round(parseFloat(param) * Math.pow(10, precision)) / Math.pow(10, precision): parseFloat(param);
					  else if (pType == 'o') subst = parseInt(param).toString(8);
					  else if (pType == 's') subst = param;
					  else if (pType == 'x') subst = ('' + parseInt(param).toString(16)).toLowerCase();
					  else if (pType == 'X') subst = ('' + parseInt(param).toString(16)).toUpperCase();
				}
				str = leftpart + subst + rightPart;
			}
			return str;
		}
		
/////////////////////////////////////////////////////////////////////////////////////////////////////////
function blog_checkform_addcomment (form) {

	var author  = form.author;
	var email   = form.email;
	var comment = form.comment_text;

	var error = "";
	if (author.value.match(/^\s*$/)) {
		error = error + "- Bitte geben Sie Ihren Namen ein.\n";
	}
	if (comment.value.match(/^\s*$/)) {
		error = error + "- Bitte geben Sie einen Kommentar an.\n";
	}
	if ((email.value.length > 0) && !email.value.match(/^.+\@.+\..+$/)) {
		error = error + "- Bitte prüfen Sie Ihre Email-Adresse auf Gültigkeit (oder lassen Sie das Feld ganz leer).";
	}
	
	if (error.length != 0) {
		alert("Folgende Felder sind nicht oder nicht korrekt ausgefüllt:\n" + error);
		return false;
	}
	
	return true;
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////

/* Funktion zum Prüfen von Formulareingaben:

   Benutzung im Formular-Eventhandler:
     <form ... onSubmit="javascript:return validForm(this, new Array('email'), new Array('author','text'))">...</form>

   Feldtypen:
     - email: (automatisch, wenn kein Feldtyp angegeben und der Feldname 'mail' enthält)
	 - text: optional können Minimal- und Maximallänge übergeben werden
	 - integer: optional können Minimal- und Maximalwert übergeben werden
	 
   Rückgabewert:
	 - bei Fehlern wird eine Meldung angezeigt
     - Funktion gibt true oder false zurück
*/
function validForm (form, requiredFields) {
	var error = false;
	// ...
	return error;
}

function validEmail (email) { // UNGETESTET!!!
	if (String(email).match(/^.+\@.+\..+$/)) {
		return true;
	}
	return false;
}
function validText (text, minlength, maxlength) { // UNGETESTET!!!
	var t = String(text);
	if (t.length >= minlength && t.length <= maxlength) {
		return true;
	}
	return false;
}
function validInteger (integer, minvalue, maxvalue) { // UNGETESTET!!!
	var i = Number(integer);
	if (i.isNaN() || !i.isFinite || i < Number(minvalue) || i > Number(maxvalue)) {
		return true;
	}
	return false;
}

function lightboxRequest(element,params,type,mode,my_index,autoplay,autoplaytiming){
	if (type == undefined) type = 'lightbox';	
	if (my_index == undefined) my_index = '1';	
	if (params == undefined) params = '';
	if (autoplay == undefined) autoplay = false;
	if (autoplaytiming == undefined) autoplaytiming = '10';
	if(mode == 'gallery') {
		url = '/data/gallery_getXML.php';
	}	
	else {
		url = '/data/photoalbum_getXML.php';
	}	
	params = encodeURI(params+'&first_id=id_lightbox_photo_first&index='+my_index+'&type='+type);
	var opt = {
		// Use POST
		method: 'post',
		// Send this lovely data
		postBody: params,
		// Handle successful response
		onSuccess: function(t) {
			$(element).update(t.responseText);
			first = $('id_lightbox_photo_first');			
			if (type == 'lightbox'){
				//für lightbox
				initLightbox();
				myLightbox.start(first,autoplay,autoplaytiming);
			} else {
				//für Flashbox
				initialize();
				start(first,autoplay,autoplaytiming);
			}
		},
		// Handle 404
		on404: function(t) {
			alert('Error 404: location \"' + t.statusText + '\" was not found.');
		},
		// Handle other errors
		onFailure: function(t) {
			alert('Error ' + t.status + ' -- ' + t.statusText);
		}
	}
	new Ajax.Request(url, opt);
}

AIM = {
	frame : function(c) {

		var n = 'f' + Math.floor(Math.random() * 99999);
		var d = document.createElement('DIV');
		d.innerHTML = '<iframe style="display:none" src="about:blank" id="'+n+'" name="'+n+'" onload="AIM.loaded(\''+n+'\')"></iframe>';
		document.body.appendChild(d);

		var i = document.getElementById(n);
		if (c && typeof(c.onComplete) == 'function') {
			i.onComplete = c.onComplete;
		}

		return n;
	},

	form : function(f, name) {
		f.setAttribute('target', name);
	},

	submit : function(f, c) {
		AIM.form(f, AIM.frame(c));
		if (c && typeof(c.onStart) == 'function') {
			return c.onStart();
		} else {
			return true;
		}
	},

	loaded : function(id) {
		var i = document.getElementById(id);
		if (i.contentDocument) {
			var d = i.contentDocument;
		} else if (i.contentWindow) {
			var d = i.contentWindow.document;
		} else {
			var d = window.frames[id].document;
		}
		if (d.location.href == "about:blank") {
			return;
		}

		if (typeof(i.onComplete) == 'function') {
			if (!d.body.getAttribute) {  
				i.onComplete(d.body.innerHTML,0);
			} else {
				i.onComplete(d.body.innerHTML,d.body.getAttribute('error'));
			}
		}
	}

}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function defaultConfirmMessage (text, link, formName) {
	if (text != '') {
		text = text.replace("<br>", "\n");
		text = text.replace("<br />", "\n");
		Check = confirm(text);
		if (Check == true) {
			if (formName && formName != '') {
				document.forms[formName].submit();
			}
			else if (link && link != '') {
				location.href = link;
			}	
		}
	}	
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////
function clearText(str) {
	re = /\$|,|@|#|Ä|§|\/|Ö|Ü|ä|ö|ü| |~|`|\%|\*|\^|\&|\(|\)|\+|\=|\[|\-|\_|\]|\[|\}|\{|\;|\:|\'|\"|\<|\>|\?|\||\\|\!|\$|\./g;
	// remove special characters like "$" and "," etc...
	return str.replace(re, "_");
}

