/**
 * Diese Datei enthält Funktionen, die auf verschiedensten Seiten benötigt
 * werden können.
 * Voraussetzung für eine Funktion hier herein zu dürfen:
 * - allgemeine Form (also modulare Verwendung möglich!)
 * - muss in MIND. 2 (ZWEI!) Dateien verwendet werden!
 *
 * Beispiele: showHideFormContainer,
 *
 * @version: 1.0
 * @copyright KnowOne AG
 */


/**
* Funktion blendet (typischerweise) Tabellenzeile (in TBODY/TR) ein oder
* aus, je nach übergebenem Wert
*
* @param string CONT_ID		ID des Elements, das ein- oder ausgeblendet
* 							werden soll.
* @param mixed VAL			Wert, der bestimmt, ob Element ein- oder
*							ausgeblendet werden soll. VAL == "1" oder
*							"true" => einblenden, sonst => asublenden
* @param string PUT_FOCUS	(optional) Element-ID, auf das nach einblenden
*							der Focus gesetzt werden soll.
*/
function showHideFormContainer(CONT_ID, VAL, PUT_FOCUS)
{
	//Container, der ein-/ausgeblendet werden soll
	var CONTAINER = document.getElementById(CONT_ID);

	//Ist der Wert 1 oder true (bspw.: Box=checked)
	if(VAL == '1' || VAL == true)
	{
		//IE braucht andere display-Eigenschaft, sonst heult er :.-(
		if(isIE)
		{
			CONTAINER.style.display = 'block';
		}
		else // if(window.opera)
		{
			CONTAINER.style.display = 'table-row';
		}


		//Focus setzen
		if(typeof PUT_FOCUS != 'undefined')
		{
			document.getElementById(PUT_FOCUS).focus();
		}
	}
	//ausblenden
	else
	{
		CONTAINER.style.display = 'none';
	}

	return;
}







/**
 * globale Variable, die den aktuellen Status von Markierungen von Checkboxen
 * speichert; true, wenn zuvor alle markiert wurden
 * (für Funktion markUnmarkAll())
 */
var CHECK_STATUS;

/**
 * Funktion (de)aktiviert alle Checkboxen mit dem übergebenem Namen
 * Funktion zum gleichzeitigen Ein-/Entfärben eines Elements (typischerweise)
 * nummerierte Tabellenzeile wird mit aufgerufen!
 *
 * @param CHECKB_NAMES string	Name der zu (de)aktivierenden Elemente
 * @return true
 */
function markUnmarkAll( CHECKB_NAMES )
{
	var ALL_CHECKBOXES = document.getElementsByName(CHECKB_NAMES);
	var NEW_CHECK_STATUS;


	if(CHECK_STATUS == true)
	{
		NEW_CHECK_STATUS = false;
		CHECK_STATUS = false;
	}
	else
	{
		NEW_CHECK_STATUS = true;
		CHECK_STATUS = true;
	}


	for(var i = 0; i < ALL_CHECKBOXES.length; i++)
	{

			ALL_CHECKBOXES[i].checked = NEW_CHECK_STATUS;




			if (typeof(highlightRow_Perm) == "function")
			{
				highlightRow_Perm('objrow_' + (i+1), NEW_CHECK_STATUS);
			}

	}

	return true;
}


/**
 * Funktion "resized" die Anzeige des Portals. Bei Auflösungen <= 1024x768
 * wird üblicherweise ein kleinerer Header verwendet sowie die Navigation nach
 * oben verschoben. Dies geschieht durch die Zuweisung von "small-CSS-Klassen"
 */
function resizeLayout()
{
	if (top.screen.width <= 1024)
	{
		var SKELETON_HEADER = document.getElementById('skl_header');
		var NAVIG_LEFT = document.getElementById('div_naviLContainer');

		//Klasse für kleineren Header verwenden
		if(SKELETON_HEADER)
		{
			SKELETON_HEADER.className = 'skl_header_sm';
		}
		//absolut positionierte linke Navigation nach oben schieben
		if(NAVIG_LEFT)
		{
			NAVIG_LEFT.className = 'naviLContainer_sm';
		}
	}

	return;
}



function removeCharFromVal(EL_ID, CHAR)
{
	ELEM = document.getElementById(EL_ID);
	if(!ELEM || typeof(ELEM) == 'undefined')
	{
		return;
	}


	ELEM.value = ELEM.value.replace(/\./g, '');
	return;
}




/**
 * Funktion funktioniert ähnlich der PHP-Funktion "number_format"
 *
 * @param float/int NUMMER		Zahl im engl. Format, die gewandelt werden soll
 * @param string DEC_POINT		Zeichen für Dezimal-Trennzeichen
 * @param string THOUSAND_SEP	Zeichen für Tausender-Trennzeichen
 * @param string PRECISION		(optional) Anzahl Nachkommastellen auf die
 *								gekürzt bzw. erweitert werden soll
 */

function number_format(NUMMER, DEC_POINT, THOUSAND_SEP, PRECISION)
{
	//cast auf String
	NUMMER += '';
	var numberParts = NUMMER.split('.');
	var INT_PART = '';
	var i;


	/**
	 * Sofern man nicht die Nachkommastellen aufgefüllt haben will, muss das
	 * folgende Konstruk verwendet werden.
	 * s.a.: http://de3.php.net/manual/en/function.number-format.php#84420
	 */
	 for(i = 0; i < numberParts[0].length; i++)
	 {
	 	INT_PART += numberParts[0].substr(i, 1);

		//Tausender-Trenner, nach jedem 3. Durchlauf, NICHT beim letzten
		// Durchlauf und NUR, bei mehr als 3 Ziffern im Ganzzahl-Anteil
		if(i % 3 == 0 && i != numberParts[0].length-1 && numberParts[0].length > 3)
		{
			INT_PART += THOUSAND_SEP;
		}
	 }

	 //initialiseren von nicht vorhandenen Nachkommastellen
	 if(typeof numberParts[1] == 'undefined' || !numberParts[1])
	 {
	 	numberParts[1] = '';
	 }

	 //Rückgabe, wenn keine PRECISION angegeben
	 if(typeof PRECISION == 'undefined' || parseInt(PRECISION) < 1)
	 {
	 	//Wenn kein Nachkomma-Anteil vorhanden
	 	if(numberParts[1] == '')
	 	{
	 		DEC_POINT = '';
	 	}

	 	return INT_PART += DEC_POINT + numberParts[1];
	 }



	 //Nachkomma-Anteil ist größer als PRECISION => runden und Rückgabe
	 if(numberParts[1].length > PRECISION)
	 {
	 	numberParts[1] = numberParts[1].substr(0, PRECISION);
	 	return INT_PART += DEC_POINT + numberParts[1];
	 }
	 //Nachkomma-Anteil ist kleiner/gleich als PRECISION => ggf. mit Nullen auffüllen
	 else
	 {
	 	var CharsToFill = PRECISION-numberParts[1].length;
	 	for(i = 0; i < CharsToFill; i ++)
	 	{
	 		numberParts[1] += 0;
	 	}

	 	return INT_PART += DEC_POINT + numberParts[1];
	 }

	 return NUMMER;
}




/**
 * Temp. Funktion für PopUp mit Klimawert-Grenze, einzige alte PopUp-Fkt.
 */
function showfinfoEnergieausweis(mandant)
{
	window.open('templates/'+mandant+'/popup_info_energieausweis.php','',config='height=270,width=500,left=202,top=223,toolbar=no,scrollbars=no')
	return false;
}


