var abstractFolder = "servlets";
var outputDiv = "abstractDiv";
Event.observe(window, 'load', init, false);

function init(){
    
	new Ajax.Request(abstractFolder + "/abstract/get/", {
		method: 'get',
		onSuccess: function(transport) {
			
			if (transport.status == 200) {

				$(outputDiv).update(transport.responseText);
			}
			else {
			
				$(outputDiv).update('<p style="color: red;">Problem communicating with the server! Please repeat the action.</p>');
			}
		}
	});
}

	
function getAbstractForm() {
		
	new Ajax.Request(abstractFolder + "/abstract/get/", {
		method: 'get',
		onSuccess: function(transport) {
			
			if (transport.status == 200) {

				$(outputDiv).update(transport.responseText);
			}
			else {
			
				$(outputDiv).update('<p style="color: red;">Problem communicating with the server! Please repeat the action.</p>');
			}
		}
	});
}
	
function validateForm(formElem) {
	
	formElem = $(formElem);
	
	var abstract_title = formElem.down('textarea[name=abstract_title]').getValue();
	var author = formElem.down('input[name=author]').getValue();
	var co_author = formElem.down('textarea[name=co_author]').getValue();
	var institution = formElem.down('textarea[name=institution]').getValue();
	var institution_adress = formElem.down('textarea[name=institution_adress]').getValue();
	var country = formElem.down('select[name=country]').getValue();
	var phone = formElem.down('input[name=phone]').getValue();
	var fax = formElem.down('input[name=fax]').getValue();
	var email = formElem.down('input[name=email]').getValue();
	var types_of_session = formElem.down('select[name=types_of_session]').getValue();
	var abstract = formElem.down('textarea[name=abstract]').getValue();
	var verificationCode = formElem.down('input[name=verificationCode]').getValue();
	
	var errMsg = "";
	
	if(abstract_title.empty() || author.empty() || co_author.empty() || institution.empty() || institution_adress.empty() || phone.empty() || email.empty() || abstract.empty()) {
			
		errMsg += '<p>You must enter the required fields!(*)</p>\n';
	}
	
	
	if(country.empty()) {
		errMsg += '<p>Please choose a country!</p>\n';
	}
	
	
	phoneFilter = /^\+\d{1,3}\s\d{1,3}\s\d{4,7}$/;
	if(!phone.empty() && !phoneFilter.test(phone)) {
		errMsg += '<p>The phone number you entered is not valid!</p>\n';
	}
	
	if(!fax.empty() && !phoneFilter.test(phone)) {
		errMsg += '<p>The fax number you entered is not valid!</p>\n';
	}
	
	var emailFilter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if(!email.empty() && !emailFilter.test(email)) {
		errMsg += '<p>The email you entered is not valid!</p>\n';
	}
	
	if(types_of_session.empty()) {
		errMsg += '<p>Please choose a type of session!</p>\n';
	}
	
	if(abstract.length > 2500) {
			
		errMsg += '<p>The text you have entered is too long (abstract 2500 characters max)!</p>\n';
	}
	
	if(verificationCode.empty()) {
	
		errMsg += '<p>You must enter a verification code!</p>\n';
	}
	
	return errMsg;
}

function submitAbstract(e) {
	
	formElem = Event.element(e);
	formElem.disabled = true;
	$('submit').disabled = true;

	Event.stop(e);
	
	var responseText = $('responseText');
	
	errMsg = validateForm(formElem);
	
	if(!errMsg.empty()) {
		responseText.update(errMsg);
		formElem.disabled = false;
		$('submit').disabled = false;
		return;
	}
		
	var params = formElem.serialize(true);
			
	new Ajax.Request(abstractFolder + "/abstract/submit/", {
		method: 'post',
		parameters: params,
		onSuccess: function(transport) {
			
			if (transport.status == 200) {
				$(outputDiv).update(transport.responseText);
			}
			else {
				responseText.update('<p style="color: red;">Problem communicating with the server! Please repeat the action.</p>');
			}
			formElem.disabled = false;
			$('submit').disabled = false;
		}
	});
}

/*
function countRemainChars(e) {
	var maxChars = 250;
	
	var commentText = Event.element(e).getValue();
	var remain = maxChars - commentText.length;

	$('nummberOfRemainChars').update(remain);
}
*/

function limitText(e, maxChars, remainCharsNumberField) {
	
	var maxChars = 2500;
	var limitCount = $('remainCharsNumber');
	var limitField = Event.element(e);
	
	if (limitField.getValue().length > maxChars) {
		limitField.value = limitField.getValue().truncate(maxChars, "");
	} else {
		limitCount.update(maxChars - limitField.getValue().length);
	}
	
}
