(function ($) {
    $.fn.selectChain = function (options) {
        var defaults = {
            key: "id",
            value: "label"
        };
        
        var settings = $.extend({}, defaults, options);
        
        if (!(settings.target instanceof $)) settings.target = $(settings.target);
        
        return this.each(function () {
            var $$ = $(this);
            
            $$.change(function () {
                var data = null;
                if (typeof settings.data == 'string') {
                    data = settings.data + '&' + this.name + '=' + $$.val();
                } else if (typeof settings.data == 'object') {
                    data = settings.data;
                    data[this.name] = $$.val();

					var t1 = document.getElementById("body");
					var t2 = document.getElementById("repair");
					var t3 = document.getElementById("tyres");
					var t4 = document.getElementById("itp");
					var t5 = document.getElementById("gas");

					if(t1 && t2 && t3 && t4 && t5){
						if(t1.checked && t2.checked && t3.checked && t4.checked && t5.checked){
							data['tip'] = "";
						}
						else if(t1.checked){
							data['tip'] = "body";
						}
						else if(t2.checked){
							data['tip'] = "repair";
						}
						else if(t3.checked){
							data['tip'] = "tyres";
						}
						else if(t4.checked){
							data['tip'] = "itp";
						}
						else if(t5.checked){
							data['tip'] = "gas";
						}
						else{
							data['tip'] = "";
						}
					}
					else{
						data['tip'] = "";
					}
                }
				//alert(data.toSource());

                settings.target.empty();
                
                $.ajax({
                    url: settings.url,
                    data: data,
                    type: (settings.type || 'get'),
                    dataType: 'json',
                    success: function (j) {
                        var options = [], i = 0, o = null;
                        
						o = document.createElement("OPTION");
						o.value = "";
						o.text = "- toate -";
						settings.target.get(0).options[0] = o;
						//alert(j.toSource());

						for (i = 1; i <= j.length; i++) {
                            // required to get around IE bug (http://support.microsoft.com/?scid=kb%3Ben-us%3B276228)
							//alert(j[i-1]);
                            o = document.createElement("OPTION");
                            o.value = typeof j[i-1] == 'object' ? j[i-1][settings.key] : j[i-1];
                            o.text = typeof j[i-1] == 'object' ? j[i-1][settings.value] : j[i-1];
                            settings.target.get(0).options[i] = o;
                        }

			// hand control back to browser for a moment
			setTimeout(function () {
			    settings.target
                                .find('option:first')
                                .attr('selected', 'selected')
                                .parent('select')
                                .trigger('change');
			}, 0);
                    },
                    error: function (xhr, desc, er) {
                        // add whatever debug you want here.
			alert("an error occurred");
                    }
                });
            });
        });
    };
})(jQuery);

