Event.observe( window, 'load', windowLoaded );

windowLoadedFunctions = new Array();

var nameValue;

function showCalendar(  ) {
    sel = $('date_of_birth');
    new CalendarDateSelect( sel, {year_range:10} );
}

function windowLoaded() {
	for (var i = 0; i < windowLoadedFunctions.length; i++) {
		eval( windowLoadedFunctions[i] );
	}
	pulseFlashMessages();

	//Event.observe( 'date_of_birth', 'mouseover', showCalendar );
	
}

function pulseFlashMessages() {
	var msgs = $$( 'div.flashMsg' );
	for( var i = 0; i < msgs.length; i++ ) { 
		var el = msgs[ i ];
		new Effect.Highlight( el, { startcolor: '#88ff00', endcolor: '#f0ffe0' } );
		el.morph( 'color:#888;' );		
	}
}

function onLoadSuggestion() {
	Event.observe('name', 'keyup', getSuggestions);
	var my_div = document.createElement('div');
	Element.extend(my_div);
	my_div['id'] = 'results';
	my_div.addClassName('suggestion').hide();	
	$('name').up().insert( my_div );
	Event.observe('name', 'click', function() { $('results').hide(); } );
}

function getSuggestions() {
	var q = $('name').value;
	if ( nameValue != $('name').value ) {
		$('presetId').value = 0;
	}
	
	//alert( q );
	if( q.length > 2 ) 
		sendAjax( q );
	else 
		$('results').hide(); //innerHTML = '...';
}

function sendAjax( ext ) {
	var ajaxRequest = new Ajax.Request(
		ajaxUrl+ext, {
			method: 'get',
			//parameters: $('form').serialize(true),
			onComplete: getResponse
		}
	);
}

function waitForResponse() {
	$('resultsStatus').addClassName('loading');
	//$('resultsStatus').innerHTML = ''; 
}

function getResponse( t ) {
	//alert( t.responseText );
	var searchResults =  t.responseText.evalJSON();
	//alert( searchResults.length );
	if( searchResults.length == 0 ) {
		$('results').innerHTML = 'No suggestions';
		$('results').hide();
		return;
	}
	var qq = "" + $('name').value;
	var html = '<ul>';
	for (var i = 0; i < searchResults.length; i++) {
		var ss = searchResults[i]['name'];
		//ss.replace( new RegExp( qq, "gi" ), "<strong>"+qq+"</strong>" );
		var index = ss.toLowerCase().indexOf( qq.toLowerCase() ); //new RegExp( qq, "gi" ) );
		ss = ss.substring( 0, index ) + '<strong>' + ss.substring( index, index + qq.length ) + '</strong>' + ss.substring( index + qq.length );

		if( i%2==1 ) html += '<li class="odd">';
		else html += '<li class>';
		
		html += '<a href="#" onclick="updateForm(\''+ searchResults[i]['id'] +'\'); return false;"><em>'+
			ss +
			'</em>'+searchResults[i]['address']+'</a></li>';
		//html +='<li><a href="#">'+searchResults[i]['name']+' '+searchResults[i]['address']+'</a></li>';
	}
	html+= '</ul>';
	$('results').show().innerHTML = html;
}

function printArray( o ) {
	var s='<ul>';
	for( var k in o ) {
		if( typeof( o[k] ) == 'object' ) {
			s+= printArray( o[k] );
		} else {
			s+= '<li>' + k + " = " + o[k] + '</li>';
		}
	}
	s+= '</ul>';
	return s;
}



function updateForm( id ) {
	//$('message').innerHTML = printArray( $('form1').serialize(true) );
	var ajaxRequest = new Ajax.Request(
		ajaxUrl2+id, {
			method: 'get',
			//parameters: $('form').serialize(true),
			onComplete: getResponse2
		}
	);
}

function getResponse2( t ) {
	var searchResults =  t.responseText.evalJSON();
	if( searchResults.length == 0 ) {
		return;
	}
	for( var k in searchResults ) {
		$(k).value = searchResults[k];
	}
	nameValue = $('name').value;
	$('results').hide();
}
