// JavaScript Document 
// Version 1.1
$(document).ready(function() {
//    window.state = $("#body").attr("state");
//    switch (window.state) {
//        case "LoggedOut":
//            $("#community").addClass("notVisible");
//            $("#menuLoggedInUser").addClass("notVisible");
//            $("#menuLogin").text("login");
//            $("#menuLogin").click($showLogin);
//            break;
//        case "Home":
//            $("#menuLoggedInUser").removeClass("notVisible");
//            $("#menuLoggedInUser").text($.cookie("u.jumala.com"));
//            $("#menuLogin").text("logout");
//            $("#menuLogin").click($logout);
//            $("#menuLoggedInUser").click($userCard);
//            break;
//        case "LoginFailure":
//            $("#community").addClass("notVisible");
//            $("#menuLoggedInUser").addClass("notVisible");
//            $("#menuLogin").text("login");
//            $("#menuLogin").click($showLogin);
//            $showLogin();
//            break;
//        case "CreateUser":
//            $("#community").addClass("notVisible");
//            $("#menuLoggedInUser").addClass("notVisible");
//            $("#menuLogin").text("login");
//            $("#menuLogin").click($showLogin);
//            if (window.localStorage) {
//                window.localStorage.clear();
//            }
//            loadUserCreate($.cookie("oid.jumala.com"));
//            break;
//        case "UserCard":
//            $("#menuLoggedInUser").removeClass("notVisible");
//            $("#menuLoggedInUser").text($.cookie("u.jumala.com"));
//            $("#menuLogin").text("logout");
//            $("#menuLogin").click($logout);
//            $("#menuLoggedInUser").click($userCard);

//            if (window.localStorage) {
//                window.localStorage.setItem('u.jumala.com', $.cookie('u.jumala.com'));
//                window.localStorage.setItem('uid.jumala.com', $.cookie('uid.jumala.com'));
//                window.localStorage.setItem('us.jumala.com', $.cookie('us.jumala.com'));
//            }
//            $userCard();
//            break;
//        default:
//            break;
//    }

});
function loadLogin() {
    window.location = "https://" + window.location.hostname + "/Web/Login_https";
}
var setTopNav = function(idName) {
    $("#navTop a").each(function() { resetClass(this, idName); });
};
var setBottomNav = function(idName) {
    $("#navBottom a").each(function() { resetClass(this, idName); });
};
var resetClass = function(sender, idName) {
    if ($(sender).attr("id") === idName) {
        $(sender).attr("checked", true);
    }
    else {
        $(sender).attr("checked", false);
    }
};
function kDownloadClient() {
    window.location.href = "/files/Apps/AppInstall";
}
function setPage(sender) {
    var $thisObject = $(sender);
    var idName = $thisObject.attr("id");
    if ($thisObject.hasClass("topNav")) {
        if (idName === "community") return;
        $("#quickList").removeClass("notVisible");
        $("#navBottom").addClass("notVisible");
    }
    var newIdName;
    if ($thisObject.hasClass("quickNav")) {
        newIdName = idName.split("_")[1];
        $thisObject = $("#" + newIdName);
    }
    else {
        newIdName = idName;
    }
    if ($thisObject.hasClass("bottomNav")) {
        $("#navBottom").removeClass("notVisible");
        $("#quickList").addClass("notVisible");
        setBottomNav(newIdName);
        idName = "community";
    }
    setTopNav(idName);
}
//   SHOW LOGIN    *****************  //
var $showLogin = function() {
    var $thisObject = $("#loginFrame");
    var failedLogin = (window.state === "LoginFailure");
    if ($thisObject.length === 0) {
        $.ajax({
                url: "loginForm",
                dataType: "html",
                success: function(result) {
                    $('#main').html(result);
                    if (failedLogin) {
                        $("#loginError").removeClass("hide");
                        $("#errorBox").removeClass("hide");
                    }
                    return;
                }
            });
    }
    else {
        $thisObject.toggleClass("notVisible");
        if (failedLogin) {
            $("#loginError").removeClass("hide");
            $("#errorBox").removeClass("hide");
        }
        else {
            $("#loginError").addClass("hide");
            $("#errorBox").addClass("hide");
        }
    }

};
function loginToFB() {
    FB.login(function(response) {
        if (response.session) {
            // post to the server our Facebook connection, UID, Accesstoken
            $("#avatarImage").empty();
            $("#avatarImage").append("<img alt='facebook pic' src=" + "http://graph.facebook.com/" + response.session.uid + "/picture />");
            $("#fbUid").val(response.session.uid);
            $("#fbAuthToken").val(response.session.access_token);
            var XMLToSend = "<ConnectUserToFacebook uid='" + response.session.uid + "' authToken='" + response.session.access_token + "' />";
            $.ajax({
                dataType: 'xml',
                contentType: 'text/xml',
                type: 'PUT',
                processData: false,
                data: XMLToSend,
                url: "/Web/ConnectUserToFacebook/",
                success: function(data) {
                    $(data).find('CreateAlphaUserResponse').each(function() {
                        var sid = $(this).attr('SessionId');
                        var uid = $(this).attr('uid');
                        var auth = $(this).attr('auth');
                        var result = sid + "/r/n" + uid + "/r/n" + auth;
                        alert(result);
                    });
                },
                beforeSend: function(xhr) {
                    xhr.setRequestHeader('fb-uid', response.session.uid);
                    xhr.setRequestHeader('fb-authToken', response.session.access_token);
                }
            });
        } else {
            // user cancelled login
        }
    }, { perms: 'read_stream,publish_stream,offline_access,email,user_birthday,user_location,user_photos' });
}

//public profile

function commentFocus(cId, focusState) {

    var form = "#commentForm" + cId;
    var comment = "#comment" + cId;
    var avatarImage = "avatarImage" + cId;
    var commentText = $(comment).val();
    if (!commentText){
        if (focusState && focusState == "focus") {
            $(form).prepend('<img id="' + avatarImage + '" class="doubleBorder linkedImage left clear" width="28px" height="28px" src="http://s3.amazonaws.com/staging.jumala/jumala/items/v1/carlos.png">');
            $(comment).css('width', '222px');
        }
        else {
            $("#" + avatarImage).remove();
            $(comment).css('width', '258px');
        }
    }
}

//like

function like(button, likeState) {

    // Replace "like" with "unlike" and vise versa
    var buttonId = "#" + button;
    if (likeState === "like") {
        $(buttonId).replaceWith('<div id="' + button + '" class="tButton connect" onclick="toggleDis(\'#comments1\',\'block\');toggleDis(\'#likeBoxTest\',\'none\');like(\'' + button + '\', \'unlike\')">Unlike</div>');
    }
    else {
        $(buttonId).replaceWith('<div id="' + button + '" class="tButton connect" onclick="toggleDis(\'#comments1\',\'block\');toggleDis(\'#likeBoxTest\',\'block\');like(\'' + button + '\', \'like\')">Like</div>');
    }
}

function toggleTrailer(floater, state) {
    $('#overlay').css('visibility', 'visible');
    $(floater).css('display', state);
    
    if (state === "none") {
        $("#jumalaTrailer").removeAttr("src");
        $('#overlay').css('visibility', 'hidden');
    }
        
}

function toggleFloater(floater, state) {
    $('#overlay').css('visibility', state);
    $(floater).css('visibility', state);
}

function toggleVisibility(divId, state) {
    alert("Div ID: " + divId + " State: " + state);
    $(divId).css('visibility', state);
}

function toggleDis(divId, state) {
    $(divId).css('display', state);
}

function toggleVis() {

        $('.toggleVis').each(function (i, element) {
            $(element).css("visibility", "visible");
        });
}

function validateRequiredForms(){
    var $userCardForm = $("#signup");
    $userCardForm.removeAttr("invalid");
    
    $('*[required]').each(function(i, element) {
			//var $theElement = $(element).val();
			//alert ($theElement + "-" + $(element).attr("invalid"));
        if ($(element).val().length === 0 || $(element).attr("invalid") === "invalid")
            $userCardForm.attr("invalid", "invalid");
    });
    //validateErrorFeed();
    validateAge();
    toggleSubmit();
}


function toggleSubmit() {
    var $submitObject = $("#nextButton");
    var $userCardForm = $("#signup");
    $submitObject.removeAttr("disabled");
    $submitObject.removeClass("disabled");
    $submitObject.removeClass("blue");
    var canActivate = ($userCardForm.attr("invalid") !== "invalid");
		
    if ($userCardForm.attr("invalid") !== "invalid") {

        $submitObject.addClass("blue");
    }
    else {
        $submitObject.addClass("disabled");
	$submitObject.attr("disabled","disabled");
    }
}

function validatePassword() {
    var $password1 = $("#txtpassword");
    var $password2 = $("#txtpassword2");
		var $passwordError = $("#txtpassword2Error");
    var $userCardForm = $("#signup");
		
		if ($password1.val().length === 0 || $password2.val().length === 0) {
        canActivate = false;
        //$userCardForm.attr("invalid", "invalid");
    }
    else {
        if ($password1.val() !== $password2.val()) {
            $password2.css("border-color", "red");
            $userCardForm.attr("invalid", "invalid");
						$passwordError.css("visibility", "visible");
						$password2.attr("invalid", "invalid");
						
        }
        else {
            $password2.css("border-color", "#fff");
						$passwordError.css("visibility", "hidden");
						$password2.removeAttr("invalid");
        }
    }
	
	
	}

function validateAge(){
	var day = $("#day").val();
	var month = $("#month").val();
	var year = $("#year").val();
	var $dateValid = $("#year");
  var $userCardForm = $("#signup");
	var age = 13;
	
	var mydate = new Date();
	mydate.setFullYear(year, month-1, day);
	
	var currdate = new Date();
	currdate.setFullYear(currdate.getFullYear() - age);
	$dateValid.removeAttr("invalid");
	
	if ((currdate - mydate) < 0){
		$('#day').css("border-color", "red");
		$('#month').css("border-color", "red");
		$('#year').css("border-color", "red");
		//alert("Sorry, only persons over the age of " + age + " may enter this site");
		$('#dateError').css("visibility", "visible");
    $dateValid.attr("invalid", "invalid");
	}
	else {
		$('#day').css("border-color", "#666666");
		$('#month').css("border-color", "#666666");
		$('#year').css("border-color", "#666666");
		$('#dateError').css("visibility", "hidden");
		$dateValid.removeAttr("invalid");
	}
	
		//alert ($dateValid.attr("invalid"));
}

function validateErrorFeed() {
    var visible = false;
    var $errorBox = $("#errorBox");
    var $userCardForm = $("#userCardForm");
    $errorBox.find(".errorFeed").each(function(i, element) {
        if (!visible) {
            if (!$(element).hasClass("hide")) {
                visible = true;
                return;
            }
        }
    });
    if (visible) {
        $errorBox.removeClass("hide");
        $userCardForm.attr("invalid", "invalid");
    }
    else {
        $errorBox.addClass("hide");
    }
}
function validateName(name) {
    $.post("/beta/validatename", { name: name },
               function (data) {
                   var response = $(data).find('ResponseAlphaUserNameCheck');
                   if (response !== null) {
                       var nameExists = $(response).attr('UserNameExists');
                       if (nameExists.toLowerCase() == 'true') {
					$("#avatarNameError").css("visibility","visible");
					$("#avatarName").attr("invalid","invalid");
                       }
                       else {
					$("#avatarNameError").css("visibility","hidden");
					$("#avatarName").removeAttr("invalid");
                       }
                   }
               });
}

window.validName = true;
window.validEmail = true;

function validateEmail(email) {
    if (email === '') return;
    $.post("/beta/validateemail", { email: email },
               function (data) {
                   var response = $(data).find('ResponseAlphaEmailCheck');
                   if (response !== null) {
                       var nameExists = $(response).attr('EmailExists');
                	var $emailDiv = $("#txtEmail");
                	var $userEmailErrorBox = $("#txtEmailUsed");
                       if (nameExists.toLowerCase() == 'true') {
                    		$emailDiv.attr("invalid", "invalid");
                    		$userEmailErrorBox.css("display","block");
                       }
                       else {
                    		$emailDiv.removeAttr("invalid");
                    		$userEmailErrorBox.css("display","none");
                       }
                       //if (emailValid.toLowerCase() == 'false') {
                           
                       //}
                  //onKeyUpValidator($(email), 'email');   
                   }
               });
}

function doStuff(lat, lng) {
    var $ipLocation = $("#ipLocation");
    $ipLocation.val("latlng=" + lat + "," + lng);
}
function loadUserCreate(oid) {
    var $thisObject = $("#userCreateForm");
    if ($thisObject.length === 0) {
        $.ajax({
            url: "/User/Alpha/CreateUserForm/" + oid,
            dataType: "html",
            success: function(result) {
                $('#main').html(result);
                if (navigator.geolocation) {
                    navigator.geolocation.getCurrentPosition(function(position) {
                        doStuff(position.coords.latitude, position.coords.longitude);
                    });
                }
                $(function() {
                    $("#txtBDate").datepicker({
                        changeMonth: true,
                        changeYear: true,
                        yearRange: "c-75:c+0"
                    });
                });
                var $submitObject = $("#submitUserCreate");
                $submitObject.click(
                    function() {
                        if (!$(this).hasClass("disabled")) {
                            $(this).addClass("disabled");
                            submitForm("#userCardForm", "https://" + document.location.host + "/User/Alpha/CreateAlphaAccount/" + $.cookie("oid.jumala.com"));
                        }
                    }
                );
                
                return;
            }
        });
    }
    else {
        $thisObject.toggleClass("notVisible");
    }
}
var $logout = function() {
    $("#menuLoggedInUser").addClass("notVisible");
    $("#menuLogin").text("login");
    $("#community").addClass("notVisible");
    $("#menuLogin").click($showLogin);
    window.localStorage.removeItem('u.jumala.com');
    window.localStorage.removeItem('uid.jumala.com');
    window.localStorage.removeItem('us.jumala.com');
    window.location.href = '/Web/Logout';
};
var $userCard = function() {
    var $thisObject = $("#userCard");
    var sessionId = window.localStorage.getItem('us.jumala.com');
    if (sessionId === undefined || sessionId === null)
        sessionId = $.cookie('us.jumala.com');
    var urlToSend = "/Web/userCard/";
    if ($thisObject.length === 0) {
        $.ajax({
                url: urlToSend,
                dataType: "html",
                cache: false,
                success: function(result) {
                    $('#main').html(result);
                    // Starts out visible :-)
                    return;
                }
            });
    }
};
function kLogin() {
    submitForm("#loginForm", "https://" + document.location.host + "/Web/LoginHttps/");
}
function kUserEdit() {
    submitForm("#userCardForm", "https://" + document.location.host + "/User/ManageAccount");
}
function kPostBug() {
    
}
function submitForm(sender, theUrl) {
    var $lForm = $(sender);
    $lForm.attr("action", theUrl);
    $lForm.attr("method", "POST");
    $lForm.submit();
}
function login() {
    var usr = $("#usr").val();
    var pwd = $("#pwd").val();

    if (window.XMLHttpRequest) {
        xhttp = new XMLHttpRequest();
    }
    var body = "usr=" + usr + "&pwd=" + pwd;
    var uri = "https://localhost/user/login";
    xhttp.open("POST", uri, false);
    xhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhttp.setRequestHeader('Content-length', body.length);

    xhttp.send(body);
    xmlDoc = xhttp.responseXML;
    if (ProcessSession(xmlDoc)) {
        if (navigator.userAgent.indexOf("firefox") > -1) {
            $("#loginFrame").animate({
                "opacity": 0
            }, "slow");
        }
        else {
            $("#loginFrame").removeClass("visible");
        }

        $("#menuLoggedInUser").removeClass("notVisible");
        $("#menuLoggedInUser").text(usr);
        $("#menuLogin").text("logout");
        $("#menuLogin").attr("onClick", "logout();");
    }
    else {
        $('div.divError').append("<b>Login failed.</b>");
        $('#divError').toggle();
    }
}
function ProcessSession(data) {
    var Session = $(data).find('Session');
    window.JumalaSessionId = Session.attr("SessionId");
    window.UserName = Session.attr("UserName");
    return (SessionId != "" && SessionId != null);
}
function checkSessionId() {
    var sessionId = $.cookie("Jumala-Session-Id");
    if (sessionId != "" && sessionId != null) {
        $("#submit").attr("disabled", "");
    }
}


function edit(formId) {
    $("#editVisible").css("visibility", "visible");
    var $thisBox = $("."+formId);
    var $allInputs = $("."+formId+" :input");
    var $edit = $thisBox.hasClass("edit");
    
    //toggle "toggleVis" elements on page
    $('.toggleVis').each(function (i, element) {
        $(element).css("visibility", "hidden");
    });

    if ($edit) {
        var f = $("#profileForm");

        var qForm = $(f).serializeArray();

        $.each($allInputs, function () {
            $(this).attr("disabled", "disabled");
            $(this).addClass("disabled");
            $("#editAvatar").attr("onClick", "toggleFloater('#floaterAvatarPicker','visible');edit('profile')");
            $("#nextButton").text("EDIT");
            $("#nextButton").removeAttr("disabled");
        });

        $thisBox.removeClass("edit");

        var jqxhr = $.post($(f).attr("action"), qForm,
            function (data) {

            }, "xml")
            .error(function () {
                window.location.href = "/login";
            });

     }
     else {
         $.each($allInputs, function () {
             $(this).removeAttr("disabled");
             $(this).removeClass("disabled");
             $("#editAvatar").attr("onClick", "toggleFloater('#floaterAvatarPicker','visible')");
             $("#nextButton").text("SAVE");
         });

        //toggle "toggleVis" elements on page
        $('.toggleVis').each(function (i, element) {
            $(element).css("visibility", "visible");
        });
        
        $thisBox.addClass("edit");
    }
}

function onKeyUpValidator(thisObject, type) {
    var $objectToValidate = $(thisObject);
	var $errorBox = $( $(thisObject).attr("id") + "Error");
    var invalid = $objectToValidate.attr("invalid");
    if (invalid === undefined) invalid = "false";
    if (type === 'number') {
        if (isNaN(thisObject.value)) {
            $objectToValidate.val('');

        }
    }
    if (type === 'email') {
        validateEmailText($objectToValidate.val(), $objectToValidate, invalid);

    }
    if (type === 'name') {
        alert ($objectToValidate.val());
        var $avatarName = $objectToValidate.val();
        validateName($avatarName);

    }
		if (type === 'age') {
			validateAge();
		}
		if (type === 'password') {
			validatePassword();
		}
		
    validateRequiredForms();
}

function validateEmailText(str, $objectToValidate, invalid) {
		$('#txtEmail').removeAttr("invalid");
    if (str.length === 0) {
        $objectToValidate.css("border-color", "#fff");
				$('#txtEmailError').css("visibility", "hidden");
        return;
    }
    if (!isValidEmailAddress($objectToValidate.val())) {
        $objectToValidate.css("border-color", "red");
				$('#txtEmailError').css("visibility", "visible");
				$('#txtEmail').attr("invalid","invalid");
    }
    else {
        $objectToValidate.css("border-color", "#fff");
				$('#txtEmailError').css("visibility", "hidden");
				$('#txtEmail').removeAttr("invalid");
    } 
    return true;
}

function validateEmailMatch(email1, email2){
	var $originalEmail = $(email1).val();
	var $confirmationEmail = $(email2).val();
	//alert ("Original email:" + $originalEmail + ".  Confirmation email:" + $confirmationEmail);
	$('#txtEmail2').removeAttr("invalid");
	if ($confirmationEmail.length == 0){
				$('#txtEmail2').css("border-color", "#666666");
				$('#txtEmail2Error').css("visibility", "hidden");
				$('#txtEmail2').attr("invalid","invalid");
				return false;
	}
	
	
	if ($originalEmail != $confirmationEmail){
				$('#txtEmail2').css("border-color", "red");
				$('#txtEmail2Error').css("visibility", "visible");
				$('#txtEmail2').attr("invalid","invalid");
	}
	else {
				$('#txtEmail2').css("border-color", "#666666");
				$('#txtEmail2Error').css("visibility", "hidden");
				$('#txtEmail2').removeAttr("invalid");
	}
	//toggleSubmit(); 
}

function isValidEmailAddress(emailAddress) {
    var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
    if (!pattern.test(emailAddress))
        return false;
    var emailSplit = emailAddress.split("@", 2);
    var userName = emailSplit[0];
    var domain = emailSplit[1];
    if (userName.length > 64)
        return false;
    if (domain.length > 254)
        return false;
    if ((domain.length + userName.length) > 256)
        return false;

    return true;
}
String.prototype.contains = function(it) { return this.indexOf(it) != -1; };
jQuery.fn.hasAttr = function(name) {
    return this.attr(name) !== undefined;
};



function validateNoSpace(name)
{
	checkWhiteSpace = new RegExp(/[^A-Za-z0-9\-_]/);

	// Check for white space
	if (checkWhiteSpace.test(name)) 
	{
				$("#avatarNameSpaceError").css("visibility","visible");
				$("#avatarName").attr("invalid","invalid");
	}
	else if (!checkWhiteSpace.test(name))
	{
				$("#avatarNameSpaceError").css("visibility","hidden");
				$("#avatarName").attr("invalid","valid");		
	}
}


function browser_notices(){
  //pc only notice:
  if (!(navigator.platform && navigator.platform.indexOf("Win")>=0)){ //OS isn't Windows
    $(".home_feature_link a").append($(document.createElement("span")).addClass("pc_only_notice"));
  }
  //download location notices:
  if (!$ || !$.browser || !$(".auto_download_cheat").size()>0) return;
  if (typeof(_gaq)!="undefined" && $(".auto_download_cheat").first().attr("src")=="http://install.jumala.com/setup.exe"){
    _gaq.push(["_trackPageview", "http://install.jumala.com/setup.exe"]);
  }
  if ($.browser.msie && parseInt($.browser.version, 10)>=9){
    $("body").append("<div class='download_helper_img msie9'>&nbsp;</div>");
  }
  else if ($.browser.msie){
    $("body").append("<div class='download_helper_img msie'>&nbsp;</div>");
  }
  else if ($.browser.safari && /chrome/.test(navigator.userAgent.toLowerCase())){
    $("body").append("<div class='download_helper_img chrome'>&nbsp;</div>");
  }
  $(".download_helper_img").bind("click",function(e){
    toggleDis($(this),"none");
  });
}
$(document).ready(browser_notices);

function toggleFav(fav){
  $(fav).toggleClass("fav_checked") ;
  //tell server?
}

