var color = 0;
var removeSession = 1;

var text = null;
var currentLang = null

$(function() {

	text = loadLanguageStrings();

	//display the Personal Calendar UI only if JS is enabled
	$("#pcUI").css("display", "block");

	
	$("input[id^='rc_']").click(replaceCalendar);

	$("#calendarLabel").click(
		function(event) {
			event.target.select();
		}
	);

	$("#loginInfoBtn").toggle(
		function() {
			$(".pcLoginForm ol").css("height", "210px");
			$(".pcRegisterForm ol").css("height", "210px");
			$("#loginInfoContent").show('fast');
		},
		
		function() {
			$("#loginInfoContent").hide('fast');
			$(".pcLoginForm ol").css("height", "100px");
			$(".pcRegisterForm ol").css("height", "100px");			
		}
	);


	//$("input[type=text]#loginemail").keyup(submitLoginForm);
	$("input[type=password]#loginpwd").keyup(submitLoginForm);

	//$("input[type=text]#registeremail").keyup(submitRegisterForm);
	$("input[type=password]#registerpwd").keyup(submitRegisterForm);

	$("input#loginBtn").click(login);

	$("input#registerBtn").click(register);

	$("input#lostPwBtn").click(getLostPassword);

	$("#pcTableTable").delegate(".loadCalendarBtn", "click",
		function(event) {
			loadCalendar(event.target.id);
		}
	);
	
	$("#pcTableTable").delegate(".delCalendarBtn", "click",
		function(event) {
			deleteCalendar(event.target.id);
		}
	);
	
	$("#pcTableTable").delegate(".emailLink", "click", sendEMailLink);

	$(".pcLRForm").each(
		function() {
			$(this).triggerHandler("submit");
			$(this).submit(submitForm);
		}
	);

	//adds calendar buttons to each item in the personal calendar
	$("span.calendarBtn").each( addCalendarBtn );

	//display/hide the personal calendar management panel	
	$("legend.pcManageBtn").click(
		function(event) {
			if($("fieldset.pcManagePanel").hasClass("close")) {
				$("#pcManageImage").attr("src", "img/grey_arr_up.gif");
				$("fieldset.pcManagePanel").removeClass("close");
				$("div.pcManagePanelContent").removeClass('hidden');
				$("div.pcManagePanelContent").show('fast');
				$.get('content/modifyPC.php', {type:"hide", h:"0"});
			}else {
				$("#pcManageImage").attr("src", "img/grey_arr_down.gif");
				$("fieldset.pcManagePanel").addClass("close");
				$("div.pcManagePanelContent").addClass('hidden');
				$("div.pcManagePanelContent").hide('fast');
				$.get('content/modifyPC.php', {type:"hide", h:"1"});
			}
		}
	);
	
	//toggles the login panel
	$("#pcLoginBtn").click(displayLoginPanel);
	
	//toggles the register panel
	$("#pcRegisterBtn").click(displayRegisterPanel);
	
	
	$("#pcHelpBtn").toggle(
		function() {
			$("#pcHelpBtn").addClass("active");
			$("#helpPanel").show(350);
		},
		
		function() {
			$("#helpPanel").hide(350);
			$("#pcHelpBtn").removeClass("active");
		}
	);
	
	$("#pcLostPwBtn").toggle(
		function() {
			$("#lostPwPanel").show('slow');
			$("#pcLostPwBtn").addClass('active');
		},
		
		function() {
			$("#lostPwPanel").hide('slow');
			$("#pcLostPwBtn").removeClass('active');
		}
	);
	
	$("#helpPanelTitleBar").click(
		function() {
			$("#pcHelpBtn").click();
		}
	);
	
	$("#lostPWTitleBar").click( 
		function() {
			$("#pcLostPwBtn").click();
		}
	);
	
	
	$("#pcLogoutBtn").click(
		function(event) {
			$.getJSON("content/pcData.php", {'type':'logout'}, logoutResponse);
			$("#pcLogoutBtn").css("display", "none");
		}
	);	

	$("#saveCalendarBtn").click(
		function() {
			var label = $("#calendarLabel").val();
			if(label != "") {
				$("#saveCalendarStatus").removeClass("error").html("");
				$.getJSON("content/pcData.php", {action:'save', lbl:label}, saveResponse);
			}else {
				$("#saveCalendarStatus").addClass("error").html(text.errorNoLabel);
			}
		}
	);
});

function replaceCalendar(event) {
	$.getJSON("content/pcData.php", {action:'save', saveType:'rc', cid:event.target.id.substring(3)}, replaceCalendarResponse);
}

function replaceCalendarResponse(data) {
	if(data.status == "ok") {
		var sp = document.createElement('SPAN');
		$(sp).addClass("success").html(text.successSaveChanges);
		$("#saveCalendarStatus").append($(sp));
		$(sp).fadeOut(3500, 0);
	}else if(data.status == "error") {
		alert("error : " + data.msg);
	}else if(data.status == "nl") {
		$("#saveCalendarStatus").addClass("error").html(text.nlError);
	}else {
		alert("unknown status : " + data.status);
	}
}

function sendEMailLink(event) {
	$.getJSON("content/pcData.php", {"type":"sendEMail", "cid":event.target.id},
		function(data) {
			if(data.status == "success") {
				$(event.target).attr("src", 'img/checkmark.gif');
				setTimeout(
					function() {
						$(event.target).hide('slow',
							function() {
								$(event.target).attr("src", 'img/email_link.png');
								$(event.target).show('slow');
							}
						);
					}, 2500);

			}else if(data.status == "error") {
				alert(data.msg);
			}		
		}
	);
}

function sendEMailLinkResponse(data) {

}

function addCalendarBtn(index, p) {
	$(p).toggle(add, remove);
	$(p).append('<img src="img/calendar_add.png" title="' + text.calendarBtnAlt + '" alt="' + text.calendarBtnAlt + '">');
	if($(p).hasClass('addedToPC')) {
		$(p).click();
	}
}

function displayLoginPanel(event) {
	$("#pcUserPanel").removeClass("pcRegisterForm");
	$("#pcUserPanel").addClass("pcLoginForm");

	$("#pcLoginBtn").addClass("active");
	$("#pcRegisterBtn").removeClass("active");

	$("#registerPanel").animate({opacity: "hide"}, 50,
		function() {
			$("#loginPanel").animate({opacity: "show"}, 50);
		}
	);

	$(".registerInfo").animate({opacity: "hide"}, 50,
		function() {
			$(".loginInfo").animate({opacity: "show"}, 50);
		}
	);
}

function displayRegisterPanel(event) {
	$("#pcUserPanel").addClass("pcRegisterForm");
	$("#pcUserPanel").removeClass("pcLoginForm");

	$("#pcRegisterBtn").addClass("active");
	$("#pcLoginBtn").removeClass("active");

	$("#loginPanel").animate({opacity: "hide"}, 50,
		function() {
			$("#registerPanel").animate({opacity: "show"}, 50);
		}
	);

	$(".loginInfo").animate({opacity: "hide"}, 50,
		function() {
			$(".registerInfo").animate({opacity: "show"}, 50);
		}
	);
}

function submitForm(event) {
	if($("#pcLoginBtn").hasClass("active")) {
		$("input#loginBtn").click();
	}else if($("#pcRegisterBtn").hasClass("active")) {
		$("input#registerBtn").click();
	}
	return false;					
}

function linkSentSuccessAnimation(img) {

}

function submitLoginForm(event) {
	if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {
		$("input#loginBtn").click();
	}
}

function submitRegisterForm(event) {
	if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {
		$("input#registerBtn").click();
	}
}

function saveResponse(data) {
	if(data.status == "ok") {
		if(data.type == "nc") {
			var sp = document.createElement('SPAN');
			$(sp).addClass("success").html(text.successSaveCalendar);
			$("#saveCalendarStatus").append($(sp));
			$(sp).fadeOut(3000, 0);
			$(".myPCTable").append("<tr><td align=\"left\"><a class=\"loadCalendarBtn\" id=\"" + data.cid + "\">" + data.label + "</a></td><td align=\"center\">" + data.date + "</td><td align=\"center\"><img class=\"delCalendarBtn\" src=\"img/bin.png\" id =\"" + data.cid + "\"></td><td align=\"center\"><img class=\"emailLink\" id=\"" + data.cid + "\" src=\"img/email_link.png\"></td></tr>");
			$("#currCalendarLabel").html(data.label);
		}else if(data.type == "rc") {
			$("#saveCalendarStatus").addClass("success").html(text.successReplaceCalendar.replace('[BEZEICHNUNG]', data.label)).fadeOut(3000);
		}
	}else if(data.status == "error") {
		alert("error : " + data.msg);
	}else if(data.status == "nl") {
		$("#saveCalendarStatus").addClass("error").html(text.nlError);
	}else if(data.status == "ni") {
		$("#saveCalendarStatus").addClass("error").html(text.niError);
	}else {
		alert("unknown status : " + data.status);
	}
}

function logoutResponse(data) {
	if(data.status == "ok") {
		window.location.reload();
	}else if(data.status == "error") {
		alert(data.msg);
	}
}

function deleteCalendar(id) {
	$.getJSON("content/pcData.php", {'action':'delete', 'cid':id},
		function (data) {
			if(data.status == "ok") {
				$("#myPCTableRow_" + id).remove();
				$("#manageCalendarStatus").addClass("success").html(text.successDeleteCalendar).fadeOut(3000);
			}
		}
	);
}


function loadCalendar(id) {
	$("#manageCalendarStatus").addClass("success").html(text.statusLoadCalendar);
	$.getJSON("content/pcData.php", {'action':'load', 'cid':id},
		function loadResponse(data) {
			if(data.status == "ok") {
				setTimeout('updateCalendarList()', 1500);
			}else {
				$("#manageCalendarStatus").removeClass("success").html("");
				if (data.status == "error") {
					$("#manageCalendarStatus").addClass("error").html("Fehler: " + data.msg);
				}else if(data.status == "cnf") {
					$("#manageCalendarStatus").addClass("error").html("Fehler: Ihr Kalender konnte nicht gefunden werden");
				}else {
					alert("unknown error. status : " + data.status);
				}
			}
		}
	);

}

function updateCalendarList() {
	$("#manageCalendarStatus").removeClass("success").html("");	
	window.location.reload()
}

function getLostPassword(event) {
	var error = 0;
	var data = new Array();
	
	var email = $("#lostpwemail").val();
	
	if(email != "") {
		$.getJSON('content/pcData.php?type=lostPW', {'email': email}, lostPwResponse);
	}else {
		$("#lostPwInfo").addClass("error").html(text.errorFieldEmpty);
	}	
}

function lostPwResponse(data) {
	if(data.status == "success") {
		$("#lostPwInfo").removeClass().html("");
		$("#lostPwInfo").addClass("success").css("font-size", "11px").html(text.successLostPW);
		setTimeout("hideLostPwPanel()", 3000);
	}else if(data.status == "enf") {
		$("#lostPwInfo").removeClass().html("");
		$("#lostPwInfo").addClass("error").html(text.errorLostPW);
	}else if(data.status == "error") {
		alert(data.msg);
	}
}

function hideLostPwPanel() {
	$("#pcLostPwBtn").click();
}

function login(event) {
	var error = 0;
	var data = new Array();
	
	$("#loginPanel input").not("[type=button]").each(
		function() {
			if(this.value == '') {
				error = 1;
			}else {
				data[this.name] = this.value;
			}
		}
	);
	
	if(error == 1) {
		$("#loginInfo").addClass("error").html(text.errorFieldEmpty);
	}else {
		$.getJSON('content/pcData.php?type=login', {'email': data.email, 'pwd': data.pwd}, loginResponse);
	}	

}

function register(event) {
	var error = 0;
	var data = new Array();
	
	$("#registerPanel input").not("[type=button]").each(
		function() {
			if(this.value == '') {
				error = 1;
			}else {
				data[this.name] = this.value;
			}
		}
	);
	
	if(error == 1) {
		$("#loginInfo").addClass("error").html(text.errorFieldEmpty);
	}else {
		$.getJSON('content/pcData.php?type=register', {'pwd': data.pwd, 'email': data.email}, registerResponse);
	}	
}

function loginResponse(data) {
	if(data.status == "success") {
		$("#loginInfo").addClass("success").html(text.successLogin);	
		setTimeout('hideLogin()', 1500);
		loadCalendarTable();
	}else if(data.status == "failed") {
		$("#loginInfo").addClass("error").html(text.errorLogin);
	}else if(data.status == "error") {
		alert("Fehler bei Login. Bitte kontaktieren Sie den Administrator.");
	
	}else {
		alert("unknown status : " + data.status);
	}
	
}

function loadCalendarTable() {
	$.getJSON('content/pcData.php?type=loadTable', {}, 
		function(data) {
			var calendars = data.calendars;
			var newTRs = "";
			for(var x = 0;x<calendars.length;x++) {
				var data = calendars[x];
				newTRs += "<tr><td align=\"left\"><a class=\"loadCalendarBtn\" id=\"" + data.cid + "\">" + data.label + "</a></td><td align=\"center\">" + data.date + "</td><td align=\"center\"><img class=\"delCalendarBtn\" src=\"img/bin.png\" id =\"" + data.cid + "\"></td><td align=\"center\"><img class=\"emailLink\" id=\"" + data.cid + "\" src=\"img/email_link.png\"></td></tr>";
			}
			$(".myPCTable").append(newTRs);
		}
	);
}

function registerResponse(data) {
	if(data.status == "ok") {
		$("#loginInfo").addClass("success").html(text.successRegister);	
		setTimeout('hideLogin()', 2500);
	}else if(data.status == "error" && data.msg == "uae") {
		$("#loginInfo").addClass("error").html(text.errorRegister);
	}else if(data.status == "error") {
		alert("Fehler bei Login. Bitte kontaktieren Sie den Administrator.\n" + data.msg);
	}else {
		alert("unknown status : " + data.status);
	}
}

function hideLogin() {
	$("div#pcLogin").hide('slow');
	$("div#pcLostPwBtn").hide('fast');
	$("div#pcForm").show('slow');
	$("#pcLogoutBtn").css("display", "inline");			
}


