/************************************************************************************
* Modul: 		tools.js															*
* Autor:		Matthias Zöllner, agentur makz, www.makz.de							*
************************************************************************************/

/* Globale Constanten/Variablen.
   Pseudo-Constanten, da echte Constanten erst ab JS v1.5 unterstützt werden.
************************************************************************************/
var SITE_ROOT_URL_LOCAL = "http://andromeda/projekte/berliner-revision/";
var SITE_ROOT_URL_WEB1	= "http://www.berlinerrevision.de/";
var SITE_ROOT_URL_WEB2	= "http://www.berliner-revisions-ag.de/";

var URL_PRINT_PAGE	= "_system/print-page.php";
var URL_SEND_PAGE	= "_system/send-page.php";

/* Initialisierung der Laufzeitumgebung.
   Der aktuelle URL-Prefix steht dann in der Constanten "SITE_ROOT_URL".
************************************************************************************/
var sUrl = window.location.href;								// Aktueller URL.
if(sUrl.indexOf(SITE_ROOT_URL_LOCAL) >= 0){		
	var SITE_ROOT_URL = SITE_ROOT_URL_LOCAL;					// Site läuft im localen Modus.
}
else if(sUrl.indexOf(SITE_ROOT_URL_WEB1) >= 0 || sUrl.indexOf(SITE_ROOT_URL_WEB2) >= 0){
	var SITE_ROOT_URL = SITE_ROOT_URL_WEB1;						// Site läuft im Web.
}

/* Interne Functionen.
************************************************************************************/

/************************************************************************************
* Funktion: 	ffnCheckFindInput													*
* Parameter:	String																*
* Rückgabe:		True/False															*	
*																					*
* Beschreibung: Die Funktion testet ob das Eingabefelld zum Suchen "" oder 			*
*				den Dummie "Suchwort" enthält. Dann wird "False" zurückgegeben und	*
*				das Submit abgebrochen und zur eigentlichen Suchen-Seite gesprungen,*
*				sonst nach "True" ausgeführt.										*
************************************************************************************/
function ffnCheckFindInput(){
	var iMinLength 	= 2;
	var sInput 		= document.frmFindQuick.txtSearchString.value.toLowerCase();
	var sPage		= document.frmFindQuick.txtSearchPage.value.toLowerCase();
	var sExample	= document.frmFindQuick.txtSearchExample.value.toLowerCase();
	sInput = sfnTrim(sInput);

	/*
	if( sInput == sExample || sInput.length <= iMinLength ) {
		self.location = sPage;
		return false;
	} else {
		return true;
	}
	*/
}

/************************************************************************************
* Funktion: 	sfnTrim																*
* Parameter:	String																*
* Rückgabe:		bereinigter String													*	
*																					*
* Beschreibung: Die Funktion entfernt alle führenden, abschließenden 				*
*				und mehrfachen Leerzeichen.											*
*																					*
* Quelle:		http://www.breakingpar.com/											*
*				bkp/home.nsf/Doc!OpenNavigator&U=87256B14007C5C6A87256AFB0013C722	*
************************************************************************************/
function sfnTrim(inputString){
	// Removes leading and trailing spaces from the passed string. Also removes
	// consecutive spaces and replaces it with one space. If something besides
	// a string is passed in (null, custom object, etc.) then return the input.
	if(typeof inputString != "string"){
		return inputString;
	}

	var retValue = inputString;
	var ch = retValue.substring(0, 1);
	
	while (ch == " ") { // Check for spaces at the beginning of the string
		retValue = retValue.substring(1, retValue.length);
		ch = retValue.substring(0, 1);
	}

	ch = retValue.substring(retValue.length-1, retValue.length);

	while (ch == " ") { // Check for spaces at the end of the string
		retValue = retValue.substring(0, retValue.length-1);
		ch = retValue.substring(retValue.length-1, retValue.length);
	}

	while (retValue.indexOf("  ") != -1) { // Note that there are two spaces in the string - look for multiple spaces within the string
		retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); // Again, there are two spaces in each of the strings
	}

	return retValue; // Return the trimmed string back to the user
	
} // Ends the "trim" function

/************************************************************************************
* Funktion: 	ffnOpenPrintPage													*
* Parameter:	aktuelle Seiten-ID													*
* Rückgabe:		False																*	
*																					*
* Beschreibung: Die Funktion öffnet ein neues Fenster mit der Druckansicht			*
*				der Seite. Wenn erfolgreich, gibt sie ein False zurück und stoppt	*
*				damit die HTML-alternative Fensteröffnung des Links.				*
************************************************************************************/
function ffnOpenPrintPage(sPageID){
	var sPrintUrl = "";											// URL der Druckseite.
	var sWinParam = "";											// Parameterfeld für "window.open".
	
	sPrintUrl += SITE_ROOT_URL;									// URL der Druckseite mit Seiten-ID.
	sPrintUrl += URL_PRINT_PAGE;
	sPrintUrl += "?pageid=" + sPageID;
	
	sWinParam += "height=400,";									// Parameterfeld des Windows.
	sWinParam += "width=500,";
	sWinParam += "top=1,";
	sWinParam += "left=1,";
	sWinParam += "menubar=yes,";
	sWinParam += "toolbar=no,";
	sWinParam += "location=no,";
	sWinParam += "status=no,";
	sWinParam += "resizable=yes,";
	sWinParam += "scrollbars=yes";
	
	var oWin = window.open(sPrintUrl, "PrintPage", sWinParam);	// Neues Fenster öffnen.
	oWin.focus();												// Fenster in den Vordergrund.
	return false;												// Rückgabe von false; Abbruch des HTML-Links.
	
} // ffnOpenPrintPage

/************************************************************************************
* Funktion: 	ffnOpenSendPage														*
* Parameter:	aktuelle Seiten-ID													*
* Rückgabe:		False																*	
*																					*
* Beschreibung: Die Funktion öffnet ein neues Fenster zum Versand der Seite.		*
*				Wenn erfolgreich, gibt sie ein False zurück und stoppt				*
*				damit die HTML-alternative Fensteröffnung des Links.				*
************************************************************************************/
function ffnOpenSendPage(sPageID){
	var sSendUrl = "";											// URL der Sende-Seite.
	var sWinParam = "";											// Parameterfeld für "window.open".
	
	sSendUrl  += SITE_ROOT_URL;									// URL der Sende-Seite mit Seiten-ID.
	sSendUrl  += URL_SEND_PAGE;
	sSendUrl  += "?pageid=" + sPageID;
	
	sWinParam += "height=400,";									// Parameterfeld des Windows.
	sWinParam += "width=500,";
	sWinParam += "top=1,";
	sWinParam += "left=1,";
	sWinParam += "menubar=yes,";
	sWinParam += "toolbar=no,";
	sWinParam += "location=no,";
	sWinParam += "status=no,";
	sWinParam += "resizable=yes,";
	sWinParam += "scrollbars=yes";
	
	var oWin = window.open(sSendUrl, "SendPage", sWinParam);	// Neues Fenster öffnen.
	oWin.focus();												// Fenster in den Vordergrund.
	return false;												// Rückgabe von false; Abbruch des HTML-Links.
	
} // ffnOpenSendPage

/************************************************************************************
* Funktion: 	fnWritePrintButton													*
* Parameter:	---																	*
* Rückgabe:		---																	*	
*																					*
* Beschreibung: Die Funktion schreibt einen <form>-Button							*
* 				zum Drucken und einen zum Schliessen.								*
*																					*
*				Arbeitet zusammen mit der Funktion "fnPrintPage".					*
************************************************************************************/
function fnWritePrintButton(){
	var fCanPrint = false;
	
	// Gleiche Abfragekonstruktion wie in 'fnPrintPage'!
	if(document.all && navigator.appVersion.substring(22, 23) == 4) {
		fCanPrint = true;
	}
	else if(window.print){
		fCanPrint = true;
	}
	else if(document.all){
		fCanPrint = true;
	}
	else{
		fCanPrint = false;
	}

	document.writeln('<div class="formprint">');
	document.writeln('<form>');
	// Kann der Browser nicht drucken, ...
	if(fCanPrint == true){
		document.writeln('<input type="button" value=" Drucken  " title="Startet den Ausdruck dieser Seite." name="cmdPrint" onClick="fnPrintPage()" />&nbsp;');
	}
	// ...wird wenigstens der Close-Button angezeigt.
	document.writeln('<input type="button" value="Schliessen" title="Schliesst diese Seite wieder." name="cmdClose" onClick="self.close()" />');
	document.writeln('</form>');
	document.writeln('</div>');
		
} //fnWritePrintButton

/************************************************************************************
* Funktion: 	fnPrintPage															*
* Parameter:	False (Nur benötigt, bei Verwendung als Link						*
* Rückgabe:		---																	*	
*																					*
* Beschreibung:	Ruft die Browser-Druckfunktion (Dialogbox) auf.						*
*																					*
*				Der MS Internet Explorer 5 unter Macintosh 							*
*				und Opera 5.12 interpretieren diese Methode nicht.					*
*																					*
*				Für den Internet Explorer 4.x gibt es einen Workaround, 			*
*				um das Ausdrucken mit JavaScript anzustoßen. Dazu muß				*
*				ein ActiveX-Control eingebunden werden.								*
************************************************************************************/
function fnPrintPage(){

	if(document.all && navigator.appVersion.substring(22, 23) == 4) {
		self.focus();
 
		var OLECMDID_PRINT = 6;
		var OLECMDEXECOPT_DONTPROMPTUSER = 2;
		var OLECMDEXECOPT_PROMPTUSER = 1;
		var WebBrowser = '<object id="WebBrowser1" width="0" height="0" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></object>';
		document.body.insertAdjacentHTML('beforeEnd',WebBrowser);
		WebBrowser1.ExecWB(OLECMDID_PRINT,OLECMDEXECOPT_DONTPROMPTUSER);
		WebBrowser1.outerHTML = '';
	}
	else if(window.print){
		self.print();
	}
	else if(document.all){
		self.print;
	}
	else{
		//alert('Bitte drucken Sie diese Seite über den ensprechenden Menübefehl aus.');
	}
	
	return false;
	
} // fnPrintPage

/************************************************************************************
* Funktion: 	ffnNewsletterSignIn													*
* Parameter:	False (Nur benötigt, bei Verwendung als Link						*
* Rückgabe:		---																	*	
*																					*
* Beschreibung:	Ruft die Anmeldung für den Newsletter auf.							*
************************************************************************************/
function ffnNewsletterSignIn(){

	var sUrl = "http://www.berlinerrevision.de/info/?id=874w2&ac=si";
	sUrl = sUrl + "&re=" + window.location;
	var oWin = window.open(sUrl, "neslettersignin", "height=480,width=600,top=1,left=1,menubar=no,toolbar=no,location=no,status=no,resizable=yes,scrollbars=no");
	oWin.focus();
	return false;
		
} // ffnNewsletterSignIn



