(function($) {
    $.fn.initSearch = function(p) {
        var options = $.extend({
            keys: {},
            url: ''
        }, p);

        this.each(function() {
            var search = $(this);

            if (search.attr('hasload')) {
                return;
            } else {
                search.attr('hasload', 'hasload');
            }
            var labelId = search.attr('labelid') || '';

            var objKeys = $('select[name="skey"]', this);
            var objValue = $(':text[name="svalue"]', this);
            var objButton = $('input[name="sbutton"],:button[name="sbutton"]', this);

            $.each(options.keys || {}, function(key, text) {
                $('<option></option>').attr('value', key || '').text(text || '').appendTo(objKeys);
            });

            if ($.query) {
                var sid = $.query.get('sid');
                if (sid && sid == labelId) {
                    objKeys.val($.query.get('skey') || '');
                    objValue.val($.query.get('svalue') || '');
                }
            }

            objButton.click(function() {          
                if (options.url && options.url != '#') {
                    var params = {
                        skey: objKeys.val() || '',
                        svalue: objValue.val() || '',
                        sid: labelId
                    };
                    var url = options.url;
                    if (url.indexOf('?') > -1) {
                        url += '&' + $.param(params);
                    } else {
                        url += '?' + $.param(params);
                    }
                    location = url;
                }
            });
        });
    }
})(PP);
