/*
mjcms Standardskripts ==> benötigen kein prototype // scriptaculous

1) sf : erstes Textfeld in einem Formular fokussieren
2) NewWindow (zentriertes Fenster oeffnen
3) setCookie, readCookie, eraseCookie
4) setActiveStyleSheet
5) strReplace
6) trim
7) press
8) magicDropdown
9) qs
10) hasClass, addClass, removeClass

*/

/* ----- Formularfeld fokussieren ----- */

function sf(f)
{
	if(!document.forms){ return false;}
	if(f==undefined)
	{
		var i=0;
		while(document.forms[0].elements[i].style.display=="none" || document.forms[0].elements[i].type.indexOf("text") ==-1)
		{
			i++;
		}
		document.forms[0].elements[i].focus();
	}else
	{
		document.getElementById(f).focus();
	}
}
/* ----------------------   P O P U P    W I N D O W    ------------------------------------------- */

var win = null;

function NewWindow(mypage,myname,w,h,scroll)
{
		
	LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;
	TopPosition = (screen.height) ? (screen.height-h)/2 : 0;
	
	settings =
	'height='+h+',width='+w+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+',resizable'
	win = window.open(mypage,myname,settings)
	if(win.window.focus)
	{
		win.window.focus();
	}
}


/* ----------------------   C O O K I E S    ------------------------------------------- */

function setCookie(name,value,days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	
	return null;
}

function eraseCookie(name)
{
	setCookie(name,"",-1);
}


/* ----------------------   A L T E R N A T E    S T Y L E    S H E E T S     ---------------------------- */

function setActiveStyleSheet(title,cookie)
{
	
   	var i, a, main;
  	 for(i=0; (a = document.getElementsByTagName("link")[i]); i++)
	 {
     	if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title"))
		{
       		a.disabled = true;
       		if(a.getAttribute("title") == title) a.disabled = false;
     	}
   	}
	
	if(cookie)
	{
		setCookie(cookie,title,7);
	}
	
}

/* ----------------------   S T R I N G S     ---------------------------- */


function strReplace(Text,Suche,Ersetze)
{
	var Neutext = "";
	var i = 0;
	while(i < Text.length)
	{
	   if(Text.substring(i,i + Suche.length) == Suche)
	   {
		 Neutext = Neutext + Ersetze;
		 i = i + Suche.length - 1;
	}
	   else
		Neutext = Neutext + Text.substring(i,i + 1);
	   i++;
	  }
	return Neutext;
}


/* ------------------------------------------------------------------------------- */

function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
	
	if(chars == undefined)
	{
		 while (str.substring(0,1) == ' ') 
        str = str.substring(1, str.length);
		return str;
	}else
	{
		chars = chars || "\\s";
   		return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
	}
}

function rtrim(str, chars) {
	if(chars == undefined)
	{
  		while (str.substring(str.length-1,str.length) == ' ')
        	str = str.substring(0, str.length-1);
		return str;
	}else
	{
		chars = chars || "\\s";
    	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
	}
}


function trimWhitespace(strText) { 
    // vorangestellte Leerzeichen entfernen
    while (strText.substring(0,1) == ' ') 
        strText = strText.substring(1, strText.length);

    // nachgestellte Leerzeichen entfernen
    while (strText.substring(strText.length-1,strText.length) == ' ')
        strText = strText.substring(0, strText.length-1);

   return strText;
} 

/* ----------------------   P R E S S    I M G   ---------------------------- */

function press(e)
{
	var currentImg=e.src;
	imgarray=currentImg.split("/");
	imgfile=imgarray.pop();
	imgfile=imgfile.split(".");
	base=imgfile[0];
	if(base.substr(base.length-8,8) != "_pressed")
	{
		base=base+"_pressed";
	}else
	{
		base=base.substr(0,base.length-8);
	}
	e.src=imgarray.join("/") + "/" + base + "."+imgfile[1];
}

/* ------------------------------------------------------------------------------- */

function magicDropdown(theName,theDirection)
{
	if(navigator.userAgent.indexOf('MSIE') > -1)
	{
		
		var btnReset=document.getElementById(theName+"_reset");
		
		if(!document.forms[0].elements[theName+"_hidden"])
		{
			var drpdwn=document.forms[0].elements[theName];
			var txt=document.forms[0].elements[theName+"_custom"];
		}else
		{
			var drpdwn=document.forms[0].elements[theName+"_hidden"];
			var txt=document.forms[0].elements[theName];	
		}
		
		if(drpdwn.value=="custom" && theDirection != "reset")
		{
			drpdwn.style.display="none";
			drpdwn.selectedIndex=0;
			drpdwn.name=theName+"_hidden";
			
			btnReset.style.display="";
			txt.style.display="";
			txt.focus();
			txt.name=theName;  
		}else
		{
			txt.style.display="none";
			txt.value="";
			txt.name=theName+"_custom";
			btnReset.style.display="none";
			drpdwn.style.display="";
			drpdwn.name=theName;
		}
	}else
	{
		if(document.getElementById(theName).value=="custom")
		{
			document.getElementById(theName).style.display="none";
			document.getElementById(theName).selectedIndex=0;
			document.getElementById(theName+'_custom').style.display="";
			document.getElementById(theName+'_custom').focus();
			document.getElementById(theName+'_reset').style.display="";
			
			document.getElementById(theName).name=theName+'_hidden';
			document.getElementById(theName).id=theName+'_hidden';
		
			document.getElementById(theName+'_custom').name=theName;		
			document.getElementById(theName+'_custom').id=theName;
		}
		
		if(theDirection=="reset")
		{
			document.getElementById(theName+'_hidden').style.display="";
			document.getElementById(theName).style.display="none";
			document.getElementById(theName+'_reset').style.display="none";
			
			document.getElementById(theName).name=theName+'_custom';
			document.getElementById(theName).id=theName+'_custom';
			
			document.getElementById(theName+'_hidden').name=theName;
			document.getElementById(theName+'_hidden').id=theName;
		}
	}
}

/* -------------------------------------------------------------------------------
Die Funktion 'qs' liest alle in der URL nach dem '?' uebergebenen Variablen aus und aktualisiert diese um die in 'params' uebergebenen Werte. In 'params' uebergebene Werte fuer Variablen, die bereits in der URL enthalten sind, werden (params ist in Form eines Query Strings zu uebergeben: ('ID=7&vorname=joe&nachname=doe')

Um eine Variable aus dem URL String zu löschen ist diese in params zu uebergeben, ohne ihr einen Wert zuzuweisen ('ID=7&vorname=nachname=');

Wird 'url' angegebenen, wird die entsprechende URL aufgerufen. Wird in url ein leerer String ('') uebergeben, wird die aktuelle Seite neu geladen. Ist 'url' nicht gegeben, gibt die Funktion lediglich den aktualisierten Query String zurück.
*/


function qs(params,url)
{
	var allParams=new Array();
	
	var fullURL = document.URL.split('?');
	base=fullURL[0];
	
	if(fullURL.length==2)
	{
		if(fullURL[1].length>0)
		{
			var oldparams=fullURL[1];
			oldparams = oldparams.split("&");
		
			for(var i=0;i<oldparams.length;i++)
			{
				var pair=oldparams[i].split("=");
				allParams[i]=new Array();
				allParams[i][0]=pair[0];
				allParams[i][1]=pair[1];
			}
		}
	}
	
	var params=params.split("&");
	
	for(var i=0;i<params.length;i++)
	{
		var Overwrite=false;
		var pair=params[i].split("=");
			
		for(var p=0;p<allParams.length;p++)
		{
			if(allParams[p][0]==pair[0])
			{
				Overwrite=true;
				allParams[p][1]=pair[1];
			}
		}
		
		if(!Overwrite)
		{
			var n=allParams.length;
			allParams[n]=new Array();
			allParams[n][0]=pair[0];
			allParams[n][1]=pair[1];
		}
	}
	
	var newParams=new Array();
	for(var i=0;i<allParams.length;i++)
	{
		if(allParams[i][1] !='')
		{
			newParams.push(allParams[i][0]+'='+allParams[i][1]);
		}
	}
	
	if(url != undefined)
	{
		window.location.href=url+"?"+newParams.join("&");
	}else
	{
		return newParams.join("&");
	}
}

/* ------------------------------------------------------------------------------- */

function hasClass(theElement,theClass) {
	return theElement.className.match(new RegExp('(\\s|^)'+theClass+'(\\s|$)'));
}
function addClass(theElement,theClass) {
	if (!this.hasClass(theElement,theClass)) theElement.className += ' '+theClass;
}

function removeClass(theElement,theClass) {
	if (hasClass(theElement,theClass)) {
		var reg = new RegExp("(\\s|^)"+theClass+"(\\s|$)");
		theElement.className=theElement.className.replace(reg,' ');
	}
}

/* ------------------------------------------------------------------------------- */

function mj_placeholder(element,defaultValue)
   {
		  if(element.value==""){addClass(element,"placeholder"); element.value=defaultValue; return;}
		  if(hasClass(element,"placeholder")){ removeClass(element,"placeholder"); element.value="";}
   }


/* ------------------------------------------------------------------------------- */
var thousands_sep=".";
var decimal_sep=",";

function autoformat(theField)
{
	if(hasClass(document.getElementById(theField),"decimal") || hasClass(document.getElementById(theField),"float"))
	{
		value = formatFloatField(theField);
	}else if(hasClass(document.getElementById(theField),"int"))
	{
		value = mjforms_Trenner(document.getElementById(theField).value);
	}else if(hasClass(document.getElementById(theField),"date") || hasClass(document.getElementById(theField),"datetime"))
	{
		value = formatDateAndTime(theField);
	}else
	{
		value=document.getElementById(theField).value;
	}
	
	if(value != undefined){document.getElementById(theField).value=value;}
	
}

function formatFloatField(theField)
{
	var decimals =document.getElementById(theField).alt;
	if(isNaN(decimals)){decimals=2;}
	
	var val=document.getElementById(theField).value;
	if(val==''){return;}
	
	var tempval = val.toString();
	tempval = strReplace(tempval,thousands_sep,'');
	tempval = strReplace(tempval,decimal_sep,'.');
	val=tempval;
	
	if(val=="Infinity" || isNaN(val)){val='0';}
	
	var valarray=val.split('.');
	vdk=''+valarray[0];
	if(vdk.length>3){vdkneu=mjforms_Trenner(vdk);}else if(vdk.length==0){vdkneu='0';}else{vdkneu=valarray[0];}
	
	if(valarray.length==1){ndk='';}else{ndk=valarray[1];}
	if(ndk.length<decimals){for(d=ndk.length;d<decimals;d++){ndk+='0';}}
	val=vdkneu+decimal_sep+ndk;
	if(val !=undefined){ return val;}

}
	
	function mjforms_Trenner(number)
	{
		number = '' + strReplace(number,thousands_sep,'');
		if (number.length > 3) {
		var mod = number.length % 3;
		var output = (mod > 0 ? (number.substring(0,mod)) : '');
		for (i=0 ; i < Math.floor(number.length / 3); i++) {
		if ((mod == 0) && (i == 0))
		output += number.substring(mod+ 3 * i, mod + 3 * i + 3);
		else
		// hier wird das Trennzeichen festgelegt mit '.'
		output+= thousands_sep + number.substring(mod + 3 * i, mod + 3 * i + 3);
		}
		return (output);
		}
		else return number;
	}
	
	
	function gv(val)
	{
		oldval=val;
		if(decimal_sep==".")return eval(val);
		if(!val){return 0;}
		val=strReplace(val,thousands_sep,'');
		val=strReplace(val,decimal_sep,'.');
		//alert(oldval+ " ---> "+eval(val));
		return eval(val);
	}
	
	
function formatDateAndTime(theField)
{
	var val=document.getElementById(theField).value;
	var type=theField.split("_");
	theType=type.pop();

	switch(theType)
	{
		case "y":
			if(val<=30){val=2000+eval(val);}
			if(val>30 && val<=99){val=1900+eval(val);}
			break;	
		case "m":
			if(val>12){val=12;}
			if(val !="" && val<10 && val.substring(0,1) !="0"){val="0"+val;}
			break;
		case "d":
			if(val>31){val=31;}
			if(val !="" && val<10 && val.substring(0,1) !="0"){val="0"+val;}
			break;
		case "h":
		if(val>23){val=23;}else
			if(val=="" || val==0){val='00';}else
			if(val !="" && val<10){val="0"+val;}
			break;
		case "i":
			if(val>59){val=59;}else
			if(val=="" || val==0){val='00';}else
			if(val !="" && val<10){val="0"+val;}
			break;
		case "int":
			val=mjforms_Trenner(val);
			break;
			
	}
	
	if(val !=undefined && !isNaN(val)){return val;}
}
	
function setCalculatedValueToLangSettings(theField)
{
	
	if(hasClass(document.getElementById(theField),"decimal") || hasClass(document.getElementById(theField),"float"))
	{
		tempvalue=eval(document.getElementById(theField).value).toFixed(document.getElementById(theField).alt);
		document.getElementById(theField).value = strReplace(tempvalue,".",decimal_sep);
		
	}
	autoformat(theField);
}

