function showPopup(pCode, pClass, pEffect) {
	if(!$(".popupContainer."+pClass).length) {
		$("body").append('<div class="popupContainer '+pClass+'"><div class="popupClose"></div><div class="popupBackground '+pClass+'"></div><div class="popup '+pClass+'">'+pCode+'</div></div>');
	}
	if(pEffect) { $(".popupContainer."+pClass).fadeIn(); }
	else { $(".popupContainer."+pClass).show(); }
	$('.popupBackground, .popupClose').bind('click', function() {
		hidePopup(pClass, true);
	});
}

function hidePopup(pClass, pEffect) {
	if(pEffect) { $(".popupContainer").fadeOut(); }
	else { $(".popupContainer").hide(); }
	$(".popupContainer").remove();
}

function showSignin() {
    location.hash = "#signin";
	hidePopup('forgotPasswordPopup', false);
   	showPopup('<form action="/access/login.php" method="POST"><label for="username">Username</label><input type="text" name="username" id="username"/> <br/><label for="password">Password</label><input type="password" name="password" id="password"/> <br/><div class="submitButtonHolder"><div class="forgetpassword"><a href="#" onclick="return forgotPassword();">Forget your password?</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" checked="" name="remember" id="remember" ><label for="remember">Remember me</label></div><input type="submit" value="Sign in" name="submit" class="abutton"/></div><input type="hidden" name="action" value="signup"/></form><script>$(function(){$(\'input\').keydown(function(e){ if (e.keyCode == 13) { $(\':submit\').click(); return false; } }); });</script>', 'signinPopup');
    if ($("#username").val() != "" && $("#password").val() == "") {
        $("#password").focus();
    }
    else {
        $("#username").focus();
    }
    return false;
}

function hideSignin() {
    location.hash = "";
    hidePopup('signin');
    return false;
}

function forgotPassword() {
    location.hash = "#forgot";
    hidePopup('signinPopup', false);
	showPopup('<form action="/access/reset.php" method="POST"><label for="forgotEmail">Email</label><input type="text" name="email" id="forgotEmail"><br/><br/><div style="text-align: center;">or</div><br/><label for="forgotUsername">Username</label><input type="text" name="username" id="forgotUsername"><br/><div class="submitButtonHolder"><input type="submit" value="Send confirmation" class="abutton"/><div class="text"><a href="#" onclick="return showSignin();">&larr; Go back</a></div></div></form><script>$(function(){$(\'input\').keydown(function(e){ if (e.keyCode == 13) { $(\':submit\').click(); return false; } }); });</script>', 'forgotPasswordPopup');
    return false;
}


function signupWithEmail(){
	email = $('input#email').val();
	if (email == 'Email Address') {
		window.location = "/signup";
		return false;
	} else {
		window.location = "/signup?email="+email;
		return false;
	}
}

var active_color = '#000';
// Colour of user provided text
var inactive_color = '#ccc';
// Colour of default text
$(document).ready(function() {
    var hash = location.hash;
    if (hash == "#signin") {
        showSignin();
    }
    if (hash == "#forgot") {
        forgotPassword();
    }

    $("#sform").validate({
        rules: {
            passc: {
                equalTo: "#spass"
            }
        }
    });
    $("input.default-value").css("color", inactive_color);
    var default_values = new Array();
    $("input.default-value").focus(function() {
        if (!default_values[this.id]) {
            default_values[this.id] = this.value;
        }
        if (this.value == default_values[this.id]) {
            this.value = '';
            this.style.color = active_color;
        }
        $(this).blur(function() {
            if (this.value == '') {
                this.style.color = inactive_color;
                this.value = default_values[this.id];
            }
        });
    });
    $("a[title=submit]").click(function() {
        $(this).parents("form").submit();
		return false;
    });

	$(document).keypress(function(e) { 
        if(e.which == 27) {	
		    hideSignin();
			hidePopup('forgotPasswordPopup', true);
        } 
    });
});

function utf8_encode (argString) {
    // http://kevin.vanzonneveld.net
    // +   original by: Webtoolkit.info (http://www.webtoolkit.info/)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: sowberry
    // +    tweaked by: Jack
    // +   bugfixed by: Onno Marsman
    // +   improved by: Yves Sucaet
    // +   bugfixed by: Onno Marsman
    // +   bugfixed by: Ulrich
    // +   bugfixed by: Rafal Kukawski
    // *     example 1: utf8_encode('Kevin van Zonneveld');
    // *     returns 1: 'Kevin van Zonneveld'

    if (argString === null || typeof argString === "undefined") {
        return "";
    }

    var string = (argString + ''); // .replace(/\r\n/g, "\n").replace(/\r/g, "\n");
    var utftext = "",
        start, end, stringl = 0;

    start = end = 0;
    stringl = string.length;
    for (var n = 0; n < stringl; n++) {
        var c1 = string.charCodeAt(n);
        var enc = null;

        if (c1 < 128) {
            end++;
        } else if (c1 > 127 && c1 < 2048) {
            enc = String.fromCharCode((c1 >> 6) | 192) + String.fromCharCode((c1 & 63) | 128);
        } else {
            enc = String.fromCharCode((c1 >> 12) | 224) + String.fromCharCode(((c1 >> 6) & 63) | 128) + String.fromCharCode((c1 & 63) | 128);
        }
        if (enc !== null) {
            if (end > start) {
                utftext += string.slice(start, end);
            }
            utftext += enc;
            start = end = n + 1;
        }
    }

    if (end > start) {
        utftext += string.slice(start, stringl);
    }

    return utftext;
}

