﻿$(function () {

    var member = {},
        server_year = '',
        legacy_update = false,
        referral_id = '',
        fb_logIn = false,
        states_list = {};

    window.registration = '';
    window.isBranded = false;

    //states list    
    states_list["alabama"] = "AL";
    states_list["alaska"] = "AK";
    states_list["arizona"] = "AZ";
    states_list["arkansas"] = "AR";
    states_list["california"] = "CA";
    states_list["colorado"] = "CO";
    states_list["connecticut"] = "CT";
    states_list["delaware"] = "DE";
    states_list["florida"] = "FL";
    states_list["georgia"] = "GA";
    states_list["hawaii"] = "HI";
    states_list["idaho"] = "ID";
    states_list["illinois"] = "IL";
    states_list["indiana"] = "IN";
    states_list["iowa"] = "IA";
    states_list["kansas"] = "KS";
    states_list["kentucky"] = "KY";
    states_list["louisiana"] = "LA";
    states_list["maine"] = "ME";
    states_list["maryland"] = "MD";
    states_list["massachusetts"] = "MA";
    states_list["michigan"] = "MI";
    states_list["minnesota"] = "MN";
    states_list["mississippi"] = "MS";
    states_list["missouri"] = "MO";
    states_list["montana"] = "MT";
    states_list["nebraska"] = "NE";
    states_list["nevada"] = "NV";
    states_list["new hampshire"] = "NH";
    states_list["new jersey"] = "NJ";
    states_list["new mexico"] = "NM";
    states_list["new york"] = "NY";
    states_list["north carolina"] = "NC";
    states_list["north dakota"] = "ND";
    states_list["ohio"] = "OH";
    states_list["oklahoma"] = "OK";
    states_list["oregon"] = "OR";
    states_list["pennsylvania"] = "PA";
    states_list["rhode island"] = "RI";
    states_list["south carolina"] = "SC";
    states_list["south dakota"] = "SD";
    states_list["tennessee"] = "TN";
    states_list["texas"] = "TX";
    states_list["utah"] = "UT";
    states_list["vermont"] = "VT";
    states_list["virginia"] = "VA";
    states_list["washington"] = "WA";
    states_list["west virginia"] = "WV";
    states_list["wisconsin"] = "WI";
    states_list["wyoming"] = "WY";


    //clean up url

    referralUrls.NoBrandReferralUrl = referralUrls.NoBrandReferralUrl.substring(1, referralUrls.NoBrandReferralUrl.length);
    referralUrls.BrandReferralUrl = referralUrls.BrandReferralUrl.substring(1, referralUrls.BrandReferralUrl.length);


    //registration flow
    var RegisterFlow = (function () {

        var view = '0',
            step = {},
            retrieve_email = '',
            user = '',
			registrationService = "../Services/Registration.asmx/SignUp";

        step.one = function () {
            $(".join-header").removeClass('hidden');
            $(".steps").hide();
            $("#step-one").show();
            $("#update-acct").click(function () {
                step.two();
                return false;
            });
        }

        step.two = function () {
            $(".steps").hide();
            $(".join-header").addClass('hidden');
            var $container = $("#step-two"),
                msg = 'Repnation is now powered by Facebook connect. Please enter your existing login information below to update your account.';

            if (retrieve_email) {
                msg = 'Your password has been sent to ' + retrieve_email + '. <br /> Please enter your existing login information below to update your account.'
                $container.find("h3").html(msg);
                $("#forgot-password").hide();

            } else {
                $container.find("h3").html(msg);
                $("#forgot-password")
                    .unbind()
                    .bind("click", function () {
                        step.retrievePassword();
                        return false;
                    })
                    .show();
            }

            $container.show();

            $("#login-btn")
                .unbind()
                .bind("click", function () {

                    _gaq.push(['_trackPageview', '/Registration/UpdateAccount/Login']);

                    var email = $("#login-email").val(),
                                password = $("#login-password").val();

                    if (email == '' || password == '') {
                        alert("All fields are required.");
                        return false;
                    }
                    else if (!validateEmail(email)) {
                        alert("Invalid email address.");
                        return false;
                    }


                    $.ajax({
                        url: "../Services/Registration.asmx/LogInDirect",
                        type: "post",
                        contentType: "application/json",
                        dataType: "json",
                        data: JSON.stringify({ username: email, password: password }),
                        success: function (result) {
                            var result = result.d;

                            if (result.Metadata) {
                                var msg = result.Metadata;
                                _gaq.push(['_trackPageview', '/Registration/UpdateAccount/IncorrectLogin']);
                                if (msg == "Invalid Signin.") {
                                    step.three();
                                } else {
                                    step.three({ msg: result.Metadata });
                                }
                            } else {

                                if (result.IsSignedIn && result.IsUpgraded == false) {
                                    _gaq.push(['_trackPageview', '/Registration/UpdateAccount/Connect']);
                                    legacy_update = true;
                                    step.four(result.User);
                                }
                                else if (result.IsSignedIn && result.IsMember && result.IsUpgraded) {
                                    _gaq.push(['_trackPageview', '/Registration/UpdateAccount/Connect']);
                                    legacy_update = true;
                                    step.seven();
                                }
                                else if (!result.IsMember) {
                                    _gaq.push(['_trackPageview', '/Registration/UpdateAccount/IncorrectLogin']);
                                    step.three();
                                }
                            }
                        }
                    });

                    return false;
                });

        }

        step.three = function (args) {
            var $step_three = $("#step-three"),
                msg = 'We\'re sorry, that username and password do not match any existing account';

            $(".join-header").addClass('hidden');
            $step_three.find('.action').show();

            if (retrieve_email) {
                msg = 'We\'re sorry, we can\'t find any accounts associated with ' + retrieve_email;
            }
            if (args) {
                msg = args.msg;
                $step_three.find('.action').hide();
            }

            $(".steps").hide();
            $step_three
                .find('h3')
                .eq(0)
                .html(msg);

            $step_three.show();

            $("#try-again").click(function () {
                retrieve_email = '';
                $step_three.hide();
                step.two();
            });

        }

        step.four = function (result) {
            var $el = $("#step-four"),
                user_name = result.FirstName + " " + result.LastName.substring(0, 1);

            $(".join-header").addClass('hidden');
            $(".steps").hide();

            $el
                .show()
                .find(".user-name")
                .text(user_name);
        }

        step.five = function (user) {

            _gaq.push(['_trackPageview', '/Registration/Confirmation']);
            $(".steps").hide();
            $("#step-five").show();
            $(".join-header").removeClass('hidden');

            var collegeId = '',
                selectedCollegeName = '',
                highSchoolId = '',
                selectedHighSchoolName = '';

            function initAgeGroup() {

                //age group validation

                var age_group = $("input[name='age-group']:checked");

                var minLength = 2;

                if ($.browser.msie && parseInt($.browser.version) == 7) {
                    minLength = 4;
                }

                var getColleges = function () {
                    var $el = $("#college-list"),
                        collegeCache = {},
                        lastXhr = '';

                    $("#college-name").autocomplete({

                        source: function (request, response) {
                            var term = request.term;
                            if (term in collegeCache) {
                                response($.map(collegeCache[term], function (item) {
                                    return {
                                        label: item.Name,
                                        value: item.Name,
                                        id:item.Id
                                    }
                                }));

                                return;
                            }

                            lastXhr = $.ajax({
                                type: "POST",
                                contentType: "application/json",
                                data: JSON.stringify({ letter: request.term }),
                                url: "../Services/ListServices.asmx/GetCollegesStartingWith",
                                dataType: "json",
                                success: function (data, status, xhr) {
                                    collegeCache[term] = data.d;
                                    if (xhr === lastXhr) {
                                        response($.map(data.d, function (item) {
                                            return {
                                                label: item.Name,
                                                value: item.Name,
                                                id: item.Id
                                            }
                                        }));


                                    }
                                }
                            });
                        },
                        minLength: minLength,
                        select: function (event, ui) {
                            collegeId = ui.item.id;
                            selectedCollegeName = ui.item.label;
                        }
                    });

                };

                var getHighSchools = function () {
                    var $el = $("#highschool-list");
                        schoolCache = {},
                        lastXhr = '';

                        $("#high-school-name").autocomplete({

                            source: function (request, response) {
                                var term = request.term;
                                if (term in schoolCache) {
                                    response($.map(schoolCache[term], function (item) {
                                        return {
                                            label: item.Name,
                                            value: item.Name,
                                            id:item.Id
                                        }
                                    }));

                                    return;
                                }

                                lastXhr = $.ajax({
                                    type: "POST",
                                    contentType: "application/json",
                                    data: JSON.stringify({ letter: request.term }),
                                    url: "../Services/ListServices.asmx/GetHighSchoolsStartingWith",
                                    dataType: "json",
                                    success: function (data, status, xhr) {
                                        schoolCache[term] = data.d;
                                        if (xhr === lastXhr) {
                                            response($.map(data.d, function (item) {
                                                return {
                                                    label: item.Name,
                                                    value: item.Name,
                                                    id: item.Id
                                                }
                                            }));


                                        }
                                    }
                                });
                            },
                            minLength: minLength,
                            select: function (event, ui) {
                                highSchoolId = ui.item.id;
                                selectedHighSchoolName = ui.item.label;
                            }
                        });
                };

                switch (age_group.val().toLowerCase()) {

                    case '0': //high school
                        var $el = $("#high-school-group");
                        getHighSchools();
                        $el.show();
                        $el.find('input, select').addClass("required");
                        break;

                    case '1': //college
                        var $el = $("#college-group");
                        getColleges();
                        $el.show();
                        $el.find('input, select').addClass("required");
                        break;

                }

                $(".age-group input").click(function () {
                    var $this = $(this),
                                $groupType = $(".group-type"),
                                val = $this.val().toLowerCase();

                    $groupType
                                .hide()
                                .find(".required")
                                .removeClass("required");

                    $groupType
                                .find(".warning")
                                .removeClass("warning");

                    if (val == '0') {
                        var $el = $("#high-school-group");
                        getHighSchools();
                        $el.show();
                        $el.find('input').addClass("required");
                    }

                    else if (val == '1') {
                        var $el = $("#college-group");
                        getColleges();
                        $el.show();
                        $el.find('input').addClass("required");
                    }

                });

            }

            function initPhoneValidation() {

                var $el = $(".phone input"),
                            total = $el.length;

                $(".phone input").each(function (i) {
                    i = i + 1;
                    var el = $(this);
                    el.data("index", i);
                    el.unbind().bind("keyup", phoneNextTab);
                });


                function phoneNextTab(e) {
                    var $el = $(e.target),
                                max_length = $el.attr('maxlength'),
                                char_length = '',
                                index = $el.data("index");

                    $el.val(forceInt($el.val()));
                    char_length = $el.val().length;


                    if (index != total) {
                        if (char_length == max_length) {
                            $el.next().focus();
                        }
                    }

                }
            }

            function validateSchool() {

                var valid = false;

                if ($(".age-group input:checked").val() == 0) {

                    if (!highSchoolId) {
                        alert("You must pick a school from the dropdown menu.");
                        $("#high-school-name")
                            .val('')
                            .focus();
                        valid = false;
                    }
                    else {
                        valid = true;
                    }

                }
                else if ($(".age-group input:checked").val() == 1) {

                    if (!collegeId) {
                        alert("You must pick a school from the dropdown menu.");
                        $("#college-name")
                            .val('')
                            .focus();
                        valid = false;
                    }
                    else {
                        valid = true;
                    }

                }
                else {
                    valid = true;
                }

                return valid;

            };


            $(".live-search")
                .unbind()
                .bind("keypress", function (event) {
                    if (event.keyCode == '13') {
                        event.preventDefault();
                        $(".submit-btn").trigger("click");
                    }
                });

            $("#zip")
                .unbind()
                .bind("keyup", function () {
                    var el = $(this);
                    el.val(forceInt(el.val()));
                });

            $("#city")
                .unbind()
                .bind("keyup", function () {
                    var el = $(this);
                    el.val(forceString(el.val()));
                });

            $(".submit-btn")
                .unbind()
                .bind("click", function () {
                    var valid = false,
                                data = {},
                                i = 0,
                                $el = $(this),
                                $warning = $("div.warning"),
                                context = $("#step-five"),
                                length = $(".required").length,
                                msg = "Please fill out all required fields.";

                    $warning.html(msg);

                    for (i; i <= length; i++) {

                        var el = $(".required", context).eq(i),
                                    label = el.parents('.field-col').find('label').eq(0);

                        if (el.parents('div').eq(0).hasClass('group-type')) {
                            label = el.parents('.group-type').find('label').eq(0);
                        }

                        if (!el.val()) {
                            $(".warning", context).fadeIn();
                            label.addClass('warning');
                            valid = false;
                        }
                        else if (el.is("select")) {
                            var value = el.val();
                            if (value == "0" || !value) {
                                $(".warning", context).fadeIn();
                                label.addClass('warning');
                                valid = false;
                            } else {
                                if (label.hasClass('warning')) {
                                    label.removeClass('warning');
                                }
                            }
                        }
                        else if (el.hasClass("email")) {
                            if (!validateEmail(el.val())) {
                                label.addClass('warning');
                                valid = false;
                            } else {
                                label.removeClass('warning');
                            }

                        }
                        else {

                            if (label.hasClass('warning')) {
                                label.removeClass('warning');
                            }
                        }

                    };

                    if ($("#twitter-handler").val()) {
                        var $el = $("#twitter-handler"),
                            label = $el.prev();
                        handle = $el.val(),
                            reg = /@([A-Za-z0-9_]+)/;
                        if (handle != '' && !handle.match(reg)) {
                            label.addClass('warning');
                        } else {
                            label.removeClass('warning');
                        }

                    }

                    if ($("label.warning", context).length == 0) {
                        if (validateSchool()) {

                            if ($("#term").is(":checked") == false) {
                                msg = "Please agree to the Terms of Service."
                                $warning
                                    .html(msg)
                                    .show();
                            }

                            else {
                                $warning.hide();
                                var phoneNum = $("#area-code").val() + $("#city-code").val() + $("#phone-num").val(),
									userBirthday = $("#dob-month").val() +"/"+$("#dob-day").val()+"/"+$("#dob-year").val();

                                $el.attr("disabled", true);

								

                                data = {

                                    firstname: $("#first-name").val(),
                                    lastname: $("#last-name").val(),
                                    email: $("#email").val(),
                                    address1: $("#address").val(),
                                    address2: $("#address2").val(),
                                    city: $("#city").val(),
                                    state: $("#state").val(),
                                    zipcode: $("#zip").val(),
                                    phone: phoneNum,
                                    birthdate: userBirthday,
                                    gender: $("#gender").val(),
                                    agegroup: $("input[name='age-group']:checked").val(),
                                    hs_id: highSchoolId,
                                    hs_grad_season: $("#high-school-grad-season").val(),
                                    hs_grad_year: $("#high-school-grad-year").val(),
                                    college_id: collegeId,
                                    college_grad_season: $("#college-grad-season").val(),
                                    college_grad_year: $("#college-grad-year").val(),
                                    twitterhandle: $("#twitter-handler").val(),
                                    referralId: isBranded ? referral_id : ""
                                };

                                $.ajax({
                                    url: registrationService,
                                    type: "post",
                                    contentType: "application/json",
                                    dataType: "json",
                                    data: JSON.stringify(data),
                                    success: function (result) {

                                        var result = result.d;

                                        $el.attr("disabled", false);

                                        if (result.Metadata) {

                                            alert(result.Metadata);

                                        } else {

                                            $("#step-five").hide();

                                            if (result.IsLikelyRep) {
                                                step.six(result.LikelyRep);
                                                $("#step-six").show();
                                            }
                                            else {
                                                step.seven();
                                            }
                                        }
                                    }
                                });
                            }
                        }
                    }
                    return false;
                });

            prePopulateFBData(user);
            initAgeGroup();
            initPhoneValidation();

        }

        step.six = function (user) {
            var $el = $(".user-info"),
                        user_info = user.FirstName + " " + user.LastName + "<br />" + user.City + ", " + user.State;

            $(".join-header").addClass('hidden');
            $el.find("span").html(user_info);
            $el.find("img").attr('src', "../" + user.ImageUrl);

            _gaq.push(['_trackPageview', '/Registration/Duplicate']);

            $("#btn-update-account")
                .unbind()
                .bind("click", function () {
                    _gaq.push(['_trackPageview', '/Registration/UpdateAccount']);
                    step.two();
                    return false;
                });


        }

        step.seven = function () {
            var url = referralUrls.NoBrandReferralUrl;
            if (referral_id && isBranded == true) {
                url = referralUrls.BrandReferralUrl + referral_id;
            }
            if (legacy_update) {
                $(".steps").hide();
                $("#facebook-steps .close").hide();
                $(".join-header").addClass('hidden');
                $("#step-seven").show();

                $("#step-seven button")
                .unbind()
                .click(function () {

                    if (referral_id) {
                        _gaq.push(['_trackPageview', '/JobPosting/ContinueOverlay']);
                    } else {
                        _gaq.push(['_trackPageview', '/Registration/RegistrationOverlay']);
                    }




                    window.location.href = url;
                    return false
                });
            } else {
                $("#facebook-steps").hide();
                window.location.href = url;
            }

        }

        step.retrievePassword = function () {
            $(".join-header").addClass('hidden');
            $("#step-two").hide();
            $("#step-forgot-pass").show();


            $("#btn-retrive-pass")
                .unbind()
                .bind("click", function () {
                    var $el = $(this),
                        email = $("#forgot-pass-email").val();

                    _gaq.push(['_trackPageview', '/Registration/UpdateAccount/PasswordRecovery']);

                    if (email != '') {

                        showProgress();
                        $el.attr("disabled", true);
                        $.ajax({
                            type: "POST",
                            contentType: "application/json",
                            url: "../Services/Registration.asmx/RecoverPassword",
                            dataType: "json",
                            data: JSON.stringify({ email: email }),
                            success: function (result) {
                                var result = result.d;
                                $el.attr("disabled", false);
                                hideProgress();
                                if (result.MessageSent) {
                                    _gaq.push(['_trackPageview', '/Registration/UpdateAccount/PasswordRecovery/Confirmation']);
                                    retrieve_email = email;
                                    $("#step-forgot-pass").hide();
                                    step.two();

                                } else {
                                    var msg = result.Metadata;

                                    if (msg == "Invalid Signin.") {
                                        retrieve_email = email;
                                        step.three();
                                    } else {
                                        step.three({ msg: msg });
                                    }
                                }
                            }
                        });
                    } else {
                        alert("Invalid email address.");
                    }
                    return false;

                })

        }

        function setupRegistration() {

            var screenWidth = parseInt($(window).width()),
            $el = $("#facebook-steps");

            showModal();

            $el
            .css({
                left: (screenWidth / 2) - ($el.width() / 2)
            })
            .fadeIn();

        }

        function goToStep(args) {
            step[args]();
        }

        function init(args, obj) {


            if (referral_id) {
                _gaq.push(['_trackPageview', '/JobPosting/RegistrationOverlay']);
            } else {
                _gaq.push(['_trackPageview', '/Registration/RegistrationOverlay']);
            }

            if (window.isBranded) {
                var logo_bg_src = $("#clientLogo").css("background-image"),
                    logo_src = logo_bg_src.replace(/^url\(["']?/, '').replace(/["']?\)$/, '');

                if (logo_src != "none") {
                    var $img = $("<img>", { src: logo_src, width: '50%' });

                    $(".brand")
                    .append($img)
                    .show();
                }

            }
            else {
                $(".brand").hide();
            }

            if (args == "fb") {
                if (obj) {
                    fbConnect(obj);
                } else {
                    fbConnect();
                }
            }
			else if(args == "portal"){
				registrationService = "../Services/Registration.asmx/SignUpPortal";
                setupRegistration();
                step.five();
			}
            else if (args == "update") {
                setupRegistration();
                step.two();
            }
            else {
                setupRegistration();
                step.one();
            }

            $("#facebook-steps .close")
                .unbind()
                .bind("click", function () {
                    registration.destroy();
                });

        }

        function fbConnect(user) {
            if (!user) {
                $.ajax({
                    url: "../Services/Registration.asmx/Login",
                    type: "post",
                    contentType: "application/json",
                    dataType: "json",
                    data: "{}",
                    success: function (data) {debugger;
                        var data = data.d,
                            url = window.location.href;

                        if (data.IsMember && !isBranded && !referral_id) {
                            url = referralUrls.NoBrandReferralUrl;
                            window.location.href = url;
                        }

                        else if (data.IsMember && !isBranded && referral_id) {
                            url = referralUrls.NoBrandReferralUrl;
                            window.location.href = url;
                        }

                        else if (data.IsMember && isBranded && referral_id) {
                            url = referralUrls.BrandReferralUrl + referral_id;
                            window.location.href = url;
                        }
                        else {
                            setupRegistration();
                            step.five(JSON.parse(data.Info));
                        }

                    }
                });
            } else {
                //console.log("fb authorise user but not signed in");
                setupRegistration();
                step.five(JSON.parse(user));
            }

        }

        function showModal() {
            if ($(".modal-bg").length == 0) {
                var $win = $(document),
					height = screen.height;

                $div = $("<div>");

                $div
					.addClass("modal-bg")
					.css({
					    height: height,
					    opacity: 0.7
					});

                $("body")
                    .append($div)
                    .fadeIn();
            } else {
                $(".modal-bg").fadeIn();
            }
        }

        function showProgress() {
            var $parent = $("#facebook-steps .copies"),
                $el = '',
                container_width = $parent.width(),
                container_height = $parent.height(),
                pos_x = '',
                pox_y = '';

            if ($parent.find(".loader").length == 0) {
                $parent
                    .append($("<img>", { "src": "../../Images/loading.gif", "class": "loader" }));
            }

            $el = $parent.find(".loader");

            $el
                .css({
                    left: container_width / 2 - $el.width() / 2,
                    top: container_height / 2 + $el.height() / 2
                })
                .show();
        }

        function hideProgress() {
            $("#facebook-steps .loader").hide();
        }

        function prePopulateFBData(user) {

            var city = '',
                state = '';

			if(user)
			{

				if (user.location) {
					var location = user.location.name.split(',');
					city = location[0];
					state = location[1].replace(' ', '').toLowerCase();
					state = states_list[state] || state;
				}

				function parseBirthDay(date) {

					if (date) {

						date = date.split("/");

						var month = date[0],
									day = date[1],
									year = date[2] || '';

						$("#dob-month").val(month);


						if (day.substring(0, 1) == 0) {
							day = day.substring(1, 2);
						}

						$("#dob-day").val(day);

						if (year) {
							$("#dob-year").val(year)
						}
					};

				}

				function parseSchools(schools) {

					if (schools) {

						var school = '',
						school_year = '';

						if (schools) {

							school = _.max(schools, function (school) {
								if (school.year) {
									return school.year.name;
								} else {
									return '';
								}
							});
						} else {
							school = '';
						}

						if (school.year) {
							school_year = school.year.name;
						}

						if (school_year >= parseInt(server_year)) {

							if (school.type == "College") {
								//$("#college-name").val(school.school.name);
								$("#college-grad-year").val(school_year);
								$("input[value='1']").attr("checked", true);
							}
							else if (school.type == "High School") {
								//$("#high-school-name").val(school.school.name);
								$("#high-school-grad-year").val(school_year);
								$("input[value='0']").attr("checked", true);
							};

						}
						else {
							$("input[value='2']").attr("checked", true);
						}
					}
					else {
						$("input[value='2']").attr("checked", true);
					}

				}

				$("#first-name").val(user.first_name);
				$("#last-name").val(user.last_name);
				$("#email").val(user.email);
				$("#city").val(city);
				$("#state").val(state);
				$("#state [title='" + state + "']").attr("selected", true);

				if (user.gender == "male") {
					$("#gender").val("M");
				}
				else {
					$("#gender").val("F");
				}
				parseBirthDay(user.birthday);
				parseSchools(user.education);

			}

        }

        function destroy() {

            var $steps = $(".steps");
            retrieve_email = '';
            $steps.find("input[type='text']").val('');
            $steps.find("input[type='password']").val('');
            $steps.find("input[type='checkbox']").attr("checked", false);
            $steps.find("select option:first-child").attr("selected", false);
            $steps.find("#forgot-password").show();
            $("#facebook-steps").hide();
            $("#facebook-steps label.warning").removeClass('warning');
            $("#facebook-steps div.warning").hide();
            $(".modal-bg").hide();
            clearObj(registration);
            window.isBranded = false;
        }

        return {
            init: init,
            fbConnect: fbConnect,
            goToStep: goToStep,
            destroy: destroy
        };

    } ());

    window.signUp = function () {
        registration = RegisterFlow;
        registration.init();
        return false;
    }

    var clearObj = function (obj) {
        delete obj;
    }

    var getQueryByName = function (name) {
        name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
        var regexS = "[\\?&]" + name + "=([^&#]*)";
        var regex = new RegExp(regexS);
        var results = regex.exec(window.location.href);
        if (results == null)
            return "";
        else
            return decodeURIComponent(results[1].replace(/\+/g, " "));
    }

    function forceString(str) {
        var reg = /([a-zA-Z]|\s)/g,
                            matches = str.match(reg);

        if (matches) {
            return matches.join("");
        } else {
            return "";
        }
    };

    function validateEmail(email) {
        var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
        return emailPattern.test(email);
    };

    function forceInt(number) {
        var reg = /(\d)/g,
            matches = number.match(reg);

        if (matches) {
            return matches.join("");
        } else {
            return "";
        }
    };

    function upgradeAccount() {
        registration = RegisterFlow;
        registration.init("update");
    };

    referral_id = getQueryByName("OpportunityId");

    window.memberCheck = function () {
        fb_logIn = true;
        $.ajax({
            url: "../Services/Registration.asmx/LogIn",
            type: "post",
            contentType: "application/json",
            dataType: "json",
            data: "{}",
            success: function (data) {
                var data = data.d;
                member = data;

                url = window.location.href;

                if (member.IsMember && !isBranded && !referral_id) {
                    url = referralUrls.NoBrandReferralUrl;
                    window.location.href = url;
                }

                else if (member.IsMember && !isBranded && referral_id) {
                    url = referralUrls.NoBrandReferralUrl;
                    window.location.href = url;
                }

                else if (member.IsMember && isBranded && referral_id) {
                    url = referralUrls.BrandReferralUrl + referral_id;
                    window.location.href = url;
                }

                else if (member.IsAuthorized) {
                    server_year = member.ServerYear;
                    registration = RegisterFlow;
                    registration.init("fb", member.Info);

                }

            }
        });

    }

    window.setBrand = function (value) {
        window.isBranded = value;
    }

    window.flashRegistration = function () {
        _gaq.push(['_trackPageview', '/Registration/MainFacebookConnect']);
        window.isBranded = false;
        signUp();
    }


	if(window.FB) {
		FB.init({ appId: window.fbID, status: true, cookie: true, xfbml: true, oauth:true });

		FB.Event.subscribe('auth.sessionChange', function (response) {
		    if (response.authResponse && fb_logIn) {

				if (registration && !legacy_update) {
					registration.fbConnect();
				}
				else {

					if (legacy_update) {

						$.ajax({
							type: "POST",
							contentType: "application/json",
							url: "../Services/Registration.asmx/Upgrade",
							dataType: "json",
							data: "{}",  //jquery will not set the content-type properly if there is no object
							success: function (data) {
								data = data.d;
								if (data.ContainsMetadata) {
									alert(data.Metadata);
								}
								else {
									if (data.IsUpgraded) {
										registration.goToStep("seven");
									}
									else {
										alert("Upgrade failed.")
									}
								}
							}
						});

					} else {

						registration = RegisterFlow;
						registration.init("fb");

					}
				}
			}
			else {
				//alert('d');
				// The user has logged out, and the cookie has been cleared
			}

		});
	}

    if (getQueryByName("getUpgrade") == "true") {
        upgradeAccount();
    }


    $("#update-account").click(function () {
        _gaq.push(['_trackPageview', '/Registration/SideFacebookConnect']);
        upgradeAccount();
        return false;
    });

    $(".join-now").click(function () {
        signUp();
        return false;
    });


    //for job posting page
    $("#signup-now").click(function () {
        _gaq.push(['_trackPageview', '/JobPosting/RegisterFacebookConnect']);
        window.isBranded = false;
        signUp();
        return false;
    });

    $(".not-interested").click(function () {
        $(this).next().slideToggle();
        return false;

    })

});

