
/**
 * This class defines the OrganisationArea Selection feature of the
 * YachtSearch system that allows you to drill to down to the second level area
 * to refine your search to a more specific location.
 *
 * Author: peterl
 */

var organisationArea;

function handlerAreaSelectionEvent( e, val, text, checked ) {
	if( val && parseInt( val.value ) == -1 ) {
		if( val.checked ) {
			organisationArea.multiselect('uncheckAll');
			$( e.originalEvent.currentTarget ).get(0).checked = val.checked;
		} 
	} else if( val && parseInt( val.value ) > -1) {
		$( '#ui-multiselect-organisation_area_id-option-1' ).get(0).checked = false;
	}
	var value = '';
	var selectedAreas = new Array();
	for(var i = 0; i < organisationArea.multiselect("getChecked").length; i++) {
		selectedAreas[ i ] = organisationArea.multiselect("getChecked")[i].title;
		if( parseInt( organisationArea.multiselect("getChecked")[i].value ) <= 0 ) continue;
		value += organisationArea.multiselect("getChecked")[i].value + ',';
	}
	var tmp = selectedAreas.join(',').replace(/&nbsp;/gi, '').trim();
	organisationArea.multiselect( { 'selectedText' : tmp.substring(0, 30) + ( tmp.length > 30 ? '..' : '' ) } );
	$('#organisation_area_id_live').val( value );
	setTimeout("refreshSearchResults(this, 'regions');",250);
}
function handleUncheckAll(){
	organisationArea.unbind( 'multiselectuncheckall');
	organisationArea.multiselect('uncheckAll');
	$( '#ui-multiselect-organisation_area_id-option-1' ).get(0).checked = true;
	organisationArea.bind( 'multiselectuncheckall', handleUncheckAll);
	handlerAreaSelectionEvent();
}

IDBSYachtSearch.OrganisationAreaSelect = {
		
	initialise: function (context) {
		
		/**
		 * Without "var" this variable will be assigned to the Prototype not the Instance of the Prototype.
		 * i.e. In PHP speak, it will assign to the Class definition rather than the Object instantiation.
		 * 
		 * Author: peterl
		 */
		organisationArea = $("#organisation_area_id", context);		 
		var organisationAreaSecondLevel = $("#organisation_area_id_2", context);
		var organisationAreaThirdLevel = $("#organisation_area_id_3", context);
		
		/**
		 * add interface
		 */
		organisationArea.multiselect({
		   selectedText: "Selected Regions # of #",
		   noneSelectedText: 'Discover Area',
		   header: true,
		   minWidth: 250
		});
		$('.inputField.areafield ul.ui-multiselect-checkboxes li label:first').css('padding-left', '0px');
		if( $('#organisation_area_id_live').val() != "" && $('#organisation_area_id_live').val() ) {
			var ids = $('#organisation_area_id_live').val().split(',');
			for(var t = 0; t < ids.length; t++) {
				if( ids[t] == "" ) continue;
				$('#organisation_area_id option[value="'+ids[t]+'"]').get(0).selected = true;
				$('input[value="'+ids[t]+'"]', $('.ui-multiselect-checkboxes.ui-helper-reset')).get(0).checked = true;
			}
			var value = '';
			var selectedAreas = new Array();
			for(var i = 0; i < organisationArea.multiselect("getChecked").length; i++) {
				if( parseInt( organisationArea.multiselect("getChecked")[i].value ) <= 0 ) continue;
				value += organisationArea.multiselect("getChecked")[i].value + ',';
				selectedAreas[ i ] = organisationArea.multiselect("getChecked")[i].title;
			}
			var tmp = selectedAreas.join(',').replace(/&nbsp;/gi, '').trim();
//			console.log( tmp );
			organisationArea.multiselect( { 'selectedText' : tmp.substring(0, 30) + ( tmp.length > 30 ? '..' : '' ) } );
			$('#organisation_area_id_live').val( value );
		}
		organisationArea.bind( 'multiselectclick', handlerAreaSelectionEvent );
		organisationArea.bind( 'multiselectcheckall', function(){
			organisationArea.unbind( 'multiselectuncheckall');
			organisationArea.multiselect('uncheckAll');
			$( '#ui-multiselect-organisation_area_id-option-1' ).get(0).checked = true;
			organisationArea.bind( 'multiselectuncheckall', handleUncheckAll);
			handlerAreaSelectionEvent();
		} );
		organisationArea.bind( 'multiselectuncheckall', handleUncheckAll );
		
		/**
		 * On change of the top level area select box, call the selectOrganisationArea method to 
		 * load the second level data and show the second level box.
		 *
		 * Author: peterl
		 */
		organisationArea.bind('multiselectclick', function(){
			
			organisationAreaSecondLevel.multiselect( "destroy" );
			organisationAreaThirdLevel.multiselect( "destroy" );
			
			organisationAreaThirdLevel.css("display", "none");
			organisationAreaSecondLevel.css("display", "none");
			//IDBSYachtSearch.OrganisationAreaSelect.selectOrganisationArea($('#organisation_area_id_live'), organisationAreaSecondLevel, $('#organisation_area_id_second_selected').val(), context);
			
		});
		
		organisationAreaSecondLevel.bind( 'multiselectclick', function( e, val, text, checked ) {
			var value = '';
			for(var i = 0; i < organisationAreaSecondLevel.multiselect("getChecked").length; i++) {
				value += organisationAreaSecondLevel.multiselect("getChecked")[i].value + ',';
			}
			$('#organisation_area_id_2_live').val( value );
		} );
		organisationAreaSecondLevel.bind('multiselectbeforeclose', function(){
			$('#organisation_area_id_3').multiselect( "destroy" );
			IDBSYachtSearch.OrganisationAreaSelect.selectOrganisationArea( $('#organisation_area_id_2_live'), $('#organisation_area_id_3'), $('#organisation_area_id_third_selected').val() );
			setTimeout("refreshSearchResults(this, 'regions');",250);
		} );
		
		organisationAreaThirdLevel.bind( 'multiselectclick', function( e, val, text, checked ) {
			var value = '';
			for(var i = 0; i < organisationAreaThirdLevel.multiselect("getChecked").length; i++) {
				value += organisationAreaThirdLevel.multiselect("getChecked")[i].value + ',';
			}
			$('#organisation_area_id_3_live').val( value );
		} );
		organisationAreaThirdLevel.bind('multiselectbeforeclose', function(){
			setTimeout("refreshSearchResults(this, 'regions');",250);
		} );
//		organisationArea.change(function() {
//			organisationAreaThirdLevel.css("display", "none");
//			organisationAreaSecondLevel.css("display", "none");
//			IDBSYachtSearch.OrganisationAreaSelect.selectOrganisationArea(organisationArea, organisationAreaSecondLevel, $('#organisation_area_id_second_selected').val());
//		});
		
//		organisationAreaSecondLevel.change(function() {
//			organisationAreaThirdLevel.css("display", "none");													
//			IDBSYachtSearch.OrganisationAreaSelect.selectOrganisationArea(organisationAreaSecondLevel, organisationAreaThirdLevel, $('#organisation_area_id_third_selected').val());
//		});
		
		
		/**
		 * Check initial state of the organisation area and if is set to some area (insted of empty) 
		 *
		 * Author: waldemarm
		 */		
		if($("#organisation_area_id :selected", context).val()!=''){
			organisationArea.trigger('multiselectbeforeclose');
			
		}
		
	}
	
};

IDBSYachtSearch.OrganisationAreaSelect.selectOrganisationAreaLastNode = function(){
		if($("#organisation_area_id_second :selected").val()!=''){
			$('#organisation_area_id_2').trigger('change');;
		}	
}


