/**
 * @author Jan
 */

var globalUserID = "";
var globalSession = "";
var globalText = "";
var slideDown = true;

var reg = new RegExp('[0-9]');

/**
 * setHTMLElement() sets a HTML-Element identified by ID with
 * given value and classname
 * @param {Object} idname id of HTML-Elemnt
 * @param {Object} val Value to set
 * @param {Object} classname Class to set
 */
function setHTMLElement(idname, val, classname) {
	document.getElementById(idname).innerHTML = val;
	document.getElementById(idname).className = classname;
}


/*######-- Formular-Meldungen --######*/
/**
 * setSuccess() sets an Success-Msg into a specified HTML-Element
 * @param {Object} idname id of HTML-Element
 */
function setSuccess(idname) {
	var imgsrc = "<img src='./images/ico_success.gif'>&nbsp;";
	var msg = "Alles in Ordnung";
	var success = msg;
	setHTMLElement(idname, success, "success");
}

/**
 * setError() sets an Error-Msg into a specified HTML-Element
 * @param {Object} idname id of HTML-Element
 * @param {Object} msg Error Message
 */
function setError(idname, msg) {

	var imgsrc = "<img src='./images/ico_error.gif'>&nbsp;";
	var error = msg;
	setHTMLElement(idname, error, "error");
}

/**
 * trim() strip whitespace from the beginning and end of a string
 * @param {Object} str String
 */
function trim(str) {
	return (str.replace(/\s+$/,"").replace(/^\s+/,""));
}

function showRegister() {
	document.getElementById("wsRegisterForm").className = '';
	document.getElementById("wsLoginForm").className = 'noDisplay';
	document.getElementById("wsManual").className = 'noDisplay';
}

function closeRegister() {
	document.getElementById("wsRegisterForm").className = 'noDisplay';
}

function showManual() {
	document.getElementById("wsManual").className = '';
	document.getElementById("wsRegisterForm").className = 'noDisplay';
	document.getElementById("wsLoginForm").className = 'noDisplay';
}

function closeManual() {
	document.getElementById("wsManual").className = 'noDisplay';
}

function showLogin() {
	document.getElementById("wsLoginForm").className = '';
	document.getElementById("wsRegisterForm").className = 'noDisplay';
	document.getElementById("wsManual").className = 'noDisplay';
}

function insertChat(_sessionID, _tickerID) {
	var _text = document.getElementById("wsChatText").value;
	globalText = _text;
	globalChatInsert = 1;
	var _data = "text="+encodeURIComponent(_text);
	_data += "&sid="+encodeURIComponent(_sessionID);
	_data += "&tid="+encodeURIComponent(_tickerID);
	httpRequest("POST","./warsteiner/insertChat.php",true,handleInsertChat,_data);
}

function handleInsertChat() {

	if(request.readyState == 4) {
    	if(request.status == 200) {
			var response = request.responseXML;
			var stat = response.getElementsByTagName("status")[0].firstChild.data;
			var _text = response.getElementsByTagName("text")[0].firstChild.data;
			var username = response.getElementsByTagName("username")[0].firstChild.data;
			//alert(stat);
			if(stat == 1 && globalText != "") {
				document.getElementById("wsChatText").value = "";
				var n = document.createElement("div");
				n.className = "wsChatEntry";
				n.innerHTML = "" +
   					"<div class='wsChatText'>Ihr Kommentar wird in Kürze angezeigt</div>";
				//document.getElementById("wsChat").insertBefore(n,document.getElementById("wsChat").firstChild);
				document.getElementById("wsMyChat").insertBefore(n,null);
			}
			if(stat == 2) {
				document.getElementById("wsChatText").value = "";
				var n = document.createTextNode("Der Chat ist momentan deaktiviert!");
				document.getElementById("wsChat").insertBefore(n,document.getElementById("wsChat").firstChild);
			}
		}
	}
}

function closeLogin(_sessionID) {
	document.getElementById("wsLoginForm").className = 'noDisplay';
	globalSession = _sessionID;
	frames['lgFrame'].location.href = "./warsteiner/login.php?sessionID="+_sessionID;
	var _data = "sid="+encodeURIComponent(_sessionID);
	httpRequest("POST","./warsteiner/loginFinish.php",true,handleLoginFinish,_data);
}

function handleLoginFinish() {
	if(request.readyState == 4) {
    	if(request.status == 200) {
			var trenn = "'";
			var response = request.responseXML;
			var stat = response.getElementsByTagName("status")[0].firstChild.data;
			if(stat == 1) {
				var userID = response.getElementsByTagName("userid")[0].firstChild.data;
				globalUserID = userID;
				var user = response.getElementsByTagName("username")[0].firstChild.data;
				var hb = response.getElementsByTagName("hasBet")[0].firstChild.data;


				document.getElementById("wsUser").innerHTML = user;
				document.getElementById("ws_userwelcome").className = "";

				document.getElementById("ws_logreg").className = "noDisplay";

				document.getElementById("wsChatEntry").className = "";
				document.getElementById("wsChatText").value = "";

				if(hb=="1") {
					document.getElementById("wsBetWin").innerHTML = "Sie haben bereits gewettet";
					document.getElementById("wsBetMenu").className = "noDisplay";
				}
				else
					document.getElementById("wsBetMenu").className = "";
			}
		}
	}
}

function calculateWin(_tickerID,minute) {
	var bOne = document.getElementById("betOne").value;
	var bTwo = document.getElementById("betTwo").value;
	[1-6]
	var _data = "bOne="+encodeURIComponent(bOne);
	_data += "&bTwo="+encodeURIComponent(bTwo);
	_data += "&tid="+encodeURIComponent(_tickerID);
	_data += "&min="+encodeURIComponent(minute);
	if(bOne != "" && bTwo!="" && reg.test(bOne) && reg.test(bTwo) )
		httpRequest("POST","./warsteiner/calculateWin.php",true,handleCalculateWin,_data);
	else
		document.getElementById("wsBetWinValue").innerHTML = "";
}

function handleCalculateWin() {
	if(request.readyState == 4) {
    	if(request.status == 200) {

			var response = request.responseXML;
			var stat = response.getElementsByTagName("status")[0].firstChild.data;
			if(stat == 1) {
				var _value = response.getElementsByTagName("value")[0].firstChild.data;
				document.getElementById("wsBetWinValue").innerHTML = _value;
			}
		}
	}
}

function insertBet(_tickerID,minute,session) {
	var bOne = document.getElementById("betOne").value;
	var bTwo = document.getElementById("betTwo").value;
	var _data = "bOne="+encodeURIComponent(bOne);
	_data += "&bTwo="+encodeURIComponent(bTwo);
	_data += "&tid="+encodeURIComponent(_tickerID);
	_data += "&min="+encodeURIComponent(minute);
	_data += "&sid="+encodeURIComponent(session);
	if(bOne != "" && bTwo!="" && reg.test(bOne) && reg.test(bTwo) )
		httpRequest("POST","./warsteiner/insertBet.php",true,handleInsertBet,_data);
	else
		document.getElementById("wsBetWinValue").innerHTML = "";
}

function handleInsertBet() {
	if(request.readyState == 4) {
    	if(request.status == 200) {

			var response = request.responseXML;
			var stat = response.getElementsByTagName("status")[0].firstChild.data;
			if(stat == 1) {
				document.getElementById("betOne").value = "";
				document.getElementById("betTwo").value = "";
				document.getElementById("wsBetMenu").className = "noDisplay";
				document.getElementById("wsBetWin").innerHTML = "Tipp gespeichert!";
			}
		}
	}
}

function logOut(_sessionID) {
	var _data = "sid="+encodeURIComponent(_sessionID);
	httpRequest("POST","./warsteiner/logOut.php",true,handleLogout,_data);
}

function handleLogout() {
	if(request.readyState == 4) {
    	if(request.status == 200) {

			var response = request.responseXML;
			var stat = response.getElementsByTagName("status")[0].firstChild.data;
			if(stat == 1) {
				document.getElementById("ws_userwelcome").className = "noDisplay";
				document.getElementById("ws_logreg").className = "";
				document.getElementById("wsChatEntry").className = "noDisplay";
				document.getElementById("wsChatText").value = "";
				document.getElementById("wsBetMenu").className = "noDisplay";
				document.getElementById("ws_logreg").className = "";
				document.getElementById("wsBetWin").innerHTML = '&nbsp;Gewinn: <span id="wsBetWinValue">&nbsp;</span> Liter';
			}
		}
	}
}

function slideChat() {
	if(slideDown) {
		Effect.SlideUp('wsChatSlide');
		slideDown = false;
		document.getElementById("slidePic").innerHTML = '<img src="./img/slideDown.gif" border="0">';
	}
	else {
		Effect.SlideDown('wsChatSlide');
		slideDown = true;
		document.getElementById("slidePic").innerHTML = '<img src="./img/slideUp.gif" border="0">';
	}
}

/**
 * Array to check, if everything is filled out properly
 */
var completeArray = new Array("0","0","0","0","0","0","0","0");

/**
 * If checkAll was activated
 */
var checkAll_on = 0;

function checkForename(username) {
	if(checkAll_on == 1) {
		setHTMLElement("allstatus","","");
		checkAll_on = 0;
	}
	if(username.length==0) {
		setCompleteArray("status_forename", "0");
		setError("status_forename", "Name ungültig");
		return false;
	}
	else {
		setCompleteArray("status_forename", "1");
		setSuccess("status_forename");
		return true;
	}

}

function checkSurname(username) {
	if(checkAll_on == 1) {
		setHTMLElement("allstatus","","");
		checkAll_on = 0;
	}
	if(username.length==0) {
		setCompleteArray("status_surname", "0");
		setError("status_surname", "Name ungültig");
		return false;
	}
	else {
		setCompleteArray("status_surname", "1");
		setSuccess("status_surname");
		return true;
	}
}

function checkBirthday(username) {
//'/^\d{1,2}\.\d{1,2}\.\d{4}$/'
	var reg = /^(((0?[1-9]|[1-2][0-9]|3[0-1])\.((0?[1-9]|1[0-2])\.| ?[A-Za-z][a-zä][a-z]+\.? ?)(20)?[0-9]{2})|(20[0-9]{2}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]))|([a-zA-Z][a-z]{2,} ([1-9]|1[0-2]), ?(20)?[0-9]{2}))$/;

	if(checkAll_on == 1) {
		setHTMLElement("allstatus","","");
		checkAll_on = 0;
	}

	if(reg.test(username)){
		setCompleteArray("status_birthday", "1");
		setSuccess("status_birthday");
		return true;
	}
	else {
		setCompleteArray("status_birthday", "0");
		setError("status_birthday", "Datum ist nicht gültig");
		return false;
	}
}

/**
 * checkUser() checks if typed username is valid and unique
 * @param {Object} username typed Username
 */
function checkUser(username) {

	username = trim(username);

	if(checkAll_on == 1) {
		setHTMLElement("allstatus","","");
		checkAll_on = 0;
	}

	if(username.length==0) {
		setCompleteArray("status_username", "0");
		setError("status_username", "Name ungültig");
		return false;
	}
	else{
		if(username.length<3){
			setCompleteArray("status_username", "0");
			setError("status_username", "Minimum 3 Zeichen");
			return false;
		}
	}

	var _data = "username="+encodeURIComponent(username);
	httpRequest("POST","./checkUsername.php",true,handleUserResponse,_data);
}

/**
 * checkPass() checks if typed Password is valid
 * @param {Object} pass typed Password
 */
function checkPass(pass) {

	pass = trim(pass);

	if(checkAll_on == 1) {
		setHTMLElement("allstatus","","");
		checkAll_on = 0;
	}

	if(pass.length==0) {
		setCompleteArray("status_pass", "0");
		setError("status_pass", "Passwort ungültig");
		return false;
	}
	else{
		if(pass.length<5){
			setCompleteArray("status_pass", "0");
			setError("status_pass", "Minimum 5 Zeichen");
			return false;
		}
		else {
			setCompleteArray("status_pass", "1");
			setSuccess("status_pass");
			return true;
		}
	}
}

/**
 * checkPass2() checks if typed password is valid and matches the first password
 * @param {Object} pass typed Password
 */
function checkPass2(pass) {

	pass = trim(pass);

	if(checkAll_on == 1) {
		setHTMLElement("allstatus","","");
		checkAll_on = 0;
	}

	//first Password
	var passID = document.getElementById("passID").value;
	checkPass(passID);
	if(pass.length==0) {
		setCompleteArray("status_pass2", "0");
		setError("status_pass2", "Passwort ungültig");
		return false;
	}
	else{
		if(pass.length<5){
			setCompleteArray("status_pass2", "0");
			setError("status_pass2", "Minimum 5 Zeichen");
			return false;
		}
	}
	if(pass == passID){
		setCompleteArray("status_pass", "1");
		setCompleteArray("status_pass2", "1");
		setSuccess("status_pass");
		setSuccess("status_pass2");
		return true;
	}
	else {
		setCompleteArray("status_pass2", "0");
		setError("status_pass2", "Passwörter stimmen nicht überein");
		return false;
	}
}

/**
 * checkEmail() checks if typed E-Mail is a valid one
 * @param {Object} mail E-Mail-Address
 */
function checkEmail(mail) {

	//RegularExpression for correct E-Mail-Address
	var reg = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)'+
                   '(\\@)([a-zA-Z0-9\\-\\.]+)'+
                   '(\\.)([a-zA-Z]{2,4})$');

	if(checkAll_on == 1) {
		setHTMLElement("allstatus","","");
		checkAll_on = 0;
	}

	if(reg.test(mail)){
		setCompleteArray("status_email", "1");
		setSuccess("status_email");
		return true;
	}
	else {
		setCompleteArray("status_email", "0");
		setError("status_email", "E-Mail-Adresse ist nicht gültig");
		return false;
	}
}

function checkAGB() {

	if(checkAll_on == 1) {
		setHTMLElement("allstatus","","");
		checkAll_on = 0;
	}

	if(document.getElementById("agb").value == 1){
		setCompleteArray("status_agb", "1");
		return true;
	}
	else {
		setCompleteArray("status_agb", "0");
		return false;
	}
}

/**
 * checkAll checks if everything is filled out correctly
 */
function checkAll() {

	//checkAll activated
	checkAll_on=1

	for(var i = 0; i<completeArray.length; i++) {
		if(completeArray[i] != "1") {
			setError("allstatus", "Du hast das Formular nicht richtig ausgefüllt");
			return false;
		}
	}
	return true;
}

/**
 * setCompleteArray() sets completeArray to indicate if everything is filled out correct
 * @param {Object} idname name of filled form-element
 * @param {Object} error val Value (0 = Error, 1 = Correct)
 */
function setCompleteArray(idname, val) {
	switch(idname) {
		case "status_username": completeArray[0] = val; break;
		case "status_pass": completeArray[1] = val; break;
		case "status_pass2": completeArray[2] = val; break;
		case "status_email": completeArray[3] = val; break;
		case "status_forename": completeArray[4] = val; break;
		case "status_surname": completeArray[5] = val; break;
		case "status_birthday": completeArray[6] = val; break;
		case "status_agb": completeArray[7] = val; break;
	}
}

/**
 * speaks for itself
 */
function handleUserResponse() {
	//alert("ageag");
	if(request.readyState == 4) {
    	if(request.status == 200) {
			//alert("slfjf");
			var response = request.responseXML;
			var responseValue = response.getElementsByTagName("isuser")[0].firstChild.data;
			//alert(responseValue);
			if(responseValue == "0") {
				setCompleteArray("status_username", "1");
				setSuccess("status_username");
			}
			else {
				setCompleteArray("status_username", "0");
				setError("status_username", "Benutzername existiert bereits");
			}
		}
	}
}
