/* DynAmic Location Loader © Hexo4yxa */

$(document).ready(function() {
	
	$.fn.clearOptions = function() {
		
		this.each(function() {
			for (var iInd = (this.options.length - 1); iInd >= 0; iInd --)
				this.options[iInd] = null;
		});
		
		return this;
	};
	
	$.fn.enable = function() {
		this.each( function() {
			this.disabled = false;
		} );
		
		return this;
	};
	
	$.fn.disable = function() {
		this.each( function() {
			this.disabled = true;
		} );
		
		return this;
	};
	
	$.fn.addOption = function(sValue, sText) {
		this.each( function() {
			var isSelected = ($(this).attr('default') == sValue);
			
			this.options[this.options.length] = new Option(sText, sValue, isSelected, isSelected);
		} );
		
		return this;
	};
	
	var countryChange = function() {
		
		oState.clearOptions().disable().addOption('', 'Loading...', true, true);
		oUniver.clearOptions().disable().addOption('', 'Loading...', true, true);
		
		$.getJSON(
			'dall.php',
			{action: 'states', parent_id: this.value},
			setStates
		);
	}
	
	var stateChange = function() {
		oUniver.clearOptions().disable().addOption('', 'Loading...', true, true);
		
		$.getJSON(
			'dall.php',
			{action: 'univers', parent_id: this.value},
			setUnivers
		);
	}
	
	var setStates = function(data) {
		oState.clearOptions();
		
		if (!data || data.length == 0) {
			oState.addOption('', '', true, true);
			stateChange.call(oState[0]); // chain call
			return false;
		}
		
		oState.addOption('', 'Select...', false, false);
		
		for (var iInd in data) {
			var aState = data[iInd];
			
			oState.addOption(aState.ID, aState.Name, false, false);
		}
		
		oState.enable();
		stateChange.call(oState[0]); // chain call
	}
	
	var setUnivers = function(data) {
		oUniver.clearOptions();
		
		if (!data || data.length == 0) {
			oUniver.addOption('', '', true, true);
			return false;
		}
		
		oUniver.addOption('', 'Select...', false, false);
		
		for (var iInd in data) {
			var aUniver = data[iInd];
			
			oUniver.addOption(aUniver.ID, aUniver.Name, false, false);
		}
		
		oUniver.enable();
	}
	
	var oCountry = $('select[name^=Country]');
	var oState   = $('select[name^=State]');
	var oUniver  = $('select[name^=Univer]');
	
	countryChange.call(oCountry[0]);
	
	$('select[name^=Country]').bind('change', countryChange);
	$('select[name^=State]').bind('change', stateChange);
});