
function NativeAddressInputManager() {

	var Me = this;
	
	//properties
	this.prefix = '';
	this.parent_form;
	
	//
	// Methods
	// 
	this.show_add_new_address = show_add_new_address;	
	this.show_select_existing_address = show_select_existing_address;
	this.get_parent_form = get_parent_form;
	this.set_parent_form = set_parent_form;
	this.set_new_address_status = set_new_address_status;
	this.check_zip_code_textbox = check_zip_code_textbox;
	this.perform_zip_code_lookup = perform_zip_code_lookup;
	this.apply_zip_code_lookup_results = apply_zip_code_lookup_results;
	this.set_city_name = set_city_name;
	this.set_state_by_id = set_state_by_id;
	this.clear_city_name = clear_city_name;
	this.unset_state_id = unset_state_id;
	this.get_city_name_input = get_city_name_input;

	function get_parent_form() {
		
		try {
			
			return this.parent_form;
			
		}
		catch( e ) {
			throw e;
		} 
		
	}

	function set_parent_form( which_form ) {
		
		this.parent_form = which_form;
		
	}

 	function show_add_new_address( options ) { 

		try {
			DomControl.Disable_display_by_id( 'div_select_existing_' + this.prefix + 'address' );		
			DomControl.Enable_display_by_id( 'div_add_new_' + this.prefix + 'address' );
			DomControl.Enable_display_by_id( 'div_link_select_existing_' + this.prefix + 'address' );	
			
			this.set_new_address_status( 1 );
			
		}
        catch(e) {
        	alert( e.message );
        }	

	}

	function show_select_existing_address() { 

		try {
			DomControl.Enable_display_by_id( 'div_select_existing_' + this.prefix + 'address' );		
			DomControl.Disable_display_by_id( 'div_add_new_' + this.prefix + 'address' );

			this.set_new_address_status( 0 );
		}
        catch(e) {
        	throw e;
        }	

	}
	
	function set_new_address_status( yn ) {

		try {		
			
			var form = this.get_parent_form();
			var new_address_input = eval( 'form.add_new_' + this.prefix + 'address' ); 

			if ( typeof(new_address_input) != 'undefined' ) {
				if ( yn ) {
					$('input[name="add_new_' + this.prefix + 'address"]').val(1);
				}	
				else {
					$('input[name="add_new_' + this.prefix + 'address"]').val(0);

				}
			}
			
		}
        catch(e) {
        	throw e;
        }	
		
	}
	

	function check_zip_code_textbox( textbox_obj ) {

		try {

			if ( textbox_obj.value.length >= 5 ) {
				this.perform_zip_code_lookup(textbox_obj.value);
			}
			else {
				this.clear_city_name();
				this.unset_state_id();
			}
        }
        catch(e) {
	        alert( e.message );
        }

	}

	function perform_zip_code_lookup(zip_code) {

		try {

			var request_obj = new BRIJ_Request();

        	request_obj.set_script_filename( '../brij/brij-location.php' );
            request_obj.set_function_name('brij_location_data_by_zip_code');
	        request_obj.set_result_handler( Me.apply_zip_code_lookup_results );

			request_obj.add_parameter( zip_code );

	        try {
        		var result = request_obj.get_function_result();
	
			}	
	        catch( e ) {
            	alert( 'BRIJ error: ' + e.message );
		    }

        	return result;

         }
         catch(e) {
         	alert( e.message );
         }

	}

	function apply_zip_code_lookup_results( result ) {

		try {
			if ( is_BRIJ_Error(result) ) {
				alert( 'BRIJ Error: ' + result.get_error_message() );
			}
			else {
				if ( (typeof(result) != 'undefined') && (result != null) ) {

					if ( typeof(result['city_name']) != 'undefined' ) {
						Me.set_city_name( result['city_name'] );
					}
					else {
						Me.clear_city_name();
					}
					
					if ( typeof(result['state_id']) != 'undefined' ) {
						Me.set_state_by_id( result['state_id'] );
					}
					else {
						Me.unset_state_id();
					}
				}
			}
         }
         catch(e) {
         	alert( e.message );
          }

	}

	function set_city_name( city_name ) {

		try {

			var city_name_input = get_city_name_input();

			if ( city_name_input ) {
				city_name_input.value = city_name;
			}

        }
        catch(e) {
        	alert( e.message );
        }


	}

	function get_city_name_input() {

		try {

			var form = Me.get_parent_form();
			var input_name = Me.prefix + 'city_name';
			var input = eval( 'form.' + input_name );
			
			if ( typeof(input) != 'undefined' ) {
				return input
			}

			return null;

         }
         catch(e) {
	         alert( e.message );
         }

	}

	function clear_city_name() {

		try {

			var city_name_input = Me.get_city_name_input();
	
			city_name_input.value = '';
        }
        catch(e) {
        	alert( e.message );
        }

	}

	function set_state_by_id( state_id ) {

		try {
			 
			 var dropdown_name = 'dropdown_' + Me.prefix + 'state_id';
			 
			 dropdown_select_item_by_option_value( dropdown_name, state_id );

        }
        catch(e) {
        	alert( e.message );
        }

	}

	function unset_state_id() {

		try {
			 var dropdown_name = 'dropdown_' + Me.prefix + 'state_id';
			
			 dropdown_select_item_by_index( dropdown_name, 0 );

        }
        catch(e) {
        	alert( e.message );
        }

	}

	
}

