﻿/// <reference path = "../system/jquery-1.4.4-vsdoc.js"/>
tinyMCE_GZ.init({
    plugins: "spellchecker, iespell, searchreplace, print, paste",
    themes: 'simple,advanced',
    languages: 'en',
    disk_cache: true,
    debug: false
});

$("#termsAgree").live("click", function () { toggleRegister(this); });
$("div.toggleArrow").live("click", function () { toggleSection(this); });
$("div.togglePw").live("click", function () { togglePassword(this); });
$("input.formInput").live("focus", function () { $(this).addClass("formInputFocus"); })
    .live("blur", function () { $(this).removeClass("formInputFocus"); });

$("input#Email").live("blur", function () { validateForm(this); }).live("focus", function () { $("div.emailStatus").hide().html(""); });
$("input#FirstName").live("blur", function () { validateForm(this); });
$("input#LastName").live("blur", function () { validateForm(this); });
$("input#Password").live("blur", function () { validateForm(this); }).live("focus", function () { $("div.passwordStatus").hide(); });
$("div.chkGraphic").live("click", function () { toggleGraphicCheckBox(this); });
$("div.chkGraphicSmall").live("click", function () { selectMessageFriends(this) });
$("div.friendSearch").live("click", function () { getAvailableFriends(this); });
$("input[type=button].btnAddFriend").live("click", function () { getAvailableFriends(this); });
$("div.messageListSubHeader").live("click", function () { toggleMessageList(this); });
$("div.friendListHeader").live("click", function () { toggleFriendList(this); });

$(document).ready(function () {
    $("input.logonEmail").blur(function () { validateLogin(); });
    $("input.logonPassword").blur(function () { validateLogin(); });
    $("input.profileSaveButton").removeAttr("disabled");
    if ($("div.affirmation").length > 0)
        showAffirmations();
    initFileUploads();

    if (document.location.href.indexOf("MemberPhotos") > -1)
        initMemberPhotoUploads();

    if ($("#PublishDate").length > 0)
        $("#PublishDate").datepicker();
    if ($("div.articleDelete").length > 0)
        $("div.articleDelete").click(function () { deleteArticleFromPage(this); });
    if ($("input.messageSubject").length > 0) {
        $("input.messageSubject").blur(function () { validateMessage(this); });
    }
    if ($("div.chkGraphicSmall").length > 0) {
        $("input[type=hidden][name=toFriendId]").val("");
    }
    if ($("input#MemberEmail").length > 0) {
        $("input#MemberEmail").blur(function () {
            if ($("input#MemberEmail").val().length > 0) {
                $("input.btnLostPassword").removeClass("btnLostPasswordDisabled").addClass("btnLostPasswordEnabled").removeAttr("disabled");
            }
        });
    }
    if ($("div.messageSentStatus").length > 0) {
        $("div.messageSentStatus").oneTime(3000, function () { $("div.messageSentStatus").fadeOut(500); });
    }

    if (document.location.href.indexOf("Member") > -1) {
        initMemberPhotoActions();
        initMemberArticleActions();
    }

    $("li.navLabel").hover(
        function () {
            var classArr = $(this).find("div.navText").attr("class").split(" ");
            var classBase = classArr[classArr.length - 1];
            $(this).removeClass(classBase + "Plain").addClass(classBase + "Color");
        },
        function () {
            var classArr = $(this).find("div.navText").attr("class").split(" ");
            var classBase = classArr[classArr.length - 1];
            $(this).removeClass(classBase + "Color").addClass(classBase + "Plain");
        }
    ).click(function () {
        var controller = $(this).attr("fxn");
        document.location.href = "/" + controller;
    });

    base_url = document.location.href.substring(0, document.location.href.indexOf('index.html'), 0);
    $(".lightbox").lightbox({
        fitToScreen: true,
        imageClickClose: false
    });    
});



function selectMessageFriends(elem) {
    $("div.chkGraphicSmall").each(function (i) {
        $(this).removeClass("chkCheckedSmall").addClass("chkUnCheckedSmall").next("input[type=hidden]").val("");
    });
    var $cb = $(elem);
    if ($cb.hasClass("chkCheckedSmall")) {
        $cb.fadeOut(500).removeClass("chkCheckedSmall").addClass("chkUnCheckedSmall").fadeIn(500);
        $cb.next("input[type=hidden]").val("");                
        validateMessage(this);    

    } else {
        $cb.fadeOut(500).removeClass("chkUnCheckedSmall").addClass("chkCheckedSmall").fadeIn(500);
        var id = $cb.attr("fxn");
        $cb.next("input[type=hidden]").val(id);                        
        validateMessage(this);     
    }
}

function decodeTinyMce(type, value) {
    if (type == "insert_to_editor") {
        value = value.replace(/&lt;/gi, "<");
        value = value.replace(/&gt;/gi, ">");
    }
    return value;
}

function encodeTinyMce(element_id, html, body) {
    html = html.replace(/</gi, "&lt;");
    html = html.replace(/>/gi, "&gt;");
    return html;
}

function showAffirmations() {
    //get the first one
    $affNum = $("#affirmationNumber");
    if ($affNum.val().length == 0)
        $affNum.val("0");
    var aNum = parseInt($affNum.val()) + 1;    
    var url = "/Affirmation/GetAffirmation/" + aNum;
    $.ajax({
        url: url,
        type: "GET",
        success: function (result) {
            $holder = $("span.affirmationHolder")            
            $holder.fadeOut(500, function () { $holder.html(result.Text); });
            $holder.fadeIn(500).oneTime(30000, function () { showAffirmations(); });
            $affNum.val(result.Id);
        }
    });
}

function toggleMessageList(elem) {
    $elem = $(elem);
    $targ = $(elem).next("div.msgList");
    if ($elem.hasClass("messageListSubHeaderDown")) {
        $targ.slideUp(500, function () { $elem.removeClass("messageListSubHeaderDown").addClass("messageListSubHeaderUp listSubHeaderItalic"); });
    }
    else {
        $targ.slideDown(500, function () { $elem.removeClass("messageListSubHeaderUp listSubHeaderItalic").addClass("messageListSubHeaderDown"); });
    }
}

function toggleFriendList(elem) {
    $elem = $(elem);
    $targ = $(elem).next("div.listHolder");
    if ($elem.hasClass("friendListHeaderDown")) {
        $targ.slideUp(500, function () { $elem.removeClass("friendListHeaderDown").addClass("friendListHeaderUp listSubHeaderItalic"); });
    }
    else {
        $targ.slideDown(500, function () { $elem.removeClass("friendListHeaderUp listSubHeaderItalic").addClass("friendListHeaderDown"); });
    }
}

function getAvailableFriends(elem) {
    $elem = $(elem);
    $ajaxLoader = $elem.next().find("img.ajaxLoaderSmall");
    $ajaxLoader.show();
    $.ajax({
        url: "Member/GetNewFriends/" + $("input[type=hidden][name=Id]").val(),
        type: "GET",
        success: function (result) {
//            var newLeft = $("div.frame").css("left");
//            alert(newLeft);
//            $("div#availableFriendsList").css("left", $("div.frame").css("left"));
//            $("div#availableFriendsList").css("left", parseInt($("div#availableFriendsList").css("left")) + 50 + "px");
            $("div.availableFriends").html(result);
            $("#availableFriendsHolder").click(function () { closeAvailableFriends(this); }).height($("div.frame").height()).fadeIn(500, function () { $("#availableFriendsList").fadeIn(500, function () { $ajaxLoader.hide(); }); });
            $("div.availFriendCheckBox").click(function () { toggleFriendSelection(this); });
            $("input.btnFriendsClose").click(function () { closeAvailableFriends(this); });
            $ajaxLoader.hide();

        }
    }); 
}

function toggleFriendSelection(elem){
    var $elem = $(elem);
    if ($elem.hasClass("chkUnChecked")) {
        $elem.children("input[type=hidden]").val("true");
    } else{
        $elem.children("input[type=hidden]").val("false");
    }
    toggleFriendRequestButton();
}

function toggleFriendRequestButton() {
    $("div.sendFriendRequest").removeClass("sendFriendRequestEnabled").addClass("sendFriendRequestDisabled").unbind("click");
    $("div.availFriendCheckBox").each(function () {
        if ($(this).children("input[type=hidden]").val() == "true") {
            $("div.sendFriendRequest").removeClass("sendFriendRequestDisabled").addClass("sendFriendRequestEnabled").click(function () { prepareFriendRequest(); });
            return false;
        }
    });
}

function prepareFriendRequest() {
    $("div.availFriendCheckBox").each(function () {
        if ($(this).children("input[type=hidden]").val() == "true") {
            var friendId = $(this).attr("fxn");
            sendFriendRequest(friendId);
        }
    });
}

function sendFriendRequest(friendId) {
    var url = "/Member/SendFriendRequest/";
    var data = "friendId=" + friendId;
    $.post(url, data,
        function (json) {
            if (json == "success") {
                closeAvailableFriends(null);
            } else {

            }
        }, 'json');
}


function closeAvailableFriends(elem) {
    $("#availableFriendsList").fadeOut(500, function () { $("#availableFriendsHolder").fadeOut(500, function () { $("div.availableFriends").html(""); }); });    
}

function validateLogin(elem) {
    $("input.btnLogon").removeClass("btnLogonEnabled").addClass("btnLogonDisabled");
    var email = $("input.logonEmail").val().length;
    var password = $("input.logonPassword").val().length;
    if (email > 0 && password > 0) {
        $("input.btnLogon").removeClass("btnLogonDisabled").addClass("btnLogonEnabled");
    }    
}

function toggleGraphicCheckBox(elem) {
    var cb = $(elem);    
    if (cb.hasClass("chkChecked")) {
        cb.fadeOut(500).removeClass("chkChecked").addClass("chkUnChecked").fadeIn(500);
        cb.siblings("input[type=hidden]").val("False");
        
    } else {
        cb.fadeOut(500).removeClass("chkUnChecked").addClass("chkChecked").fadeIn(500);
        cb.siblings("input[type=hidden]").val("True");
    }
}

function toggleRegister(elem) {
    var target = $("div.registerButton");
    if ($(elem).attr("checked")) {
        $(target).find("input.btnIcon").removeClass("btnRegisterDisabled").addClass("btnRegister").removeAttr("disabled");
        $(target).find("div.btnIconText").removeClass("disabled");
    } else {
    $(target).find("input.btnIcon").removeClass("btnRegister").addClass("btnRegisterDisabled").attr({ disabled: "disabled" });
        $(target).find("div.btnIconText").addClass("disabled");
    }
}

function togglePassword(elem) {
    //var targ = $(elem).prev("input.formInput");
    var targ = $(elem).parent("div").prev().find("input.memberPassword");
    var action = 0;
    if($(elem).hasClass("passwordShow")) action = 1;
    
    var tmpPass = document.createElement("input");
    $(tmpPass).addClass("memberForm memberPassword").addClass("passwordField");
    if (action == 1) {
        tmpPass.setAttribute("type", "text");
        $(elem).removeClass("passwordShow").addClass("passwordHide").attr({ title: "Hide Password" });
    } else {
        tmpPass.setAttribute("type", "password");
        $(elem).removeClass("passwordHide").addClass("passwordShow").attr({ title: "Show Password" });
    }

    tmpPass.setAttribute("name", $(targ).attr("name"));
    tmpPass.setAttribute("id", $(targ).attr("id"));    
    tmpPass.setAttribute("value", $(targ).val());

    $(targ)[0].parentNode.replaceChild(tmpPass, $(targ)[0]);
    
    tmpPass.focus();
}

function toggleSection(elem) {
    var targ = $(elem).siblings("div.articleAbstract");
    var snip = $(elem).siblings("div.articleSnip");
    var pos;
    if($(elem).hasClass("arrowUp")){
        pos = targ.position();
        snip.css({ top: pos.top });
        snip.show(); targ.slideUp(500, function () { $(elem).removeClass("arrowUp").addClass("arrowDown"); });
    }
    else{
        pos = snip.position();
        targ.css({ top: pos.top });
        targ.slideDown(500, function () { $(elem).removeClass("arrowDown").addClass("arrowUp"); snip.hide(); });
        
    }
}

function validateForm(elem) {
    var eName = $(elem).attr("id");
    var valid = true;
    var errMsg;
    if ($("#FirstName").val().length == 0)
        valid = false;
    if ($("#LastName").val().length == 0)
        valid = false;

    var email = $("#Email").val();
    if (email.length == 0)
        valid = false;
    if (email.length > 0 && !validEmail(email)) {
        $("div.emailStatus").html("Email address isn't valid").fadeIn(500);
        valid = false;
    }
    if ($("#Password").val().length == 0)
        valid = false;

    if ($("#Password").val().length < 4) 
        showPasswordLengthError();


    if (document.location.href.indexOf("Member/Profile") > -1 && eName == "Email") //on the profile page, check to see if the email address has been changed
    {
        var origEmail = $("input[type=hidden][name=Email]").val();
        var newEmail = email;
        if (origEmail == newEmail){ //run the check
        }else{checkForExistingEmail();}
    } else {
        if (eName == "Email")
            checkForExistingEmail();
    }

    toggleSubmit(valid);
}

function showPasswordLengthError() {
    $("#Email.memberEmail").siblings("img.ajaxLoaderSmall").fadeOut(500);
    $("div.emailStatus").hide();
    $("div.passwordStatus").html("The minimum length for your password is four characters.").show();
}

function checkForExistingEmail() {
    $("div.passwordStatus").hide();
    var $email = $("#Email.memberEmail");
    var $ajaxLoad = $email.siblings("img.ajaxLoaderSmall");
    $ajaxLoad.fadeIn(500);
    $.ajax({
        url: "CheckForExistingEmail/" + $email.val(),
        type: "GET",
        success: function (result) {
            $ajaxLoad.fadeOut(500);
            if (result.length > 0) {
                $("div.emailStatus").html(result).show();
                
                toggleSubmit(false);
            }
        }
    });
}

function validEmail(email) {
    var retVal = true;
    var regEx = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
    //var email = $(elem).val();
    if (email.search(regEx) == -1)
        retVal = false;
    return retVal;
}

function toggleSubmit(state) {
    $("input.btnRegister").attr("disabled", "disabled").addClass("btnRegisterDisabled").removeClass("btnRegisterActive");
    if (state)
        $("input.btnRegister").removeAttr("disabled").addClass("btnRegisterActive").removeClass("btnRegisterDisabled");
}

function initFileUploads() {
    
    if ($.browser.msie && $.browser.version < 9) {
        $("#fileUpload").css({ top: "-1px" });
    }
    
    $("div.changePicture").live("click", function () {
        $("div.uploadButton").hide();
        $("div.avatarRefresh").fadeIn(500);
        
    });
    $("input#fileUpload").change(function () {
        $("input[name=fakeupload]").val($("input#fileUpload").val()) ;
    });    
    
    var fileUp = $("#fileUpload")[0]
    if (!fileUp) return;
    fileUp.onchange = fileUp.onmouseout = function () {
        if (fileUp.value.length == 0) return;
        $("div.uploadButton").show();       
    }
}

function initMemberArticleActions() {
    $("input.btnEditMemberArticle").live("click", function () { editMemberArticle(this); });
    $("input.btnDeleteMemberArticle").live("click", function () { deleteMemberArticle(this); });
}

function editMemberArticle(elem) {
    var $elem = $(elem);
    var articleId = $elem.siblings("input[name=articleId]").val();
    var url = "/Articles/Edit/" + articleId;
    document.location = url;
}

function deleteMemberArticle(elem) {
    $elem = $(elem);
    var photoId = $elem.siblings("input[name=articleId]").val();
    var msg = "Are you sure you want to delete this article?\nIt cannot be undone.";
    if (confirm(msg)) {
        var url = "/Articles/Delete/" + photoId;
        $.post(url,
            null,
            function (json) {
                if (json = "success") {
                    $elem.parents("div.articleRow").remove();
                } else {
                    // jquery dialog call or
                    alert(json.errorMessage);
                }
            }, 'json');

    }
}

function deleteArticleFromPage(elem) {
    $elem = $(elem);
    var msg = "Are you sure you want to delete this article?\nIt cannot be undone.";
    if (confirm(msg)) {
        var url = "/Articles/Delete/" + $elem.attr("fxn");
        $.post(url,
            null,
            function (json) {
                if (json.success) {
                    window.location.href = '/Member';
                } else {
                    // jquery dialog call or
                    alert(json.errorMessage);
                }
            }, 'json');

        }
}
