﻿// extra jQuery functions
; (function($) {
    // basic logic start first
    $.fn.toggleBasic = function() {
        $('a[href*=/Delete/],a[href*=/Cancel/],a[href*=/AddressBookDelete/],a[href*=/PaymentOptionDelete/],a[href*=/PaymentDelete/],a[href*=/ShipmentDelete/]').bind('click', function() { return confirm('Are you sure?'); });
        $('.headerSignUp').children('a').children('img').mouseover(function() { $(this).attr('src', $(this).attr('src').replace('0', '1')) }).mouseout(function() { $(this).attr('src', $(this).attr('src').replace('1', '0')) });

        $('.addCart').click(function() { 
            $('#siteLoading').show();

            $('#cartPopup').load('/Shared/CartPopup', { key: (new Date()).getTime(), ProductID: $(this).parents('form').children('#ProductID').val(), Quantity: 1 }, function(data) {
                $('#cartKeepShopping').click(function() { $('#cartPopup').hide(); });
                $('#cartPopup').show(); 

                $('#siteLoading').hide();
            });

            $('#cartHeader').load('/Shared/CartHeader', { key: (new Date()).getTime() }, function(data) { });
        });

        $('#QFSearchTextModel', '.finderSearchBox').addClass("watermarkOn").val("Search by Samsung Model #").focus(function() {
            $(this).filter(function() {
                return $(this).val() == "" || $(this).val() == "Search by Samsung Model #"
            }).removeClass("watermarkOn").val("");
        });

        $('#QFSearchTextModel', '.finderSearchBox1').addClass("watermarkOn").val("Search by Samsung Model #").focus(function() {
            $(this).filter(function() {
                return $(this).val() == "" || $(this).val() == "Search by Samsung Model #"
            }).removeClass("watermarkOn").val("");
        });

         $('#QFSearchTextModel', '.finderSearchBox2').addClass("watermarkOn").val("Search by Samsung Model #").focus(function() {
            $(this).filter(function() {
                return $(this).val() == "" || $(this).val() == "Search by Samsung Model #"
            }).removeClass("watermarkOn").val("");
        });

        $('#QFSearchTextModel', '.finderSearchBox').blur(function() {
            $(this).filter(function() {
                return $(this).val() == ""
            }).addClass("watermarkOn").val("Search by Samsung Model #");
        });

         $('#QFSearchTextModel', '.finderSearchBox1').blur(function() {
            $(this).filter(function() {
                return $(this).val() == ""
            }).addClass("watermarkOn").val("Search by Samsung Model #");
        });

         $('#QFSearchTextModel', '.finderSearchBox2').blur(function() {
            $(this).filter(function() {
                return $(this).val() == ""
            }).addClass("watermarkOn").val("Search by Samsung Model #");
        });

        $('#QFSearchTextProduct', '.finderSearchBox').addClass("watermarkOn").val("Search by Accessory #").focus(function() {
            $(this).filter(function() {
                return $(this).val() == "" || $(this).val() == "Search by Accessory #"
            }).removeClass("watermarkOn").val("");
        });

        $('#QFSearchTextProduct', '.finderSearchBox1').addClass("watermarkOn").val("Search by Accessory #").focus(function() {
            $(this).filter(function() {
                return $(this).val() == "" || $(this).val() == "Search by Accessory #"
            }).removeClass("watermarkOn").val("");
        });

        $('#QFSearchTextProduct', '.finderSearchBox2').addClass("watermarkOn").val("Search by Accessory #").focus(function() {
            $(this).filter(function() {
                return $(this).val() == "" || $(this).val() == "Search by Accessory #"
            }).removeClass("watermarkOn").val("");
        });

        $('#QFSearchTextProduct', '.finderSearchBox').blur(function() {
            $(this).filter(function() {
                return $(this).val() == ""
            }).addClass("watermarkOn").val("Search by Accessory #");
        });

         $('#QFSearchTextProduct', '.finderSearchBox1').blur(function() {
            $(this).filter(function() {
                return $(this).val() == ""
            }).addClass("watermarkOn").val("Search by Accessory #");
        });

         $('#QFSearchTextProduct', '.finderSearchBox2').blur(function() {
            $(this).filter(function() {
                return $(this).val() == ""
            }).addClass("watermarkOn").val("Search by Accessory #");
        });

        $('#QFSearchForm').submit(function() {
            $('#QFSearchTextProduct', '.finderSearchBox').filter(function() {
                return $(this).val() == "" || $(this).val() == "Search by Accessory #"
            }).val("");

            $('#QFSearchTextModel', '.finderSearchBox').filter(function() {
                return $(this).val() == "" || $(this).val() == "Search by Samsung Model #"
            }).val("");
        });

         $('#QFSearchForm').submit(function() {
            $('#QFSearchTextProduct', '.finderSearchBox1').filter(function() {
                return $(this).val() == "" || $(this).val() == "Search by Accessory #"
            }).val("");

            $('#QFSearchTextModel', '.finderSearchBox1').filter(function() {
                return $(this).val() == "" || $(this).val() == "Search by Samsung Model #"
            }).val("");
        });

         $('#QFSearchForm').submit(function() {
            $('#QFSearchTextProduct', '.finderSearchBox2').filter(function() {
                return $(this).val() == "" || $(this).val() == "Search by Accessory #"
            }).val("");

            $('#QFSearchTextModel', '.finderSearchBox2').filter(function() {
                return $(this).val() == "" || $(this).val() == "Search by Samsung Model #"
            }).val("");
        });
    };

    // basic logic start last
    $.fn.toggleBasicBottom = function() {
        $('#cartHeader').load('/Shared/CartHeader', { key: (new Date()).getTime() }, function(data) { });
    };

    // list theme and action
    $.fn.toggleList = function(sortArray, colArray) {
        $('#SortBy,#PageSize').change(function() { $(this).parents('form').submit(); });
        $('#SortBy').val($('#SortByFrom').val());
        //$('#PageSize').val($('#PageSizeFrom').val());
        $('#ViewAll').click(function() {
            $('#PageSize').val('1000');
            $(this).parents('form').submit();
        });

        $('.pageno, .selected').click(function() {
            if ($(this).text() == ">>") {
                $(this).parents('form').children('#Page').val(Math.ceil(parseInt($('#Page').val()) / 10) * 10 + 1);
            }
            else if ($(this).text() == "<<") {
                $(this).parents('form').children('#Page').val((Math.ceil(parseInt($('#Page').val()) / 10) - 2) * 10 + 1);
            }
            else {
                $(this).parents('form').children('#Page').val($(this).text());
            }

            $(this).parents('form').submit();
        });
    };

    $.fn.TopSearchAutoComplete = function(val) {
        if (val == 'M') {
            $('#TopSearchText').autocomplete({
                source: "/Shared/SearchModelJSON",
                minLength: 2,
                appendTo: '#TopSerchBoxAutoComplete',
                focus: function (event, ui) {
                    return false;
                },
                select: function (event, ui) {
                    $("#TopSearchText").val(ui.item.Name);

                    return false;
                },
                position: {
                    of: $('.headerSearchBox'),
                    my: "left top",
                    at: "left bottom"
                }
            })
            .data("autocomplete")._renderItem = function (ul, item) {
                return $('<li></li>').data("item.autocomplete", item)
                .append('<a><div><h1>&nbsp;&nbsp;&nbsp;' + item.Name + '</h1></div></a>')
                .appendTo($(ul).addClass('topLayer'));
            };
        } else if (val == 'P') {
            $('#TopSearchText').autocomplete({
                source: "/Shared/SearchProductJSON",
                minLength: 2,
                appendTo: '#TopSerchBoxAutoComplete',
                focus: function (event, ui) {
                    return false;
                },
                select: function (event, ui) {
                    $("#TopSearchText").val(ui.item.ManufaturerCode);

                    return false;
                },
                position: {
                    of: $('.headerSearchBox'),
                    my: "left top",
                    at: "left bottom"
                }
            })
            .data("autocomplete")._renderItem = function (ul, item) {
                return $('<li></li>').data("item.autocomplete", item)
                .append('<a><div><div  class="autocompleteLeft">&nbsp;&nbsp;<img src="' + item.FileName + '.jpg" width="40" /></div><div class="autocompleteRight"><h1>' + item.Name + '</h1><h2>Part#: ' + item.ManufaturerCode + '</h2></div><div class="floatClear"></div></div></a>')
                .appendTo($(ul).addClass('topLayer'));
            };
        }
    }

    $.fn.QFSearchAutoComplete = function() {
        if($('#QFSearchTextModel').length > 0) {
            $('#QFSearchTextModel').autocomplete({
                source: "/Shared/SearchModelJSON",
                minLength: 2,
                appendTo: '#QFSerchBoxAutoCompleteModel',
                focus: function (event, ui) {
                    return false;
                },
                select: function (event, ui) {
                    $("#QFSearchTextModel").val(ui.item.Name);

                    return false;
                },
                position: {
                    of: $('#QFSearchTextModel'),
                    my: "left top",
                    at: "left bottom"
                }
            })
            .data("autocomplete")._renderItem = function (ul, item) {
                return $('<li></li>').data("item.autocomplete", item)
                .append('<a><div><h1>&nbsp;&nbsp;&nbsp;' + item.Name + '</h1></div></a>')
                .appendTo($(ul).addClass('topLayer'));
            };
    
            $('#QFSearchTextProduct').autocomplete({
                source: "/Shared/SearchProductJSON",
                minLength: 2,
                appendTo: '#QFSerchBoxAutoCompleteProduct',
                focus: function (event, ui) {
                    return false;
                },
                select: function (event, ui) {
                    $("#QFSearchTextProduct").val(ui.item.ManufaturerCode);

                    return false;
                },
                position: {
                    of: $('#QFSearchTextProduct'),
                    my: "left top",
                    at: "left bottom"
                }
            })
            .data("autocomplete")._renderItem = function (ul, item) {
                return $('<li></li>').data("item.autocomplete", item)
                .append('<a><div><div  class="autocompleteLeft">&nbsp;&nbsp;<img src="' + item.FileName + '.jpg" width="40" /></div><div class="autocompleteRight"><h1>' + item.Name + '</h1><h2>Part#: ' + item.ManufaturerCode + '</h2></div><div class="floatClear"></div></div></a>')
                .appendTo($(ul).addClass('topLayer'));
            };
        }
    }

    // set shipping address style and validation
    $.fn.setShipAddrValidation = function() {
        $('#FirstNameLocal,#LastNameLocal,#FirstName,#LastName,#Line1,#City,#State,#Zip,#CountryID,#Phone1').addClass('required');
        $('#Company,#Line1,#Line2').css("width", "400px");
        $('#FirstName,#LastName,#FirstNameLocal,#LastNameLocal,#City,#Phone,#State,#CountryID').css("width", "200px");
        $('#Zip').css("width", "100px");
        $('#FirstNameLocal').focus();

        $("#MyForm").validate({
            rules: {
                FirstName: {
                    maxlength: 50
                },
                LastName: {
                    maxlength: 50
                },
                FirstNameLocal: {
                    maxlength: 50
                },
                LastNameLocal: {
                    maxlength: 50
                },
                Company: {
                    maxlength: 100
                },
                Line1: {
                    maxlength: 100
                },
                Line2: {
                    maxlength: 100
                },
                City: {
                    maxlength: 50
                },
                State: {
                    maxlength: 50
                },
                Zip: {
                    maxlength: 10
                },
                Phone1: {
                    maxlength: 20
                }
            }
        });
    };

    // set billing address style and validation
    $.fn.setBillAddrValidation = function() {
        $('#FirstName,#LastName,#Line1,#City,#State,#Zip,#CountryID,#PaymentMethod,#CardType,#CardNo,#CardMonth,#CardYear,#CardCVV, #CardPhone, #Phone1').addClass('required');
        $('#Company,#Line1,#Line2').css("width", "300px");
        $('#FirstName,#LastName,#City,#Phone,#State,#CountryID,#CardNo,#CardType,#CardCVV').css("width", "200px");
        $('#CardNo,#CardType,#CardCVV').parents('.panel_contents').css("width", "210px");
        $('#Zip').css("width", "100px");

        $('#PaymentMethod').focus();

        $("#MyForm").validate({
            rules: {
                CardNo: {
                    creditcard: true
                },
                CardCVV: {
                    maxlength: 4
                },
                FirstName: {
                    maxlength: 20
                },
                LastName: {
                    maxlength: 20
                },
                Company: {
                    maxlength: 100
                },
                Line1: {
                    maxlength: 100
                },
                Line2: {
                    maxlength: 100
                },
                City: {
                    maxlength: 50
                },
                State: {
                    maxlength: 50
                },
                Zip: {
                    maxlength: 10
                },
                Phone1: {
                    maxlength: 20
                }
            },
            messages: {
                PaymentMethod: ' '
            }
        });

        $('#CardNo,#CardCVV').numeric();
    };

    // set order style and validation
    $.fn.setOrderValidation = function() {
        $('#ShippingOptionID').addClass('required');
        $('#ShippingOptionID,#CouponID').css("width", "300px");
        $('#MileageDiscount,#AdditionalPrice,#AdditionalDiscount').addClass('textRight').css("width", "50px");
        //$('#LoginID').focus();

        $("#MyForm").validate({
            rules: {
                ShippingOptionID: {
                    digits: true,
                    min: 1
                },
                GiftWrappiingMsg: {
                    maxlength: 200
                }
            },
            messages: {
                ShippingOptionID: " ",
                GiftWrappiingMsg: " "
            }
        });

        $('textarea').keyup(function() {
            $(this).parents('.panel_input_form').children('label:eq(0)').children('span').text($(this).html().length);
        });
        $('textarea').each(function() {
            $(this).parents('.panel_input_form').children('label:eq(0)').children('span').text($(this).html().length);
        });

        $('#MileageDiscount,#AdditionalPrice,#AdditionalDiscount').numeric();
    };

    // set member style and validation
    $.fn.setMemberValidation = function() {
        $('#Name,#LoginID,#Password,#CPassword,#attempt').addClass('required');
        $('#Name,#LoginID,#Password,#CPassword,#NPassword,#CNPassword').css("width", "200px");
        $('#attempt').css("width", "200px");
        $('#Name').focus();

        $("#MyForm").validate({
            rules: {
                Name: {
                    maxlength: 50
                },
                LoginID: {
                    email: true,
                    maxlength: 100
                },
                Password: {
                    maxlength: 20
                },
                CPassword: {
                    maxlength: 30,
                    equalTo: "#Password"
                },
                NPassword: {
                    maxlength: 20
                },
                CNPassword: {
                    maxlength: 30,
                    equalTo: "#NPassword"
                },
                terms: {
                    required: true
                }
            },
            messages: {
                terms: " "
            }
        });

        $("#Password,#NPassword").passStrength({
            userid: "#LoginID"
        });
    };

    // set productreview style and validation
    $.fn.setProductReviewValidation = function() {
        $('#Rate,#Review').addClass('required');

        $("#MyForm").validate({
            rules: {
                StoreID: {
                    digits: true,
                    min: 1
                }
            },
            messages: {
                StoreID: "This field is required."
            }
        });

        $('textarea').parents('.panel_contents').css('width', '700px').end().ckeditor();
    };

    // set Contact US style and validation
    $.fn.setContactUSValidation = function() {
        $('#ContactType,#Name,#Email,#Phone,#Description').addClass('required');
        $('#Name,#Email').css("width", "300px");
        $('#ContactType,#Phone,#OrderID').css("width", "200px");
        $('#ContactType').focus();

        $("#MyForm").validate({
            rules: {
                Email: {
                    email: true
                }
            },
            messages: {
                StoreID: "This field is required."
            }
        });
    };

    // set Contact US style and validation
    $.fn.setReturnValidation = function() {
        $('#ReturnType,#OrderItemID,#ReturnDetail').addClass('required');
        $('#ReturnType').css("width", "300px");

        $("#MyForm").validate({
            rules: {
                ReturnType: {
                    digits: true,
                    min: 1
                },
                ReturnDetail: {
                    maxlength: 500
                }
            }
        });

        $('textarea').keyup(function() {
            $(this).parents('.panel_input_form').children('label:eq(0)').children('span').text($(this).html().length);
        });
        $('textarea').each(function() {
            $(this).parents('.panel_input_form').children('label:eq(0)').children('span').text($(this).html().length);
        });
    };
})(jQuery);



