﻿$jq.namespace('MatchCore.CP');

$jq(document).ready(function() {
	MatchCore.CP.QuickSearch.init();
});

MatchCore.CP.QuickSearch = function() {
    var deepLink = {
        gc: '',
        tr: '',
        age: '',
        uage: '',
        ua: '',
        pc: '',
        dist: '',
        po: '',
        cl: '',
        et: '',
        oln: '',
        lfeet: '',
        linches: '',
        ufeet: '',
        uinches: '',
        bd: '',
        hr: '',
        ey: '',
        ms: '',
        rel: '',
        hc: '',
        wc: '',
        hp: '',
        lp: '',
        lv: '',
        inc: '',
        job: '',
        pol: '',
        dt: '',
        dt: '',
        bf: '',
        dk: '',
        sk: '',
        ed: '',
        ex: '',
        as: '',
        r2s: '',
        cpp: '',
        dis: ''
    };
    var _failureDelegate = new MatchCore.Delegate();
    var _successDelegate = new MatchCore.Delegate();
    var _busy = false;

    var populateForm = function() {
        var gc = ($jq.readCookie('MatchSearch') != undefined && $jq.readCookie('MatchSearch')['SC01'] != undefined) ? $jq.readCookie('MatchSearch')['SC01'] : "2";
        var tr = ($jq.readCookie('MatchSearch') != undefined && $jq.readCookie('MatchSearch')['SC02'] != undefined) ? $jq.readCookie('MatchSearch')['SC02'] : "1"
        var lage = ($jq.readCookie('MatchSearch') != undefined) ? $jq.readCookie('MatchSearch')['SC03'] : null;
        var uage = ($jq.readCookie('MatchSearch') != undefined) ? $jq.readCookie('MatchSearch')['SC04'] : null;
        var po = ($jq.readCookie('MatchSearch') != undefined) ? $jq.readCookie('MatchSearch')['SC05'] : null;
        var oln = ($jq.readCookie('OLN') != undefined) ? $jq.readCookie('OLN')['OLNVAL'] : null;

        $jq('#formSearch INPUT[@name="gc"][@value="' + gc + '"]').attr("checked", "checked");
        $jq('#formSearch INPUT[@name="tr"][@value="' + tr + '"]').attr("checked", "checked");

        //PhotoOnly
        if (($jq('#formSearch INPUT[@name="po"]:hidden').length) != 1) {
            if (($jq('#formSearch INPUT[@name="po"]').length) == 1) {
                $jq('#formSearch INPUT[@name="po"]').removeAttr("checked");
                if (po == null) {
                    $jq('#formSearch INPUT[@name="po"]').attr("checked", "checked");
                }
                else if (po == "1") {
                    $jq('#formSearch INPUT[@name="po"]').attr("checked", "checked");
                }
            }

            //OnlineNow
            if (($jq('#formSearch INPUT[@name="oln"]:hidden').length) != 1) {
                if (($jq('#formSearch INPUT[@name="oln"]').length) == 1) {
                    $jq('#formSearch INPUT[@name="oln"]').removeAttr("checked");
                    if (oln == "1") {
                        $jq('#formSearch INPUT[@name="oln"]').attr("checked", "checked");
                    }
                }
            }
        }

        if (($jq('#formSearch select[@name="lage"]').length) == 1)
            $jq('#formSearch select[@name="lage"]').val(lage).selected = true;
        else
            $jq('#formSearch INPUT[@name="lage"]').val(lage);

        if (($jq('#formSearch select[@name="uage"]').length) == 1)
            $jq('#formSearch select[@name="uage"]').val(uage).selected = true;
        else
            $jq('#formSearch INPUT[@name="uage"]').val(uage);

        try {
            $jq('#formSearch select[@name="gc"]').val(gc).selected = true;
            $jq('#formSearch select[@name="tr"]').val(tr).selected = true;
        }
        catch (e) { }

        $jq('#formSearch INPUT[@name="pc"]').val($jq.readCookie('MatchSearch') != undefined ? $jq.readCookie('MatchSearch')['SC08'] : '');
        if ($jq('#formSearch INPUT[@name="dist"]:hidden').length == 0)
            $jq('#formSearch INPUT[@name="dist"]').val($jq.readCookie('MatchSearch') != undefined ? $jq.readCookie('MatchSearch')['SC07'] : '');
    }

    var consumeForm = function() {
        deepLink.gc = ($jq('#formSearch SELECT[@name="gc"]').length) == 1 ? ($jq('#formSearch SELECT[@name="gc"]').val()) : ($jq('#formSearch INPUT[@name="gc"][@checked]').val());
        deepLink.tr = ($jq('#formSearch SELECT[@name="tr"]').length) == 1 ? ($jq('#formSearch SELECT[@name="tr"]').val()) : ($jq('#formSearch INPUT[@name="tr"][@checked]').val());

        deepLink.lage = ($jq('#formSearch SELECT[@name="lage"]').length) == 1 ? ($jq('#formSearch SELECT[@name="lage"]').val()) : ($jq('#formSearch INPUT[@name="lage"][@checked]').val());
        deepLink.uage = ($jq('#formSearch SELECT[@name="uage"]').length) == 1 ? ($jq('#formSearch SELECT[@name="uage"]').val()) : ($jq('#formSearch INPUT[@name="uage"][@checked]').val());

        var tlage = parseInt(deepLink.lage);
        var tuage = parseInt(deepLink.uage);

        if (tlage == NaN)
            tlage = 25;
        if (tuage == NaN)
            tuage = 45;
            
        if (tlage > tuage) {
            deepLink.lage = ($jq('#formSearch SELECT[@name="lage"]').length) == 1 ? ($jq('#formSearch SELECT[@name="uage"]').val()) : ($jq('#formSearch INPUT[@name="uage"][@checked]').val());
            deepLink.uage = ($jq('#formSearch SELECT[@name="uage"]').length) == 1 ? ($jq('#formSearch SELECT[@name="lage"]').val()) : ($jq('#formSearch INPUT[@name="lage"][@checked]').val());
        }

        deepLink.ua = deepLink.uage;

        deepLink.pc = $jq('#formSearch INPUT[@name="pc"]').val();
        deepLink.dist = ($jq('#formSearch INPUT[@name="dist"]').length) == 1 ? ($jq('#formSearch INPUT[@name="dist"]').val()) : '';
        deepLink.po = ($jq('#formSearch INPUT[@name="po"]:hidden').length) == 1 ? ($jq('#formSearch INPUT[@name="po"]').val()) : ($jq('#formSearch INPUT[@name="po"][@checked]').val() != null ? "1" : "0");
        deepLink.cl = $jq('#formSearch INPUT[@name="cl"]').val();
        deepLink.et = $jq('#formSearch INPUT[@name="et"]').val();
        deepLink.oln = ($jq('#formSearch INPUT[@name="oln"]:hidden').length) == 1 ? ($jq('#formSearch INPUT[@name="oln"]').val()) : ($jq('#formSearch INPUT[@name="oln"][@checked]').val() != null ? "1" : "0");
        deepLink.lfeet = $jq('#formSearch select[@name="lfeet"]').val();
        deepLink.linches = $jq('#formSearch select[@name="linches"]').val();
        deepLink.ufeet = $jq('#formSearch select[@name="ufeet"]').val();
        deepLink.uinches = $jq('#formSearch select[@name="uinches"]').val();
        deepLink.bd = deli($jq('#formSearch INPUT[@name="bd"][@checked]'));
        deepLink.hr = deli($jq('#formSearch INPUT[@name="hr"][@checked]'));
        deepLink.ey = deli($jq('#formSearch INPUT[@name="ey"][@checked]'));
        deepLink.ms = deli($jq('#formSearch INPUT[@name="ms"][@checked]'));
        deepLink.rel = deli($jq('#formSearch INPUT[@name="rel"][@checked]'));
        deepLink.hc = deli($jq('#formSearch INPUT[@name="hc"][@checked]'));
        deepLink.wc = deli($jq('#formSearch INPUT[@name="wc"][@checked]'));
        deepLink.hp = deli($jq('#formSearch INPUT[@id="hp"][@checked]'));
        deepLink.lp = deli($jq('#formSearch INPUT[@id="lp"][@checked]'));
        deepLink.lv = deli($jq('#formSearch INPUT[@name="lv"][@checked]'));
        deepLink.inc = deli($jq('#formSearch INPUT[@name="inc"][@checked]'));
        deepLink.job = deli($jq('#formSearch INPUT[@name="job"][@checked]'));
        deepLink.pol = deli($jq('#formSearch INPUT[@name="pol"][@checked]'));
        deepLink.dt = deli($jq('#formSearch INPUT[@name="dt"][@checked]'));
        deepLink.dt = deli($jq('#formSearch INPUT[@name="da"][@checked]'));
        deepLink.bf = deli($jq('#formSearch INPUT[@name="bf"][@checked]'));
        deepLink.dk = deli($jq('#formSearch INPUT[@name="dk"][@checked]'));
        deepLink.sk = deli($jq('#formSearch INPUT[@name="sk"][@checked]'));
        deepLink.ed = deli($jq('#formSearch INPUT[@name="ed"][@checked]'));
        deepLink.ex = deli($jq('#formSearch INPUT[@name="ex"][@checked]'));
        deepLink.as = deli($jq('#formSearch INPUT[@name="as"][@checked]'));
        deepLink.r2s = $jq('#formSearch INPUT[@name="r2s"]').val();
        deepLink.cpp = $jq('#formSearch INPUT[@name="cpp"]').val();
        deepLink.dis = $jq('#formSearch INPUT[@name="dis"]').val();
    }

    var failure = function(response) {
        if (_failureDelegate.count() > 0)
            _failureDelegate.fire(response);
        else
            MatchCore.CP.Messaging.show(response.Messages);
    }

    var success = function(response) {
        if (_successDelegate.count() > 0)
            _successDelegate.fire(response);
    }

    var deli = function(opts) {
        var deliString = '';
        if (opts != undefined) {
            for (var i = 0; i < opts.length; i++) {
                if (i == 0)
                    deliString = $jq(opts[i]).val();
                else
                    deliString = deliString + "," + $jq(opts[i]).val();
            }
        }
        return deliString;
    }

    return {
        init: function(opts) {
            if (opts) {
                if (opts.fail)
                    _failureDelegate.add(opts.fail);

                if (opts.success)
                    _successDelegate.add(opts.success);
            }

            $jq('.btnQuickSearch').bind('click', this.submit);
            populateForm(function(response) {
                return;
            });
        },

        submit: function() {
            window.location.href = MatchCore.CP.QuickSearch.getLocation();
        },

        getLocation: function() {
            consumeForm();
            var searchString = "";
            var baseURL = "/search/search.aspx?EXEC=GO&SB=radius";
            searchString = "&lid=226&cl=" + deepLink.cl;
            for (key in deepLink) {
                if (deepLink[key] != undefined && deepLink[key] != "" && deepLink[key] != '') {
                    if (key == "cl") {
                        continue;
                    }
                    else if (key == "dis") {
                        searchString = searchString + "&do=" + deepLink[key];
                    }
                    else {
                        searchString = searchString + "&" + key + "=" + deepLink[key];
                    }
                }
            }

            return baseURL + searchString;
        },

        onSuccess: function(handler) {
            _successDelegate.add(handler);
        },

        onFailure: function(handler) {
            _failureDelegate.add(handler);
        }
    };
} ();
