		function getObjectProperty( object, porperty ) {
			var ret = false;
			jQuery.each( object, function( propertyName, propertyValue ) {
				if( propertyName == porperty ) {
					ret = propertyValue; 
				}
			});
			return ret;
		}
		
		$(document).ready( function() {
		
			var parentSelect = $( '#' + parentSelectID )[0];
			var childSelect  = $( '#' + childSelectID )[0];

			jQuery.each( selectRelations, function( stateID, stateHash ) {
				if ( stateID == selectedStateID ) 
					$("<option></option>").attr("value", stateID).html(stateHash.title).attr("selected", true).appendTo(parentSelect)
				  else $("<option></option>").attr("value", stateID).html(stateHash.title).appendTo(parentSelect);
 			});
 			
 			if( selectedStateID > 0 ) {
 				childSelect.parentNode.style.display = 'block';
 				
 				var provinces = getObjectProperty( selectRelations, selectedStateID ).provinces;
				jQuery.each( provinces, function( provinceID, provinceTitle ) {
					if ( provinceID == selectedProvinceID ) 
						$("<option></option>").attr("value", provinceID ).html(provinceTitle).attr("selected", true).appendTo(childSelect)
				  	  else $("<option></option>").attr("value", provinceID ).html(provinceTitle).appendTo(childSelect);	
	 			});
 			}
 			
			$( '#' + parentSelectID ).change( function() {
				$( '#' + childSelectID ).empty();
				var currentStateID = $( '#' + parentSelectID ).attr( 'value' ); 
				if( currentStateID != 0 ) {
					childSelect.parentNode.style.display = 'block';

					var provinces = getObjectProperty( selectRelations, currentStateID ).provinces;					
					jQuery.each( provinces, function( provinceID, provinceTitle ) {
						$("<option></option>").attr("value", provinceID).html(provinceTitle).appendTo(childSelect);
		 			});				
				} else {
					childSelect.parentNode.style.display = 'none';
				}
		    });			
		});
	
