var affirmationsScript = function () {

	var affirmationStored = false;

	var bindObservers = function () {
		unbindObservers();
		/*
		save_btns = $$('.btn_affirmation_save');
		if(save_btns) {
			save_btns.each(function(btn) {
				btn.addEvent('click', function(event) {affirmationsScript.saveAffirmation(event)});
			});
		}
		*/
		cancel_btns = $$('.btn_affirmation_cancel');
		if(cancel_btns) {
			cancel_btns.each(function(btn) {
				btn.addEvent('click', function(event) {affirmationsScript.cancelAffirmation(event)});
			});
		}

		increment_btns = $$('.affirmation_increment');
		if(increment_btns) {
			increment_btns.each(function(btn) {
				btn.addEvent('click', function(event) {affirmationsScript.incrementAffirmation(event)});
			});
		}

		if ($('text')) {
			$('text').addEvent('keyup', function(event) {affirmationsScript.checkCount(event);});
			$('text').addEvent('blur', function(event) {affirmationsScript.checkCount(event);});
		}
	}

	

	var unbindObservers = function () {
		save_btns = $$('.btn_affirmation_save');
		if(save_btns) {
			save_btns.each(function(btn) {
				btn.removeEvents('click');
			});
		}

		cancel_btns = $$('.btn_affirmation_cancel');
		if(cancel_btns) {
			cancel_btns.each(function(btn) {
				btn.removeEvents('click');
			});
		}

		increment_btns = $$('.btn_affirmation_increment');
		if(increment_btns) {
			increment_btns.each(function(btn) {
				btn.removeEvents('click');
			});
		}

		if ($('text')) $('text').removeEvents('keyup');
		if ($('text')) $('text').removeEvents('blur');
	}
	
	


	var cancelAffirmation = function (event) {
		affirmationButton = $(event.target);
		if (confirm('Are you sure you want to cancel this request?')) {
			affirmationButton.getParent("form").getElement('textarea').value = '';
		}
	}

	var saveAffirmation = function (event) {
		event.stop();
		if($('text').value.length > 500) {
			$choice = confirm('Your request will be cut off at 500 characters. Would you like to revise it before continuing?');
			if ($choice) return false;
		}
		affirmationButton = $(event.target);
		form = affirmationButton.getParent("form");
		affirmation = $$('div.affirmationRequest')[0];
		qString = form.toQueryString();

		req = new Request.JSON({
			url: '/views/ajax_saveAffirmation.php',
			data: qString,
			method: 'post',
			onSuccess: function(res) {
				//alert(res);
				if (res.view) {
					affirmationsScript.affirmationStored = false;
					affirmation.innerHTML = "<table class='affirmations'>"+res.view+"</table>";
					return true;
				}
				return false;
				//if (res.errors) $('ErrorCode').innerHTML = res.errors;
				bindObservers();
			},
			onFailure: function() {
				throw("Failed ajax connect in affirmationsScript.saveAffirmation");
			}
		}).send();
		return false;
	}
	
	var incrementAffirmation = function(event) {
		id = event.target.id.match(/[0-9]*$/);
		event.target.src = "/images/prayed.gif";
		event.target.removeEvents('click');
		event.target.getParent('.affirmation_increment').removeEvents('click');
		event.target.setStyle('cursor', 'default');
		//alert(id);
		req = new Request.JSON({
			url: '/views/ajax_incrementAffirmation.php',
			data: 'id='+id,
			method: 'post',
			onSuccess: function(res) {
				event.target.getParent('td').getNext('td.count').innerHTML = res.newCount;
			}
		}).send();
	}



	var checkCount = function() {
		text = $('text');
		count = text.value.length;
		if(count > 500) {
			text.value = text.value.substr(0, 500);
		}
		$('textCount').innerHTML=(500-text.value.length);
		if(text.clientHeight < text.scrollHeight) {while (text.clientHeight < text.scrollHeight) text.rows = text.rows+2;}
	}

	var init = function () {
		bindObservers();
		checkCount();
	}

	return {
		// Properties
		affirmationStored: affirmationStored,
		
		// Methods
		init: init,
		saveAffirmation: saveAffirmation,
		cancelAffirmation: cancelAffirmation,
		incrementAffirmation: incrementAffirmation,
		checkCount: checkCount
	}
}();

window.addEvent('load', affirmationsScript.init);