var online = 0;	// 1 = online, 0 = ej online
function showAlertMessage( message ) {
	alert( message );
}

// Används vid utveckling. Meddelandevisningen bör stängas av online genom att sätta variabeln online till 1
function showErrorReport( errorObject, message ) {
	mes = "Fel i programkoden.\n";
	mes += "Anteckna nedanstående och skicka till oss med hjälp av formuläret som du hittar\nlängst ner till höger på sidan för att få hjälp med att lösa problemet.\n\n";
	mes += message + "\n";
	
	if( errorObject.constructor != undefined ) mes += "errorObject.constructor: " + errorObject.constructor + "\n";
	if( errorObject.name != undefined ) mes += "errorObject.name: " + errorObject.name + "\n";
	if( errorObject.number != undefined ) mes += "errorObject.number: " + errorObject.number + "\n";
	if( errorObject.message != undefined ) mes += "errorObject.message: " + errorObject.message + "\n";
	if( errorObject.filename != undefined ) mes += "errorObject.filename: " + errorObject.filename + "\n";
	if( errorObject.lineNumber != undefined ) mes += "errorObject.lineNumber: " + errorObject.lineNumber + "\n";
	if( errorObject.description != undefined ) mes += "errorObject.description: " + errorObject.description + "\n";

	if( online != 1 ) showAlertMessage( mes );
}

// Skapar ett Error objekt. Lämplig att användas när man vill "kasta" en Undantag. Värdet i message blir meddelandet i Error objektet
function createErrorObject( message ) { return new Error( message ); }

function changePic( picelementname, picname ) {
	path = "buttons/";
	if( document.images ) {
		document.images[picelementname].src = path + picname;
	}
}

function changeImage( path, picelementname, picname ) {
	if( document.images ) {
		document.images[picelementname].src = path + picname;
	}
}

// Funktion som anv&auml;nds f&ouml;r att h&aring;lla utvalda sidor i frameset
function holdinFrame() { if( top.location == self.location ) { top.location = "../index.php"; } }

// Funktion som anpassar f&ouml;nstrets storlek till uppl&ouml;sningen 1024X728. Anv&auml;nds vid utvecklingen av webbplatsen
function customizeWindowSize() {
// 	if(window.screen) {
// 		width=1024; height=768;
// 		if(  ( screen.availWidth >= width || screen.availHeight >= height ) ) {
// 			top.resizeTo( width, height ); top.moveTo( ( screen.availWidth/2 )-width/2, (screen.availHeight/2)-height/2 );
// 		}
// 		else { top.resizeTo( screen.availWidth, screen.availHeight ); top.moveTo( 0, 0 ); }
// 	}
}

// Kontrollerar om det angivna värdet är ett heltal
function validateInteger( theValue ) { return /^-?\d+$/.test( theValue ); }

// Konverterar kommatecken i theValue till punkter och returnerar det nya värdet
function convertCommasToDots( theValue ) { theValue = theValue.replace( ",", "." ); return theValue; }

// Kontrollerar om det angivna värdet är ett giltigt tal (decimaltal är giltiga)
function validateNumber( theValue ) { theValue = convertCommasToDots( theValue ); return !isNaN( theValue ); }

// Validerar e-post adress
function validateEmail( email ) { return /^[\w\.\-]+@[\w\.\-]+\.\w{2,}$/.test( email ); }

// Kontrollerar om det angivna datumet är ett giltigt datum i formatet ÅÅÅÅ-MM-DD
function validateDate( datestr ) {
	re = /^\d\d\d\d-\d\d-\d\d$/;
	return ( re.test( datestr ) && ( datestr != "0000-00-00" ) );
}

// Kontrollerar om det  datumet är ett giltigt datum i formatet ÅÅ-MM-DD
function validateDate2( datestr ) {
	re = /^d\d-\d\d-\d\d$/;
	return ( re.test( datestr ) && ( datestr != "00-00-00" ) );
}

// Funktion som öppnar ett nytt fönster med angiven url och angiven bredd+50, angiven höjd+50
function openwin( url, width, height ) {
	width += 50; height += 50;
	if( ( width > screen.availWidth ) ) { width = screen.availWidth; }
	y = (screen.availHeight / 2) - (height / 2); x = (screen.availWidth / 2) - (width / 2);
	if( window.popup_window && !window.popup_window.closed ) { window.popup_window.close(); }
	popup_window = window.open(url,'','width='+width+',height='+height+',resizable=yes,menubar=no,' + 'scrollbars=yes,status=no,toolbar=no,screenX='+x+',screenY='+'y'+',left='+x+',top='+y);
	popup_window.focus();
}

// Funktion som skapar ett REQUEST objekt
function createRequest() {
	var newrequest = null;
	try {
		newrequest = new XMLHttpRequest();
	}
	catch (trymicrosoft) {
		try {
			newrequest = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (othermicrosoft) {
			try {
				newrequest = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (failed) {
				newrequest = null;
			}
		}
	}
	if ( newrequest == null) { alert("Ett fel upsptod på sidan.\nVissa funktioner kanske inte fungerar som det ska." ); }
	return newrequest;
}

// Start DOM funktioner som är användbara

// Funktion som laddar valfri fil i valfritt SPAN el. DIV element av sidan
function getPage( filnamn, elementname, paramurl ) {
	getPage2( createRequest(), filnamn, elementname, paramurl );
}

// Funktion som laddar valfri fil i valfritt SPAN el. DIV element av sidan
function getPage2( requestobj, filnamn, elementname, paramurl ) {
	var url = filnamn + "?" + paramurl + "&dummy=" + new Date().getTime();
	requestobj.open("POST", url, true);
	requestobj.onreadystatechange = function showFile() {
		if( requestobj.readyState == 4 ) {
			if( requestobj.status == 200 ) {
				var getpageresponse = requestobj.responseText;
				updateElement( elementname, getpageresponse );
			}
			else {
				updateElement( elementname, $( elementname ).innerHTML + "Det uppstod ett fel när den efterfrågade filen skulle laddas in.<BR>Felkod: " + requestobj.status );
			}
		}
		else {
            updateElement( elementname, $( elementname ).innerHTML + "<IMG SRC=pics/loading.gif BORDER=0 ALIGN=BOTTOM STYLE=\"text-align:bottom;\"> Laddar... Var god v&auml;nta..." ); 
		}
	}
	requestobj.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );
	requestobj.send( paramurl );
}

// Funktion som laddar valfri fil i valfritt SPAN el. DIV element av sidan
function getPage3( requestobj, filnamn, messageelementname, elementname, paramurl, loadingpicpath, loadingmessage ) {
//	showAlertMessage( paramurl );
	loadingmessage = loadingmessage == "" ? "Laddar... Var god v&auml;nta..." : loadingmessage;
	var url = filnamn + "?" + paramurl + "&dummy=" + new Date().getTime();
	requestobj.open("POST", url, true);
	requestobj.onreadystatechange = function showFile() {
		if( requestobj.readyState == 4 ) {
			if( requestobj.status == 200 ) {
				var getpageresponse = requestobj.responseText;
				updateElement( elementname, getpageresponse );
				emptyElement( messageelementname );
			}
			else {
				updateElement( messageelementname, "Det uppstod ett fel när den efterfrågade filen " + filnamn + " skulle laddas in.<BR>Felkod: " + requestobj.status );
			}
		}
		else {
			updateElement( messageelementname, 
									"<IMG SRC=" + loadingpicpath + "pics/loading.gif WIDTH=15 HEIGHT=15 BORDER=0 ALIGN=ABSMIDDLE> " + loadingmessage ); 
		}
	}
	requestobj.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );
	requestobj.send( paramurl );
}

function updateElement( elementname, text ) {
//	alert( text );
	try {
		if( $( elementname ) != undefined && $( elementname ) != null ) $( elementname ).update( text );
	}
	catch( e ) {
		message = "Feltyp:" + e.name + "\nMöjlig orsak: Elementet \"" + elementname + "\" existerar inte." +
						"\nDetta felmeddelande kommer från funktionen \"updateElement()\" i filen \"shared.php\"";
		showErrorReport( e, message );
	}
}

function emptyElement( elementname ) {
	try {
		if( $( elementname ) != undefined && $( elementname ) != null ) $( elementname ).update();
	}
	catch( e ) {
		message = "Feltyp:" + e.name + "\nMöjlig orsak: Elementet \"" + elementname + "\" existerar inte." +
						"\nDetta felmeddelande kommer från funktionen \"emptyElement()\" i filen \"shared.php\"";
		showErrorReport( e, message );
	}
}

function removeElement( elementname ) {
	try {
		if( $( elementname ) != undefined && $( elementname ) != null ) $( elementname ).remove();
	}
	catch( e ) {
		message = "Feltyp:" + e.name + "\nMöjlig orsak: Elementet \"" + elementname + "\" existerar inte." +
						"\nDetta felmeddelande kommer från funktionen \"removeElement()\" i filen \"shared.php\"";
		showErrorReport( e, message );
	}
}

function hide_showElement( elementname ) {
	try {
		$( elementname ).visible() == true ? $( elementname ).hide() : $( elementname ).show();
	}
	catch( e ) {
		message = "Feltyp:" + e.name + "\nMöjlig orsak: Elementet \"" + elementname + "\" existerar inte eller har fel typ." + 
						"\nDetta felmeddelande kommer från funktionen \"hide_showElement()\" i filen \"shared.php\"";
		showErrorReport( e, message );
	}
}

function selectField( fieldid ) {	// Markerar innehåller i fältet med ID:t fieldid
	try { $( fieldid ).select(); }
	catch( e ) {
		message = "Feltyp:" + e.name + "\nMöjlig orsak: Elementet \"" + elementname + "\" existerar inte, har fel typ eller stödjer inte funktionen select()." + 
						"\nDetta felmeddelande kommer från funktionen \"selectField()\" i filen \"shared.php\"";
		showErrorReport( e, message );
	}
}

// Slut DOM funktioner som är användbara

// Funktion som uppdaterar antal användare och antal inloggade användare i sidans bottendel
function updateUserStats() {
//	elementname = "usercountspot";
//	node = $( elementname );
//	if( node != undefined && node != null ) {
//		updateElement( elementname, new Ajax.PeriodicalUpdater( elementname, 'getuserstats.php?optype=1', { method: 'post', frequency: 10, decay: 2 } ) );
//	}

//	elementname = "loggedinusercountspot";
//	node = $( elementname );
//	if( node != undefined && node != null ) {
//		updateElement( elementname, new Ajax.PeriodicalUpdater( elementname, 'getuserstats.php?optype=2', { method: 'post', frequency: 10, decay: 2 } ) );
//	}
}


// Funktion som loggar ut när användaren stänger av webbläsaren
function logout() {
	showAlertMessage( "Loggar ut" );
	openwin( "logout2.php", 150, 150 );
}



