﻿/// <reference path="~/Scripts/IntelliSense/Intellisense.js" />

(function()
{
	BSC.UI.Ws.Members = function()
	{
		var load = function(p1)
		{
			var guid = p1;
			GO("/members/latestonline");
		};
		return {
			Load: load
		};
	} ();
})();
// Subscribe to events
BSC.E.Subscribe("load", BSC.UI.Ws.Members.Load, null, "members");


// Memberfinder.Search
(function()
{
	BSC.Require("BSC.UI.Ws.Members");
	BSC.UI.Ws.Members.Search = function()
	{
		var localdata = {};

		var load = function(p1)
		{
			var guid = p1;
			var url = "/members/search";
			var data = {};

			var w = BSC.UI.Ws.Get(guid);
			var data = BSC.U.ParseQuery(w.query);
			if (!w.data.name && !data.email) return;

			if (w.data.name && w.data.name.length > 0)
			{
				url = url + "/" + w.data.name;
				delete data.email;
			}

			BSC.D.AjaxPost(url, data, function(res)
			{
				// Html
				$("#" + guid + "_result").html(res);
				$("#" + guid + "_loader").hide();
				$("#" + guid + "_result").show();
//				$("img").lazyload({
//					placeholder: "/beautifulpeoplecdn/images/loader.gif",
//					//effect: "fadeIn",
//					threshold: 200,
//					container: $("#" + guid + "_content")
//				});
				// Event bind
				BSC.E.MapHrefs();
				var json = $("#" + guid + "_pagejson").getValue();
				var pagingData = BSC.D.JSON.Parse(json);
				BSC.UI.ProfilePaging.Bind(url, guid, data, pagingData, "members.search.view", { view: "big" });
				BSC.UI.HideStatus(guid, 200);
			}, "html", guid);
		};

		// Public implementation
		var bind = function(p1)
		{
			var guid = p1;
			$("#" + guid + "_searchform").bind("submit", guid, function(e)
			{
				var guid = e.data;

				var name = "" + $("#" + guid + "_value_name").getValue();
				if (name.length > 0)
				{
					GO("/members/search/" + name);
					return false;
				}

				var email = "" + $("#" + guid + "_value_email").getValue();
				if (email.length > 0)
				{
					GO("/members/search/?email=" + email);
					return false;
				}


				return false;
			});
		};
		var unbind = function(p1)
		{
			var guid = p1;
			$("#" + guid + "_searchform").unbind();
		};

		return {
			Bind: bind,
			Unbind: unbind,
			Load: load
		};
	} ();
})();
// Subscribe to events
BSC.E.Subscribe("bind", BSC.UI.Ws.Members.Search.Bind, null, "members.search");
BSC.E.Subscribe("unbind", BSC.UI.Ws.Members.Search.Unbind, null, "members.search");
BSC.E.Subscribe("load", BSC.UI.Ws.Members.Search.Load, null, "members.search");



// Memberfinder.CriteriaSearch
(function() {
    BSC.UI.Ws.Members.CriteriaSearch = function() {
        // Public imlpementation

        var BindCityState = function(guid, countryCode) {
            // autocomplete city
            $("#" + guid + "_city").unbind().autocomplete("/home/GetCities/",
			    {
			        delay: 10,
			        minChars: 1,
			        cacheLength: 10,
			        matchSubset: 1,
			        matchContains: 0,
			        autoFill: true,
			        selectFirst: true,
			        lineSeparator: ",",
			        maxItemsToShow: 10,
			        divelement: guid + "_city",
			        extraParams: { country: countryCode }
			    }
			);

            // autocomplete stateprovince
            $("#" + guid + "_stateProvince").unbind().autocomplete("/home/GetStateProvinces/",
			    {
			        delay: 10,
			        minChars: 1,
			        cacheLength: 10,
			        matchSubset: 1,
			        matchContains: 0,
			        autoFill: true,
			        selectFirst: true,
			        lineSeparator: ",",
			        maxItemsToShow: 10,
			        divelement: guid + "_stateprovince",
			        extraParams: { country: countryCode }
			    }
			);
        };

        function getInternetExplorerVersion()
        // Returns the version of Windows Internet Explorer or a -1
        // (indicating the use of another browser).
        {
            var rv = -1; // Return value assumes failure.
            if (navigator.appName == 'Microsoft Internet Explorer') {
                var ua = navigator.userAgent;
                var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
                if (re.exec(ua) != null)
                    rv = parseFloat(RegExp.$1);
            }
            return rv;
        }

        var bind = function(p1) {
            var guid = p1;
            $("#" + guid + "_search").bind("click", guid, function(e) {
                $("#" + e.data + "_searchform").trigger("submit", e.data);
            });

            // Criteria
            $("#" + guid + "_searchform").bind("submit", guid, function(e) {
                var guid = e.data;
                var query = "";

                // Gender
                var gender = $("#" + guid + " input.gender").getValue();
                if (gender > -1) {
                    var gt = (gender == 1) ? "male" : "female";
                    query = query + "gender=" + encodeURIComponent(gt) + "&";
                }

                var agefrom = parseInt($("#" + guid + "_agefrom").getValue());
                if (!isNaN(agefrom)) query = query + "agefrom=" + encodeURIComponent(agefrom) + "&";

                var ageto = parseInt($("#" + guid + "_ageto").getValue());
                if (!isNaN(ageto)) query = query + "ageto=" + encodeURIComponent(ageto) + "&";

                var contry = $("#" + guid + "_country").getValue();
                if (contry.length > 0) query = query + "country=" + encodeURIComponent(contry) + "&";

                var state = $("#" + guid + "_stateProvince").getValue();
                if (state != "") query = query + "state=" + encodeURIComponent(state) + "&";

                var city = $("#" + guid + "_city").getValue();
                if (city != "") query = query + "city=" + encodeURIComponent(city) + "&";

                var height = parseInt($("#" + guid + "_height").getValue());
                if (!isNaN(height) && height > 0) query = query + "height=" + encodeURIComponent(height) + "&";

                var weight = parseInt($("#" + guid + "_weight").getValue());
                if (!isNaN(weight) && weight > 0) query = query + "weight=" + encodeURIComponent(weight) + "&";

                var smoker = $("#" + guid + " input.smoker").getValue();
                if (smoker > -1) query = query + "smoker=" + encodeURIComponent(smoker) + "&";

                var orderby = $("#" + guid + "_beautyscore").getValue();
                query = query + "beautyscore=" + encodeURIComponent(orderby) + "&";
                
                var orderby = $("#" + guid + "_orderby").getValue();
                query = query + "orderBy=" + encodeURIComponent(orderby);
                
                

                GO("/members/criteriasearch/?" + query);

                return false;
            });

            // Country Dropdown Change
            $("#" + guid + "_country").bind("change", guid, function(e) {
                var guid = e.data;
                var country = this.value;

                var browser = getInternetExplorerVersion();

                if (browser >= 8 || browser <= 0)
                    BindCityState(guid, country);
            });

            var country = $("#" + guid + "_country").getValue();
            var browser = getInternetExplorerVersion();
            if (browser >= 8 || browser <= 0)
                BindCityState(guid, country);
        };

        var unbind = function() {
            $("#" + guid + "_save").unbind();

            // tag type
            //$("#" + guid + " a").unbind();
            $("#" + guid + " input").unbind();
            $("#" + guid + " select").unbind();
        };

        var load = function(p1) {
            var guid = p1;
            var url = "/members/criteriasearch";
            var w = BSC.UI.Ws.Get(guid);
            var data = BSC.U.ParseQuery(w.query);

            if (IsObjectEmpty(data)) return;

            BSC.D.AjaxPost(url, data, function(res) {
                // Html
                $("#" + guid + "_result").html(res);
                $("#" + guid + "_loader").hide();
                $("#" + guid + "_result").show();
//                $("img").lazyload({
//                    placeholder: "/content/images/loader.gif",
//                    //effect: "fadeIn",
//                    threshold: 200,
//                    container: $("#" + guid + "_content")
//                });
                // Event bind
                BSC.E.MapHrefs();
                var json = $("#" + guid + "_pagejson").getValue();
                var pagingData = BSC.D.JSON.Parse(json);
                BSC.UI.ProfilePaging.Bind(url, guid, data, pagingData, "members.criteriasearch.view", { view: "big" });
                BSC.UI.HideStatus(guid, 200);
            }, "html", guid);
        };

        return {
            Load: load,
            Bind: bind,
            Unbind: unbind
        };
    } ();
})();
// Subscribe to events
BSC.E.Subscribe("load", BSC.UI.Ws.Members.CriteriaSearch.Load, null, "members.criteriasearch");
BSC.E.Subscribe("bind", BSC.UI.Ws.Members.CriteriaSearch.Bind, null, "members.criteriasearch");
BSC.E.Subscribe("unbind", BSC.UI.Ws.Members.CriteriaSearch.Unbind, null, "members.seacriteriasearchrch");









//// Memberfinder.Result
//(function()
//{
//	BSC.UI.Ws.Members.Result = function()
//	{
//		var localcache = {};
//		/// Private End

//		// Public implementation
//		var loaddata = function(p1)
//		{
//			var guid = p1;
//			localcache[guid] = {};
//			BSC.UI.ShowStatus(guid, "Loading...");
//			var w = BSC.UI.Ws.Get(guid);
//			var data = BSC.U.ParseQuery(w.query);
//			if (data.cguid)
//				localcache[guid].cguid = data.cguid;

//			$("#" + guid + "_loader").hide();
//			BSC.UI.ShowStatus(guid, "Loading...");

//			data.view = (data.view) ? data.view : (BSC.D.P.Setting("members.result.view")) ? BSC.D.P.Setting("members.result.view") : "big";
//			BSC.D.AjaxGet("/MemberFinder/SearchResult", data, function(res)
//			{
//				// Html
//				$("#" + guid + "_result").html(res);
//				$("#" + guid + "_loader").hide();
//				$("#" + guid + "_result").show();
//				// Event bind
//				BSC.E.MapHrefs();
//				var json = $("#" + guid + "_pagejson").getValue();
//				var pagingData = BSC.D.JSON.Parse(json);
//				BSC.UI.ProfilePaging.Bind("/MemberFinder/SearchResult", guid, data, pagingData, "members.result.view", { view: "big" });
//				BSC.UI.HideStatus(guid, 200);
//			}, "html", guid);
//		};


//		var bind = function(p1)
//		{
//			var guid = p1;
//		};

//		var unbind = function(p1)
//		{
//			var guid = p1;
//			$("#" + guid + "_topbar").unbind();
//			BSC.UI.ProfilePaging.Unbind(guid);
//			data = null;
//		};

//		var addReceipient = function(e)
//		{

//		};

//		var onListClick = function(e)
//		{
//			e.preventDefault(); e.stopPropagation();
//			var el = BSC.E.GetElement(e, "dl", "dd");
//			var t = (el.id).split("_");
//			var profileID = t[0];
//			BSC.UI.Ws.Mail.Compose.AppendContact(profileID);

//			//alert(profileID);
//			return false;
//		};

//		return {
//			Loaddata: loaddata,
//			Bind: bind,
//			Unbind: unbind,
//			AddReceipient: addReceipient,
//			OnListClick: onListClick
//		};
//	} ();
//})();
//// Subscribe to events
//BSC.E.Subscribe("load", BSC.UI.Ws.Members.Result.Loaddata, null, "members.result");
//BSC.E.Subscribe("bind", BSC.UI.Ws.Members.Result.Bind, null, "members.result");
//BSC.E.Subscribe("unbind", BSC.UI.Ws.Members.Result.Unbind, null, "members.result");





// Memberfinder.CriteriaSearch
(function()
{
    BSC.UI.Ws.Members.FindFriends = function()
    {
        var loading = false;
        // Public imlpementation
        var bind = function(guid)
        {
            $("#" + guid + "_findfriends").bind("click", guid, function(e)
            {
                if (loading)
                {
                    alert("Getting your contacts, please wait...");
                    return false;
                }
                var email = $("#" + guid + "_email").getValue();
                var password = $("#" + guid + "_password").getValue();

                var data = {
                    email: email,
                    password: password
                };

                var buttonContainer = $(this).parent();
                $("#" + guid + "_errormessage").hide();
                $("#" + guid + "_loading").show();
                //buttonContainer.hide();

                BSC.D.AjaxPost("/Members/FindFriends", data, function(res)
                {
                    loading = false;
                    //buttonContainer.show();
                    if (!res.success)
                    {
                        $("#" + guid + "_loading").hide();
                        $("#" + guid + "_errormessage").html(res.message + " - <a>Try again</a>").show();
                        return false;
                    }

                    $("#" + guid + "_content").html(res.message);

                    BSC.E.MapHrefs();

                    // Bind Select/Deselect All
                    $("#" + guid + " input.selectall").bind("change", guid, function(e)
                    {
                        $("#" + guid + " input[type='checkbox']").attr('checked', $(this).attr("checked"));
                    });

                    // Bind Add button
                    $("#" + guid + " a.add").bind("click", guid, function(e)
                    {
                        $(this).hide();
                        $("#" + guid + " div.add_loader").show();

                        var emails = $("#" + guid + " input.contact").fieldArray();
                        var data = { emails: emails };
                        BSC.D.AjaxPost("/Members/SendFriendsRequests", data, function(res)
                        {
                            
                            if (!res.success)
                            {
                                $("#" + guid + "_loading").hide();
                                $("#" + guid + " a.add").show();
                                return;
                            }

                            BSC.UI.Alert(BSC.T.Get("JS.BSC.UI.Ws.Admin.OK"), null, "Friends requests sent", "Scan other mail accounts <br/>to find more people you know.", function() { GO("/members/findfriends"); return; }, null, "info");
                        }, "json", guid);
                    });
                }, "json", guid);
                loading = true;
                return false;
            });



        };

        var unbind = function(guid)
        {
            $("#" + guid + "_findfriends").unbind();
            $("#" + guid + " input.selectall").unbind();
        };

        return {
            Bind: bind,
            Unbind: unbind
        };
    } ();
})();
// Subscribe to events
BSC.E.Subscribe("bind", BSC.UI.Ws.Members.FindFriends.Bind, null, "members.findfriends");
BSC.E.Subscribe("unbind", BSC.UI.Ws.Members.FindFriends.Unbind, null, "members.findfriends");

// Memberfinder.Top50
(function()
{
    BSC.UI.Ws.Members.Top50 = function()
    {
        var load = function(p1)
        {
            var guid = p1;

            var w = BSC.UI.Ws.Get(guid);
            if (!w.data.list) return;
            var data = BSC.U.ParseQuery(w.query);

            $("#" + guid + "_loader").hide();
            BSC.UI.ShowStatus(guid, "Loading...");
            data.view = (data.view) ? data.view : (BSC.D.P.Setting("members.top50.view")) ? BSC.D.P.Setting("members.top50.view") : "big";
            BSC.D.AjaxPost(w.cleanpath, data, function(res)
            {
                // Html
                $("#" + guid + "_result").html(res);
                $("#" + guid + "_loader").hide();
                $("#" + guid + "_result").show();
                // Event bind
                BSC.E.MapHrefs();
                var json = $("#" + guid + "_pagejson").getValue();
                var pagingData = BSC.D.JSON.Parse(json);
                BSC.UI.ProfilePaging.Bind(w.cleanpath, guid, data, pagingData, "members.top50.view", { view: "big" });
                BSC.UI.HideStatus(guid, 200);
            }, "html", guid);
        };

        return {
            Load: load
        };
    } ();
})();
// Subscribe to events
BSC.E.Subscribe("load", BSC.UI.Ws.Members.Top50.Load, null, "members.top50");


// Memberfinder.NewMembers
(function()
{
    BSC.UI.Ws.Members.Applicants = function()
    {
        var load = function(p1)
        {
            var guid = p1;

            var w = BSC.UI.Ws.Get(guid);
            if (!w.data.list) return;
            var data = BSC.U.ParseQuery(w.query);

            $("#" + guid + "_loader").hide();
            BSC.UI.ShowStatus(guid, "Loading...");
            data.view = (data.view) ? data.view : (BSC.D.P.Setting("members.applicants.view")) ? BSC.D.P.Setting("members.applicants.view") : "big";
            BSC.D.AjaxPost(w.cleanpath, data, function(res)
            {
                // Html
                $("#" + guid + "_result").html(res);
                $("#" + guid + "_loader").hide();
                $("#" + guid + "_result").show();
                // Event bind
                BSC.E.MapHrefs();
                var json = $("#" + guid + "_pagejson").getValue();
                var pagingData = BSC.D.JSON.Parse(json);
                BSC.UI.ProfilePaging.Bind(w.cleanpath, guid, data, pagingData, "members.applicants.view", { view: "big" });
                BSC.UI.HideStatus(guid, 200);
            }, "html", guid);
        };

        return {
            Load: load
        };
    } ();
})();
// Subscribe to events
BSC.E.Subscribe("load", BSC.UI.Ws.Members.Applicants.Load, null, "members.applicants");


// Memberfinder.NewMembers
(function()
{
    BSC.UI.Ws.Members.NearBy = function()
    {
        var LoadProfiles = function(p1)
        {
            var guid = p1;
            var w = BSC.UI.Ws.Get(guid);
            var data = BSC.U.ParseQuery(w.query);

            if (!data.distance)
                data.distance = $("#" + guid + "_distance").val();

            if (!data.unit)
                data.unit = $("#" + guid + "_distanceunit").val();

            $("#" + guid + "_loader").hide();
            BSC.UI.ShowStatus(guid, "Loading...");
            data.view = (data.view) ? data.view : (BSC.D.P.Setting("members.nearby.view")) ? BSC.D.P.Setting("members.nearby.view") : "big";
            BSC.D.AjaxPost(w.cleanpath, data, function(res)
            {
                // Html
                $("#" + guid + "_result").html(res);
                $("#" + guid + "_loader").hide();
                $("#" + guid + "_result").show();
                // Event bind
                BSC.E.MapHrefs();
                var json = $("#" + guid + "_pagejson").getValue();
                var pagingData = BSC.D.JSON.Parse(json);
                BSC.UI.ProfilePaging.Bind(w.cleanpath, guid, data, pagingData, "members.nearby.view", { view: "big" });
                BSC.UI.HideStatus(guid, 200);
            }, "html", guid);
        };

        var load = function(p1)
        {
            LoadProfiles(p1);
        };


        var bind = function(p1)
        {
            var guid = p1;
            var w = BSC.UI.Ws.Get(guid);
            var data = BSC.U.ParseQuery(w.query);

            $("#" + guid + "_distance").bind("change", guid, function(e)
            {
                var guid = e.data;
                var w = BSC.UI.Ws.Get(guid);
                var data = BSC.U.ParseQuery(w.query);
                data.distance = $(this).val();

                BSC.UI.Ws.Get(guid).query = BSC.U.QueryToString(data);
                BSC.UI.Ws.Get(guid).uri = "/members/nearby/?" + BSC.UI.Ws.Get(guid).query;
                BSC.P.ChangeURI(BSC.UI.Ws.Get(guid).uri);

                LoadProfiles(guid);
            });

            $("#" + guid + "_distanceunit").bind("change", guid, function(e)
            {
                var guid = e.data;
                var w = BSC.UI.Ws.Get(guid);
                var data = BSC.U.ParseQuery(w.query);
                data.unit = $(this).val();

                BSC.UI.Ws.Get(guid).query = BSC.U.QueryToString(data);
                BSC.UI.Ws.Get(guid).uri = "/members/nearby/?" + BSC.UI.Ws.Get(guid).query;
                BSC.P.ChangeURI(BSC.UI.Ws.Get(guid).uri);

                LoadProfiles(guid);
            });

        };

        return {
            Load: load,
            Bind: bind
        };
    } ();
})();
// Subscribe to events
BSC.E.Subscribe("load", BSC.UI.Ws.Members.NearBy.Load, null, "members.nearby");
BSC.E.Subscribe("bind", BSC.UI.Ws.Members.NearBy.Bind, null, "members.nearby");



// Memberfinder.Applicants
(function()
{
    BSC.UI.Ws.Members.Premium = function()
    {
        var load = function(p1)
        {
            var guid = p1;

            var w = BSC.UI.Ws.Get(guid);
            var data = BSC.U.ParseQuery(w.query);

            $("#" + guid + "_loader").hide();
            BSC.UI.ShowStatus(guid, "Loading...");
            data.view = (data.view) ? data.view : (BSC.D.P.Setting("members.premium.view")) ? BSC.D.P.Setting("members.premium.view") : "big";
            BSC.D.AjaxPost(w.cleanpath, data, function(res)
            {
                // Html
                $("#" + guid + "_result").html(res);
                $("#" + guid + "_loader").hide();
                $("#" + guid + "_result").show();
                // Event bind
                BSC.E.MapHrefs();
                var json = $("#" + guid + "_pagejson").getValue();
                var pagingData = BSC.D.JSON.Parse(json);
                BSC.UI.ProfilePaging.Bind(w.cleanpath, guid, data, pagingData, "members.premium.view", { view: "big" });
                BSC.UI.HideStatus(guid, 200);
            }, "html", guid);
        };

        return {
            Load: load
        };
    } ();
})();
// Subscribe to events
BSC.E.Subscribe("load", BSC.UI.Ws.Members.Premium.Load, null, "members.premium");


// LatestOnline
(function()
{
	BSC.UI.Ws.Members.LatestOnline = function()
	{

		var load = function(p1)
		{
			var guid = p1;
		
			var w = BSC.UI.Ws.Get(guid);
			var data = BSC.U.ParseQuery(w.query);

			$("#" + guid + "_loader").hide();
			BSC.UI.ShowStatus(guid, "Loading...");
			data.view = (data.view) ? data.view : (BSC.D.P.Setting("members.latestonline.view")) ? BSC.D.P.Setting("members.latestonline.view") : "big";
			BSC.D.AjaxPost("/Members/LatestOnline", data, function(res)
			{
				// Html
				$("#" + guid + "_result").html(res);
				$("#" + guid + "_loader").hide();
				$("#" + guid + "_result").show();
				// Event bind
				BSC.E.MapHrefs();
				var json = $("#" + guid + "_pagejson").getValue();
				var pagingData = BSC.D.JSON.Parse(json);
				BSC.UI.ProfilePaging.Bind("/Members/LatestOnline", guid, data, pagingData, "members.latestonline.view", { view: "big" });
				BSC.UI.HideStatus(guid, 200);
			}, "html", guid);
		};

		return {
			Load: load
		};
	} ();
})();
// Subscribe to events
BSC.E.Subscribe("bind", BSC.UI.Ws.Members.LatestOnline.Load, null, "members.latestonline");

