/**
 * Creator: khastie
 * Date: Apr 10, 2009
 * Time: 11:18:37 AM
 * Contents are property of Cappex.com LLC, and strictly confidential.
 */

global.trace('Loading ContactImporter.js');

/**
 * CLASS: ContactImporter
 * DESCR:
 * USAGE:
 * EXMPL:
 */

var ContactImporter = new Class({

	options : {
		ajaxUrl : null
	},

	ajax : Class.empty(),

	initialize : function (options) {

		this.setOptions(options);

		this.initAjax();

	},

	initAjax : function () {

		this.ajax = new AjaxCpx(this.options.ajaxUrl, {

			update: 'contactImporterTarget',

			evalScripts: true,

			onComplete: function() {

				if (!this.transport.responseText.contains('errorMsg')) {

					$('checkAtLeastOne').removeClass('jsHide');
					$('allContactsList').setStyle('background', '#fff');

				}

				$('contactImporterButton').removeAttribute('disabled');
				$('contactImporterButton').removeClass('disabledBySubmit');
			}
		});

	},

	importContacts: function () {
		if (!$('contactImporterButtonIndicator')) {
			this.ajax.buildIndicator('contactImporterButton', 'after');
		}
		this.ajax.indicator.setStyle('display', '');		
		this.ajax.request($('contactImporterForm').toQueryString());
	},

	addContact: function (email) {

		global.trace('ContactImporter.addContact: ' + email);

		var newContactElem = $('dummyContact').clone();
		this.setContactData(newContactElem, this.generateNewContactID(), '', email);
		$E('.contactCheckbox', newContactElem).setAttribute('checked', 'checked');
		newContactElem.removeClass('jsHide');
		newContactElem.injectInside('addedContacts');
		$('allContactsList').setStyle('background', '#fff')
	},

	validateEmail: function (email) {

		var ajaxValidator = new Ajax('/ajax/util/validateEmail.jsp', {

			onComplete: function () {

				if (ajaxValidator.transport.responseText.contains('true')) {
					this.addContact(email);
					$('addEmailErrorMsg').addClass('jsHide'); // remove error if shown
				} else {
					$('addEmailErrorMsg').removeClass('jsHide');
				}
			}.bind(this)
		});
		
		ajaxValidator.request('email=' + email);
	},

	generateNewContactID: function() {

		var contactElems = $ES('#addedContacts .contact');
		var lastContactID = contactElems[contactElems.length - 1].id.replace('addedContact', '');
		
		if (lastContactID == 'dummyContact') {
			return 0;
		} else {
			return parseInt(lastContactID) + 1;
		}
		
	},

	setContactData: function (contactElem, contactID, name, email) {
		
		var checkboxElem = $E('input', contactElem);
		var emailElem = $E('.contactEmail', contactElem);
		var nameElem = $E('.contactName', contactElem);

		contactElem.setAttribute('id', 'addedContact' + contactID);

		checkboxElem.setAttribute('id', 'contactCheckbox' + contactID);
		checkboxElem.setAttribute('defaultChecked', 'true'); // default to checked

		checkboxElem.setAttribute('checked', 'checked'); // default to checked
		checkboxElem.setAttribute('value', email);

		emailElem.setAttribute('id', 'addedContactEmail' + contactID);
		emailElem.setHTML(email);

		nameElem.setAttribute('id', 'addedContactName' + contactID);
		nameElem.setHTML(name);

	},

	test : function () {

	}
});

ContactImporter.implement(new Options);