﻿var babynames = {};

//------Url Format Function//
babynames.replaceQueryString = function(url, param, value) {
    var re = new RegExp("([?|&])" + param + "=.*?(&|$)", "i");
    var formatedUrl = url;
    var isReplace = 1;
    if (param == "gender" && value.length == 0) isReplace = 0;
    else if (param == "nat" && value.length == 0) isReplace = 0;
    else if (param == "rating" && value == 0) isReplace = 0;
    if (isReplace > 0) {
        if (url.match(re))
            formatedUrl = url.replace(re, '$1' + param + "=" + value + '$2');
        else if (url.indexOf("?") == -1)
            formatedUrl = url + '?' + param + "=" + value;
        else
            formatedUrl = url + '&' + param + "=" + value;
    }
    else {
        if (url.match(re)) {
            formatedUrl = url.replace(re, "");
        }
    }
    return formatedUrl;
};

//------Begin Rating Function
babynames.RateName = function(urlStr, i, curRateContainerId) {
    var token = $('input[name=__RequestVerificationToken]').val();
    var rateImagesContainer = $("#" + curRateContainerId);
    var originalStartHtml = rateImagesContainer.html();
    $.ajax({ type: "post",
        url: urlStr + "&rating=" + i,
        data: { '__RequestVerificationToken': token },
        beforeSend: function() {
            $("#" + curRateContainerId).html("Saving...");
        },
        success: function(data, status) {
            var htmlstr = babynames.CurrRateStar("hadRated", data.curstar);
            $("#" + curRateContainerId).html(htmlstr);
            $("#hadNotRated").hide();
            $("#hadBeenRated").show();
            $("#hadBeenRated strong").html(data.ratecount);
            $(".rateinfo").html("Thank you for your rating.");
            if (data == null) {
                rateImagesContainer.html(originalStartHtml);
            }
            else if (data == 'failed') {
                alert("Failed, please try again later.");
                rateImagesContainer.html(originalStartHtml);
            }
        },
        error: function(data) {
            alert("Failed, please try again later.");
            rateImagesContainer.html(originalStartHtml);
        },
        dataType: "json"
    });
}

babynames.CurrRateStar = function(rateStatus, rate) {
    var rateInt = parseInt(rate);
    var htmlStr = "";
    var RateClass = ["one_star", "two_stars", "three_stars", "four_stars", "five_stars"];
    if (rateStatus == "goRating") {
        for (var i = 1; i <= 5; i++) {
            if (i <= rate) {
                $("#rate_" + i).removeClass(RateClass[i - 1]);
                $("#rate_" + i).removeClass(RateClass[i - 1] + "_active");
                $("#rate_" + i).addClass(RateClass[i - 1] + "_active");
            }
            else {
                $("#rate_" + i).removeClass(RateClass[i - 1]);
                $("#rate_" + i).removeClass(RateClass[i - 1] + "_active");
                $("#rate_" + i).addClass(RateClass[i - 1]);
            }
        }
    }
    else if (rateStatus == "hadRated") {
        var RateClass = ["one_star", "two_stars", "three_stars", "four_stars", "five_stars"];
        for (var i = 1; i <= rate; i++) {
            htmlStr = htmlStr + '<li><a onfocus="this.blur();" id="rate_' + i + '" title="' + i + ' of 5 stars" class="' + RateClass[i - 1] + '_active' + '">' + i + '</a></li>';
        }
        if (htmlStr.length > 0) {
            return htmlStr;
        }
    }
}

babynames.ResetRateStar = function() {
    var RateClass = ["one_star", "two_stars", "three_stars", "four_stars", "five_stars"];

    for (var i = 1; i <= 5; i++) {
        $("#rate_" + i).removeClass(RateClass[i - 1] + "_active");
        $("#rate_" + i).addClass(RateClass[i - 1]);
    }
}
//End Rating Function//

babynames.ClosePopup = function(popName) {
    $("#showOpraMessgetoPoll").hide();
    $("#" + popName).hide();
}

babynames.OpenPopup = function(popName) {
    $("#" + popName).show();
}

 babynames.ChangeCase = function(str) {
     var reg = /\b(\w)|\s(\w)/g;
     str = str.toLowerCase();
     return str.replace(reg, function(m) { return m.toUpperCase() })
 }

//------User favourite list's Function//
babynames.UpdateUserListById = function(urlStr, nameStr, isLogin, loginUrl) {
    if (isLogin == "False") {
        window.location = loginUrl;
        return false;
    }
    $("#" + nameStr + "_4  input").attr({ "disabled": "disabled" });
    $.ajax({ type: "get",
        url: urlStr,
        success: function(data, status) {
            if (status == "success") {
                $("#HasFavNames").hide();
                if (data.Opstatus != "" && data.Opstatus != "isNotLogin") {
                    if (data.Opstatus == "delSucceed") {
                        $("#addfaves").removeAttr("disabled");
                        $("#addfaves").removeClass();
                        $("#addfaves").addClass("addfaves");
                        $("#addfaves").addClass("cursorstyle");
                        $("#tabFavList_" + nameStr).remove();
                        
                        $("#" + nameStr + "_4  input").removeClass("added");
                        $("#" + nameStr + "_4  input").addClass("NameHeart");
                        $("#" + nameStr + "_4  input").val("");
                        $("#" + nameStr + "_4  input").removeAttr("disabled");
                        
                        $("#list_" + nameStr).remove();
                    }
                    else if (data.Opstatus == "addSucceed") {
                        $("#HasFavNames").hide();
                        $("#addfaves").attr({ "disabled": "disabled" });
                        $("#addfaves").removeClass();
                        $("#addfaves").addClass("addedfaves");
                        var msg = "The name " + babynames.ChangeCase(nameStr) + " has been added to your favorites list.";
                        $("#showOpraMessge").html(msg);
                        $("#showOpraMessgetoPoll").hide();
                        $("#" + nameStr + "_4  input").removeClass("NameHeart");
                        $("#" + nameStr + "_4  input").addClass("added");
                        $("#" + nameStr + "_4  input").val("added");
                        $("#" + nameStr + "_4  input").attr({ "disabled": "disabled" });
                        $("#HasFavNames").hide();
                        $("#fiveMoreAdd").show();
                        $("#allFavoritesLink").show();
                    }
                    else if (data.Opstatus == "hadExists") {
                        $("#addfaves").attr({ "disabled": "disabled" });
                        $("#addfaves").removeClass("cursorstyle");
                        var msg = "You have already added " + babynames.ChangeCase(nameStr) + " to your favorites list.";
                        $("#showOpraMessge").html(msg);
                    }
                    $("#ulFavorList").html(data.NewListHtml);

                    if (data.NewListHtml == "") {
                        $("#HasFavNames").show();
                        $("#fiveMoreAdd").hide();
                        $("#allFavoritesLink").hide();
                        $("#showNullFavInfo").hide();
                        $("#goToAddFavNames").show();
                    }
                    $("#ulFavorList li").removeClass();
                    $("#ulFavorList li:even").addClass("Name_1");
                    $("#ulFavorList li:odd").addClass("Name_2");
                    $("#MyFavoritesTabShow").show();
                    $("#MyNameListTabShow").hide();
                    if (data.FavCount > 0) {
                        $("#hadnotbeenfaved").hide();
                        $("#hadbeenfaved").show();
                        $("#hadbeenfaved strong").html(data.FavCount);
                    }
                    else {
                        $("#hadbeenfaved").hide();
                        $("#hadnotbeenfaved").show();
                    }
                    if (data.Opstatus != "delSucceed") {
                        $("#facebox").show();
                    }
                    babynames.AutoClosePop(4);
                }
            }
        },
        error: function(data) {
            var msg = "Failed, please try again later.";
            $("#showOpraMessge").html(msg);
            $("#facebox").show();
            $("#" + nameStr + "_4  input").removeAttr("disabled");
        },
        dataType: "json"
    });
}

babynames.GetNameListId = function() {
    var listIdstr = "";
    $("input[name='checkbox']:checked").each(function() {
        listIdstr += $(this).val() + ",";
    });
    return listIdstr;
}

babynames.GetNewNameListname = function() {
    var listNamestr = "";
    if ($("#chkNewNameList").attr("checked") == true) {
        var inputTitleCtr = $("#txtPopNewNameList");
        listNamestr = $.trim(inputTitleCtr.val());
    }
    return listNamestr;
}

$("#hnameStr").val("");
$("#hurlStr").val("");
$("#hisLogin").val("");
$("#hloginUrl").val("");
babynames.AddToNameList = function(nameStr, urlStr, isLogin, loginUrl) {
    if (isLogin == "False") {
        window.location = loginUrl;
        return false;
    }

    $('#ulNameListContainer input[type=checkbox]').each(function() {
        $(this).attr('checked', false);
    });
    $("#nullNewTitleMsg").hide();
    $('#popInvalidFullName').hide();
    $('#txtPopNewNameList').val('');

    $("#hnameStr").val(nameStr);
    $("#hurlStr").val(urlStr);
    $("#hisLogin").val(isLogin);
    $("#hloginUrl").val(loginUrl);
    $("#AddToNameListFaceBox").show();
}

babynames.SaveToNameList = function() {
    var listIdstr = "";
    var listNamestr = "";
    var nameStr = "";
    var urlStr = "";
    var isLogin = "";
    var loginUrl = "";
    isLogin = $("#hisLogin").val();
    loginUrl = $("#hloginUrl").val();
    $("#nullNewTitleMsg").html("");
    $("#nullNewTitleMsg").hide();
    $('#popInvalidFullName').hide();
    if (isLogin == "False") {
        window.location = loginUrl;
        return false;
    }
    nameStr = $("#hnameStr").val();
    listIdstr = babynames.GetNameListId();
    listNamestr = babynames.GetNewNameListname();
    if ($("#chkNewNameList").attr("checked") && listNamestr == "") {
        $("#nullNewTitleMsg").html("Please enter a title to create a new list!");
        $("#nullNewTitleMsg").show();
        return false;
    }

    if (listIdstr.length == 0 && listNamestr.length == 0) {
        $("#nullNewTitleMsg").html("Please select a name list.");
        $("#nullNewTitleMsg").show();
        return false;
    }
    else if (listNamestr.length > 0) {
        if (!nameRegx.test(listNamestr)) {
            $('#popInvalidFullName').css('display', 'block');
            return false;
        }
    }

    urlStr = $("#hurlStr").val();
    urlStr += "&nameListIds=" + listIdstr.substring(0, listIdstr.length - 1);
    urlStr += "&newlistName=" + listNamestr;
    babynames.AddToPoll(urlStr, isLogin, loginUrl, nameStr);
}

babynames.AddToPoll = function(urlStr, isLogin, loginUrl, nameStr) {
    if (isLogin == "False") {
        window.location = loginUrl;
        return false;
    }
    $("#AddToMyPoll").attr({ "disabled": "disabled" });
    $("#AddNameSaveBtn").attr({ "disabled": "disabled" });
    $("#AddNameSaveBtn").css({ "cursor": "auto" });
    $("#addlists").attr({ "disabled": "disabled" });
    $("#addlists").removeClass("cursorstyle");
    $.ajax({ type: "get",
        url: urlStr,
        success: function(data, status) {
            if (status == "success") {
                $("#HasListNames").hide();
                if (data.Currstatus == "Added" || data.Currstatus == 'NameExisted') {
                    var msg = "The name " + nameStr + "  has been added to your poll.";
                    //$("#AddToMyPoll").attr({ "disabled": "disabled" });
                    //$("#AddToMyPoll").removeClass("cursor");
                    $("#showOpraMessge").html(msg);
                    $("#facebox").show();
                    $("#showOpraMessgetoPoll").show();
                    $("#ulListnames").html(data.NewListHtml);

                    $("#fiveAddedNamesInfo").show();
                    $("#editNameListLink").show();
                    $("#HasListNames").hide();

                    if (data.newlistName && data.newListId > 0) {
                        $('#ulNameListContainer').prepend('<li><input type="checkbox" value="260" class="NamesType" name="checkbox" id="' + data.newListId + '">' + data.newlistName + '</li>');
                    }
                    $('#txtPopNewNameList').val('');
                    $('#ulNameListContainer input[type=checkbox]').each(function() {
                        $(this).attr('checked', false);
                    });
                    $("#AddToNameListFaceBox").hide();
                }
                else if (data.Currstatus == "Existsed") {
                    $("#nullNewTitleMsg").html("You already have a list with this name. Please choose another name.");
                    $("#nullNewTitleMsg").show();
                }
                $("#ulListnames li").removeClass();
                $("#ulListnames li:even").addClass("Name_1");
                $("#ulListnames li:odd").addClass("Name_2");
                $("#MyFavoritesTabShow").hide();
                $("#MyNameListTabShow").show();
                babynames.AutoClosePop(4);

                $("#AddNameSaveBtn").removeAttr("disabled");
                $("#AddNameSaveBtn").css({ "cursor": "pointer" });

                $("#addlists").removeAttr( "disabled" );
                $("#addlists").addClass("cursorstyle");

                $("#AddToMyPoll").removeAttr( "disabled" );
            }
        },
        error: function(data) {
            var msg = "Failed, please try again later.";
            $("#showOpraMessge").html(msg);
            $("#facebox").show();
            $("#AddToNameListFaceBox").hide();
            $("#AddToMyPoll").removeAttr("disabled");

            $("#AddNameSaveBtn").removeAttr("disabled");
            $("#AddNameSaveBtn").css({ "cursor": "pointer" });

            $("#addlists").removeAttr("disabled");
            $("#addlists").addClass("cursorstyle");
        },
        dataType: "json"
    });
}

var chaRegx = /^[A-Za-z\s]+$/g;
var nameRegx = /^[\w+\s!?''\d+]+$/;

babynames.showCreateNameList = function() {
    $('#spanCreateValidation').hide();
    $('#divCraeteNameListErrMsg').hide();
    $('#txtCreateNameListName').val('');
    $('#divCreateNameList').show();
}

babynames.createNewNamesList = function(nameId, urlStr, isLogin, loginUrl) {
    if (isLogin == "False") {
        window.location = loginUrl;
        return false;
    }
    $('#divCreateNameList').show();
    $('#divCraeteNameListErrMsg').hide();
    $('#spanCreateValidation').hide();
    var name = $('#' + nameId).val();
    if (!$.trim(name)) {
        $('#divCraeteNameListErrMsg').show();
        $('#divCraeteNameListErrMsg').html('Please enter a title to create a new list!');
        return false;
    }
    else if (!nameRegx.test(name)) {
        $('#spanCreateValidation').show();
        return false;
    }

    $.ajax({ type: "get",
        url: urlStr + '?name=' + name,
        success: function(data, status) {
            if (status == 'success') {
                if (data.status == true) {
                    window.location = homeUrl + 'my-name-lists/' + data.nameListId;
                    return false;
                }
                else if (data.status == 'Existsed') {
                    $("#divCraeteNameListErrMsg").html("You already have a list with this name. Please choose another name.");
                    $("#divCraeteNameListErrMsg").show();
                }
                else {
                    $("#divCraeteNameListErrMsg").html("Create faild, please try again later.");
                    $("#divCraeteNameListErrMsg").show();
                }
            }
        },
        error: function(data) {
            var msg = "Failed, please try again later.";
            $("#showOpraMessge").html(msg);
            $("#facebox").show();
        },
        dataType: "json"
    });
}

babynames.EditVotingName = function(urlStr, isLogin, loginUrl) {
    if (isLogin == "False") {
        window.location = loginUrl;
        return false;
    }
    $.ajax({ type: "get",
        url: urlStr,
        success: function(data, status) {
            if (status == "success") {
                if (data.Currstatus == "updSuccessed") {
                    var msg = "Your changes have been saved.";
                    $("#showOpraMessge").html(msg);
                    $("#facebox").show();
                }
            } 
        },
        error: function(data) {
            var msg = "Failed, please try again later.";
            $("#showOpraMessge").html(msg);
            $("#facebox").show();
        },
        dataType: "json"
    });
}

babynames.AutoClosePop = function(count) {
    window.setTimeout(function() {
        count--;
        if (count > 0) {
            babynames.AutoClosePop(count);
        }
        else{
            $("#facebox").hide("slow");
        }
    }, 1000);
}

babynames.DeleteNameList = function(listId, urlStr, isLogin, loginUrl) {
    if (isLogin == "False") {
        window.location = loginUrl;
        return false;
    }
    var Msg = 'By deleting this name list, you will also be deleting any votes you’ve received so far. Do you still want to continue? ';
    if (window.confirm(Msg, '')) {
        $.ajax({ type: "get",
            url: urlStr,
            success: function(data, status) {
                if (status == "success") {
                    if (data.Currstatus == "DelSucced") {
                        $("#ListNum_" + listId).remove();
                        var msg = "Your changes have been saved.";
                        $("#showOpraMessge").html(msg);
                        $("#facebox").show();

                        $("#ulListnames").html(data.NewListHtml);
                        if (data.NewListHtml.length == 0) {
                            $("#fiveAddedNamesInfo").hide();
                            $("#editNameListLink").hide();
                            $("#HasListNames").show();
                        }
                        $("#ulListnames li").removeClass();
                        $("#ulListnames li:even").addClass("Name_1");
                        $("#ulListnames li:odd").addClass("Name_2");
                        $(".NameListList li").removeClass();
                        $(".NameListList li:even").addClass("NameLine_1");
                        $(".NameListList li:odd").addClass("NameLine_2");
                        babynames.AutoClosePop(4);
                    }
                }
            },
            error: function(data) {
                var msg = "Failed, please try again later.";
                $("#showOpraMessge").html(msg);
                $("#facebox").show();
            },
            dataType: "json"
        });
    }
    else {
        return false;
    }
}

babynames.initSendToAFriend = function(width, height, title, id) {
    var aClass = 'a.submodal-' + width + '-' + height;
    if (title) {
        title = encodeURIComponent(title).replace(/%/g, ",").replace(/\*/g, "`").replace(/[cC][oO][nN]/g, ",on").replace(/\./g, "$");
    }

    var changeHref = $(aClass)[0].href.replace('&pt=', '&pt=' + title);
    if (typeof id != 'undefined') {
        changeHref = babynames.replaceQueryString(changeHref, 'pu', homeUrl + 'featured-name-lists/' + id);
    }
    $(aClass).each(function() {
        this.href = changeHref;
        $(this).addClass('orange');
        this.title = 'Send to a friend';
    });

    $(document).ready(function() {
        initPopUp(); // The function is located in SendToAFriend folder submodal.js file.
    });
}

babynames.shareOnFacebook = function(url) {
    var facebookUrl = 'http://www.facebook.com/sharer.php?u=' + encodeURIComponent(url) + '&t=' + encodeURIComponent('Want to help me name my baby? Place your vote!');
    var facebookWin = window.open(facebookUrl, 'share_on_facebook', 'height = 250, width = 600, toolbar = no, menubar = no, scrollbars = no, resizable = no, location = no, status = no');
    if (facebookWin)
        facebookWin.focus();
}

babynames.initId = function(id) {
    $('#txtLinkToThis').val($('#txtLinkToThis').val().replace(/\{0\}/g, id));
    $('#txtLinkToThis').attr('title', $('#txtLinkToThis').val());
    $('#txtareaLinkToThis').val($('#txtareaLinkToThis').val().replace(/\{0\}/g, id));
}

/*
babynames.shareOnTwitter = function(url) {
var twitterUrl = 'http://www.twitter.com/home?status=' + 'Want+to+help+me+name+my+baby\?+Place+your+vote\!+' + url;
var twitterWin = window.open(twitterUrl, 'share on facebook', 'height = 250, width = 600, toolbar = no, menubar = no, scrollbars = no, resizable = no, location = no, status = no');
if (twitterWin)
twitterWin.focus();
} 
*/

function checkMemberCookie() {
    var membercookie;
    membercookie = $.cookie('member');
    if (membercookie == null) {
        return false;
    } else {
        return true;
    }
}

//------Left nav Style
//babynames.initNavStyle = function(containerClassName, activeClass, currentName) {
//    var nameStr = "";
//    if (currentName == "ByLetters") {
//        nameStr = "By Alphabet";
//    }
//    else if (currentName == "AllBoys") {
//        nameStr = "Baby Boy Names";
//    }
//    else if (currentName == "AllGirls") {
//        nameStr = "Baby Girl Names";
//    }
//    else if (currentName == "ByOrgin") {
//        nameStr = "By Origin";
//    }

//    $("." + containerClassName + " ul li a").each(function() {
//        $(this).removeClass(activeClass);
//        if ($(this).text().toLowerString() == nameStr) {
//            $(this).addClass(activeClass);
//        }
//    })
//};

// eg. $.cookie(’the_cookie’, ‘the_value’, {expires: 7, path: ‘/’, domain: ‘jquery.com’, secure: true});
// expires based hour.
jQuery.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        // CAUTION: Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};

