function onLoadAutoCompletion() {
	var originDiv = document.getElementById('pInput_origin') || document.getElementById('place_origin');
	if (originDiv)
		var origin = new LocalityAutoCompletion(loc, originDiv);
		
	var destinationDiv = document.getElementById('pInput_destination') || document.getElementById('place_destination');
	if (destinationDiv)
		var destination = new LocalityAutoCompletion(loc, destinationDiv);
		
	var viaDiv = document.getElementById('place_via');
	if (viaDiv)
		var destination = new LocalityAutoCompletion(loc, viaDiv);
		
	var dmDiv = document.getElementById('pInput_dm') || document.getElementById('place_dm');
	if (dmDiv)
		var dm = new LocalityAutoCompletion(loc, dmDiv);
		
	var landmarkDiv = document.getElementById('placeInfo');
	if (landmarkDiv)
		var landmark = new LocalityAutoCompletion(loc, landmarkDiv); 
		
	var businessDiv = document.getElementById('businessPlace');
	if (businessDiv)
		var business = new LocalityAutoCompletion(loc, businessDiv); 

	var businessDMDiv = document.getElementById('businessPlaceDM');
	if (businessDMDiv )
		var businessDM = new LocalityAutoCompletion(loc, businessDMDiv ); 
		
	var landDMDiv = document.getElementById('placeInfoDM');
	if (landDMDiv)
		var landDM = new LocalityAutoCompletion(loc, landDMDiv); 
		
		
	var landOutputDiv = document.getElementById('placeInfoOutput');
	if (landOutputDiv)
		var landOutput = new LocalityAutoCompletion(loc, landOutputDiv); 
		
		
}

function LocalityAutoCompletion(data, container) {

	this.data = [];
	this.raw = data;
	this.container = container;
	this.ac = null;
	this.locality = null;	
	
	this.execute();
}

LocalityAutoCompletion.prototype.execute = function () {
	for (var p = 0; p < this.raw.length; p++) {
		this.raw[p].toString = function() { return this.name; };
	}
	
	this.raw.sort();

	for (var p = 0; p < this.raw.length; p++) {
		this.data.push(this.raw[p].name);
	}
	
	if(this.container){
		var usage = this.container.id.substr(this.container.id.indexOf('_')+1);

		var c = document.getElementById('placeInput_' + usage + '_ac') || document.getElementById('place_' + usage + '_ac') || document.getElementById(usage + '_ac') || document.getElementById(usage +'_ac');
		
		if (!c)
			return false;

		var src = new YAHOO.widget.DS_JSArray(this.data);
		
		this.ac = new YAHOO.widget.AutoComplete(this.container.id, c.id, src);
		//this.ac.alwaysShowContainer = true;
		this.ac.maxResultsDisplayed =  this.container.id == 'place_via' ? 6 : 10;
		this.ac.useIFrame = this.container.id == 'place_via' ? false : true;	
		//this.ac.typeAhead = true;

		for (var i=0; i < document.forms.length; i++) {
			attachEventListener(document.forms[i], 'submit', this.onSubmit.bind(this), false);
		}

		if(this.ac.itemSelectEvent){
			this.ac.itemSelectEvent.subscribe(this.itemSelectEvent.bind(this));
		}
	}

};

LocalityAutoCompletion.prototype.itemSelectEvent = function (sType, aArgs) {
	var obj = this.getID(aArgs[2]);
	
	if (obj)
	{		
		this.locality = obj;
		
		if(this.container.id=='placeInfo'){
		
			sendPOIRequest(obj.omc + ':' + obj.placeID, '', 0, 'empty', 'poi', '');
		}
		else if(this.container.id=='placeInfoDM'){
			sendPOIRequest(obj.omc + ':' + obj.placeID, '', 0, 'empty', 'poi', 'DM');
		}
		else if(this.container.id=='placeInfoOutput'){
			sendPOIRequest(obj.omc + ':' + obj.placeID, '', 0, 'empty', 'poi', 'Output');
		}
		else if (this.container.id=='businessPlace') {
			var businessSelector = document.getElementById('businessSelector');
			var businessName = document.getElementById('businessName');

			businessName.value = '';
			businessSelector.disabled = true;
			businessSelector.innerHTML = '';
		}
		else if (this.container.id=='businessPlaceDM') {
			var businessSelectorDM = document.getElementById('businessSelectorDM');
			var businessNameDM = document.getElementById('businessNameDM');

			businessNameDM.value = '';
			businessSelectorDM.disabled = true;
			businessSelectorDM.innerHTML = '';
		}
		
	}
	else
		this.locality = null;

	return false;
};

LocalityAutoCompletion.prototype.onSubmit = function (e) {
	var usage = this.container.id.substring(this.container.id.indexOf('_')+1);	
	var target = document.getElementById('placeInfo_' + usage);
	var value = document.getElementById('pInput_' + usage) || document.getElementById('place_' + usage);

	if (target && value && this.locality && this.locality.omc && this.locality.name == value.value) {
		target.value = this.locality.omc + ':' + this.locality.placeID;
	}	
};

LocalityAutoCompletion.prototype.getID = function (name) {
	for (var i=0; i < this.raw.length; i++) {
		if (this.raw[i].name == name) {
			return this.raw[i];
		}
	}
	return null;
};

LocalityAutoCompletion.prototype.getState = function () {
	var planTripBox = document.getElementById('planTripBox');
	
	if (!planTripBox)
		return null;
		
	switch (planTripBox.className) {
		case 'tab2Selected':
			return 1;
		default:
			return 0;
		
	}
	
	return null;
};




attachEventListener(window, 'load', onLoadAutoCompletion, false);




