
// plugin for parsing strings and therefore to receive $_get
jQuery.parseQuery = function(qs,options) {
	var q = (typeof qs === 'string'?qs:window.location.search), o = {'f':function(v){return unescape(v).replace(/\+/g,' ');}}, options = (typeof qs === 'object' && typeof options === 'undefined')?qs:options, o = jQuery.extend({}, o, options), params = {};
	jQuery.each(q.match(/^\??(.*)$/)[1].split('&'),function(i,p){
		p = p.split('=');
		p[1] = o.f(p[1]);
		params[p[0]] = params[p[0]]?((params[p[0]] instanceof Array)?(params[p[0]].push(p[1]),params[p[0]]):[params[p[0]],p[1]]):p[1];
	});
	return params;
}
// get the $_GET parameters
var q = $.parseQuery(); //parses the window location querystring by default

(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 () {
            getData = function($$, mythis, mysettings){
                //alert ($$.val()+mysettings.object);
               	//alert('2'+$$.val());
                var data = null;
                if (typeof mysettings.data == 'string') {
                    data = mysettings.data + '&' + mythis.name + '=' + $$.val();
                } else if (typeof mysettings.data == 'object') {
                    data = mysettings.data;
                    data[mythis.name] = $$.val();
                }
                
                mysettings.target.empty();
                //alert(data);
                $.ajax({
                    url: mysettings.url,
                    data: data,
                    type: (mysettings.type || 'get'),
                    dataType: 'json',
                    success: function (j) {
                    
                    	if (mysettings.object == 'province'){
                    		$('#area_select').show();
                    	}  

                    	if (mysettings.object == 'area'){
                    		if (j.length > 1)
                    			$('#quarter').slideDown();
                   			else
                   				$('#quarter').slideUp(200);
                    	}  
						
                        var options = [], i = 0, o = null;
                        
                        for (i = 0; i < j.length; i++) {
                            // required to get around IE bug (http://support.microsoft.com/?scid=kb%3Ben-us%3B276228)
                            o = document.createElement("OPTION");
                            o.value = typeof j[i] == 'object' ? j[i][mysettings.key] : j[i];
                            o.text = typeof j[i] == 'object' ? j[i][mysettings.value] : j[i];
                            // preselect an area if user has already selected it
                            // does not work with quarters as they are an array. way more complex
                            if (j[i][mysettings.key] == q.area_select) o.selected="selected";
                            mysettings.target.get(0).options[i] = o;
                        }

						// hand control back to browser for a moment
						setTimeout(function () {
						    mysettings.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 "+er);
						//mysettings.target.slideToggle();
                    }
                   
                 }); // .ajax
            }; // function
            if ($$.val()){
                 //alert('value found');
                 getData($$, this, settings);
            }
            $$.change(function () {
                //alert('1:'+settings.object);
                getData($$, this, settings);
            });

        });
    };
})(jQuery);

$(function () {
    var cat = $('#province_select');
    var el = $('#area_select');
    var attr = $('#quarter_select');

    //alert('test'+$('#province_select').val());
    // note that we're assigning in reverse order
    // to allow the chaining change trigger to work
    cat.selectChain({
    	object: 'province',
        target: el,
        url: '/subapp_inserate/select-chain-data.php',
        data: { ajax: true }
    }).trigger('work');
    
    el.selectChain({
    	object: 'area',
        target: attr,
        url: '/subapp_inserate/select-chain-data.php',
        data: { ajax: true, anotherval: "anotherAction" }            
    })
	//.trigger('change'); 
});


