﻿
jQuery.fn.formSearchPost = function(formSelector, urlPfx) {
    $(document).ready(function() {
        $(formSelector).validate({
            rules: {
                keyword: "required"
            },
            messages: {
                keyword: "please enter a search text."
            }
        });

        $(formSelector).submit(function() {

            var f = $(this);
            var kw, pc, mc, np, dp;
            var res;

            $(formSelector + ' input').each(function() {
                switch (this.name) {
                    case 'keyword':
                        kw = this.value;
                        break;

                    case 'prdCountry':
                        pc = this.value;
                        break;

                    case 'merchCountry':
                        mc = this.value;
                        break;

                    case 'numItemsRequested':
                        np = this.value;
                        break;

                    case 'displayPage':
                        dp = this.value;
                        break;
                }
            });

            var s = '/' + kw + '/' + pc + '/' + mc + '/' + dp + '/' + np;
            var action = f.attr('action') + s;

            $.getJSON(action,
                function(data) {
                    $('#searchResults').html('');
                    res = data;
                    $.buildSearchResults(res, action, urlPfx);
                });
            return false;
        });

        jQuery().ajaxStart(function() {

        });

        jQuery().ajaxStop(function() {

        });

        jQuery().ajaxComplete(function() {

        });
    });
};

jQuery.buildSearchResults = function(items, urlPfx) {
    var portal = urlPfx.split("/");
    var results = $('#searchResults');
    var mainContent = $('#mainContent');
    var subContent = $('#subContent');
    var genericContent = $('#genericContent');
    var pannel = $('<div>');
    var headTxt = $('<h2>').text('Search Results for: ' + items.query).appendTo(pannel);
    var content = $('<div>').addClass('content').appendTo(pannel);
    var resultsHeadTxt = $('<h4>').text(items.total + ' items returned.'); // in: ' + items.responseTime + ' miliseconds').appendTo(content);


    var columnsToDisplay = 3;
    var ctr = 0;
    var resultContainer;

    var urlRegEx = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;

    $.each(items.products, function(res, i) {
        if (ctr == 0) {
            resultContainer = $('<ul>').addClass('products');
        }

        var result = $('<li>');

        var imageWrapper = $('<div>').appendTo(result).addClass('product');

        var productUrl = '';

        if (urlRegEx.test(i.productUrl)) {
            productUrl = i.productUrl;
        }
        else {
            productUrl = '/' + portal[1] + '/Search/Product/' + i.productUrl;
        }

        var imageLink = $('<a>').attr('href', productUrl).appendTo(imageWrapper);
        var image = $('<img>').attr('src', i.productImageURL).attr('width', '75').attr('height', '75').addClass('productPic').appendTo(imageLink);

        var productNameWrapper = $('<div>').appendTo(result).addClass('title');
        var productLink = $('<a>').attr('href', productUrl).appendTo(productNameWrapper).html(i.productName);

        var productpriceWrapper = $('<p>').text('Starting at ').appendTo(result);
        var productpriceSpanWrapper = $('<span>').addClass('price').text(i.productMinPrice).appendTo(productpriceWrapper);


        var buyNowLink = $('<input>').attr('type', 'button').attr('onclick', 'javascript: window.location = \'' + productUrl + '\'').attr('value', 'View Details').addClass('btnRed').appendTo(result);

        var maCashBack = i.productHasCashBack == "1" ? $('<p>').addClass('maCashBack').text('Earn $' + i.productCashBackAmount).appendTo(result) : $('<p>').text('&nbsp;').appendTo(result);

        result.appendTo(resultContainer);


        if (ctr >= columnsToDisplay) {
            resultContainer.appendTo(content);
            resultContainer = null;
            ctr = 0;
        }
        else
            ctr++;

    });
    if (resultContainer != null) {
        resultContainer.appendTo(content);
    }

    if (mainContent != null) {
        mainContent.hide(0);
    }

    if (subContent != null) {
        subContent.hide(0);
    }

    if (genericContent != null) {
        genericContent.hide(0);
    }
    pannel.hide(0);
    pannel.appendTo(results).fadeIn('slow');
};
