var _theContactsForEmployerControl = null;

function ContactsForEmployerControl() {
	this.contact = null;
	
	this.fetchPage = '/get_contacts_for_employer';
}

ContactsForEmployerControl.prototype = {
    'initialize' : function() {
		var prev = $('previous-contact');
		
	    this.contact  = $('contact');
		this.onchange = bind(this.onchange, this);

		if(!isUndefinedOrNull(prev)) {
		    this.previousContact = prev.value;
		} else {
		    this.previousContact = null;
		}
		this.makeOption = bind(this.makeOption, this);
		this.onchange();
	},
	
	'makeOption' : function(contact) {
		if(!isUndefinedOrNull(this.previousContact) && this.previousContact == contact.id) {
			return OPTION({'value':contact.id, 'selected':'selected'}, contact.name);		
		} else {
			return OPTION({'value':contact.id}, contact.name);
		}		
    },
	
	'setContacts' : function(res) {
	    replaceChildNodes(this.contact, map(this.makeOption, res));
    },
	
	'onchange' : function(e, keepUID) {
	    if(!isUndefinedOrNull(keepUID)) { 
		    if(keepUID == true) this.previousContact = getSelected(this.contact).value; 
			else this.previousContact = keepUID;
		}
	    this._defer = loadJSONDoc(this.fetchPage);
		this._defer.addCallback(bind(this.setContacts, this));
		return true;
    }
}		


function hookContactsForEmployerControl() {
    var form = getElementsByTagAndClassName('*', 'ContactsForEmployerControl');
	
	log('contactsforemployer', form);
	if(form.length == 1) {
	    _theContactsForEmployerControl = new ContactsForEmployerControl;
		_theContactsForEmployerControl.initialize();
    }
	return true;
}

addLoadEvent(hookContactsForEmployerControl);
	
		
		
