var ajax_kommentti = {
	init: function() {
		// Grab the elements we'll need.
		ajax_kommentti.form = document.getElementById('ajax_kommentti');
		ajax_kommentti.results_div = document.getElementById('posted_comment');
		ajax_kommentti.kommentit = document.getElementById('kommenttilista');
		ajax_kommentti.lahetys = document.getElementById('lahetys');
		ajax_kommentti.person =  document.getElementById('id_person_name');
		ajax_kommentti.person_notify =  document.getElementById('person_notify');
		ajax_kommentti.comment_notify =  document.getElementById('comment_notify');
		ajax_kommentti.person_ul =  document.getElementById('person_notify_ul');
		ajax_kommentti.comment_ul =  document.getElementById('comment_notify_ul');
		ajax_kommentti.person_input =  document.getElementById('id_person_name');
		ajax_kommentti.csubmit = document.getElementById('csubmit');

		// This is so we can fade it in later.
		YAHOO.util.Dom.setStyle(ajax_kommentti.results_div, 'opacity', 0);
		
		// Hijack the form.
		YAHOO.util.Event.addListener(ajax_kommentti.form, 'submit', ajax_kommentti.submit_func);		
		YAHOO.util.Event.addListener(ajax_kommentti.person, 'blur', ajax_kommentti.check_auth);
	},

	check_auth: function(e) {
		YAHOO.util.Event.preventDefault(e);
		YAHOO.util.Connect.setForm(ajax_kommentti.form);	   
		var cObj2 = YAHOO.util.Connect.asyncRequest('POST', '/kommentit/tarkasta_tunnus/', ajax_kommentti.person_callback);
	},

	person_callback: {
		success: function(o) {
			// This turns the JSON string into a JavaScript object.
			var response_obj = eval('(' + o.responseText + ')');
			YAHOO.util.Dom.setStyle(ajax_kommentti.person_ul, 'opacity', 0);
			var auth_notify_display = new YAHOO.util.Anim(ajax_kommentti.person_ul, 
				{ opacity: { to: 1 } }, 
				0.25, 
				YAHOO.util.Easing.easeIn);
			
			if(response_obj.success) { // The form had errors.
				
				ajax_kommentti.csubmit.disabled = false;
				
				YAHOO.util.Dom.setStyle(ajax_kommentti.person_input, 'background', '#cfc');
				// ajax_kommentti.person_notify.className = "ok"
				// ajax_kommentti.person_notify.innerHTML = ''
				// YAHOO.util.Dom.setStyle(ajax_kommentti.person_ul, 'display', 'block');
				// auth_notify_display.animate();
				
			} else { 

				ajax_kommentti.csubmit.disabled = true;
				
				YAHOO.util.Dom.setStyle(ajax_kommentti.person_input, 'background', '#fcc');
				
				if(response_obj.shortname) {
					ajax_kommentti.person_notify.innerHTML = '<span class="virhe">Name must be at least two characters long.</span>'
				} else {
					ajax_kommentti.person_notify.innerHTML = '<span class="virhe">This name has been reserved for a registered user.'
				}
				// ajax_kommentti.person_notify.className = "nonee"
				YAHOO.util.Dom.setStyle(ajax_kommentti.person_ul, 'display', 'block');
				auth_notify_display.animate();
				
			} // elseifsuccess

	  },
	   
		failure: function(o) { // we shouldn't ever go down this path.
			alert('Virhe (person): ' + o.status + " " + o.statusText );
		}
	},
	
	submit_func: function(e) {
		YAHOO.util.Event.preventDefault(e);

		// Remove any error messages being displayed.
		var form_fields = ajax_kommentti.form.getElementsByTagName('dd');
		for(var i=0; i<form_fields.length; i++) {
			if(YAHOO.util.Dom.hasClass(form_fields[i], 'error')) {
				ajax_kommentti.form.getElementsByTagName('dl')[0].removeChild(form_fields[i]);
			}
		}
		YAHOO.util.Connect.setForm(ajax_kommentti.form);
	   
		//Temporarily disable the form.
		for(var i=0; i<ajax_kommentti.form.elements.length; i++) {
			ajax_kommentti.form.elements[i].disabled = true;
		}
		
		// Display the send dialog
		ajax_kommentti.lahetys.style.display = 'block'
		
		// Make the request
		var cObj = YAHOO.util.Connect.asyncRequest('POST', '/kommentit/laheta/?xhr=True', ajax_kommentti.ajax_callback);
	},
			
	ajax_callback: {
		success: function(o) {
			// This turns the JSON string into a JavaScript object.
			var response_obj = eval('(' + o.responseText + ')');
			
			YAHOO.util.Dom.setStyle(ajax_kommentti.person_ul, 'display', 'none');
			YAHOO.util.Dom.setStyle(ajax_kommentti.comment_ul, 'display', 'none');
			
			// Set up the animation on the results div.
			var result_fade_out = new YAHOO.util.Anim(ajax_kommentti.results_div, 
				{ opacity: { to: 0 } }, 
				0.25, 
				YAHOO.util.Easing.easeOut);
		
			if(response_obj.errors) { // The form had errors.
				//result_fade_out.onComplete.subscribe(function() {
				//	ajax_kommentti.results_div.innerHTML = '';
				//	ajax_kommentti.display_errors(response_obj.errors);
				//});
				
				if(response_obj.person_name) {
					// Näytä kommenttivirhe
					
					YAHOO.util.Dom.setStyle(ajax_kommentti.person_input, 'background', '#fcc');
					
					YAHOO.util.Dom.setStyle(ajax_kommentti.person_ul, 'opacity', 0);
					var notify_display = new YAHOO.util.Anim(ajax_kommentti.person_ul, 
						{ opacity: { to: 1 } }, 
						0.25, 
						YAHOO.util.Easing.easeIn);
					
					ajax_kommentti.person_notify.innerHTML = '<span class="virhe">'+response_obj.person_name+'</span>'
					YAHOO.util.Dom.setStyle(ajax_kommentti.person_ul, 'display', 'block');
					notify_display.animate();					
				}

				if(response_obj.comment) {
					// Näytä kommenttivirhe

					YAHOO.util.Dom.setStyle(ajax_kommentti.comment_ul, 'opacity', 0);
					var notify_display = new YAHOO.util.Anim(ajax_kommentti.comment_ul, 
						{ opacity: { to: 1 } }, 
						0.25, 
						YAHOO.util.Easing.easeIn);
					
					ajax_kommentti.comment_notify.innerHTML = '<span class="virhe">Comment is a required field.</span>'
					YAHOO.util.Dom.setStyle(ajax_kommentti.comment_ul, 'display', 'block');
					notify_display.animate();					
				}
				
			} else if(response_obj.success) { // The form went through successfully.
				
				YAHOO.util.Dom.setStyle(ajax_kommentti.person_input, 'background', '#fff');
				
				var newcomment = document.createElement('div')
				YAHOO.util.Dom.setStyle(newcomment, 'opacity', 0);
				newcomment.style.display = 'none'
				newcomment.className = "uusi_kommentti"

				var kby = document.createElement('div')
				kby.className = "kby"

				var who = document.createElement('span')
				who.className = "who"
				who.innerHTML = '<a href="#kommentti'+ response_obj.comment_count +'">' + response_obj.comment_count + '. ' + response_obj.name + '</a>'

				var when = document.createElement('span')
				when.className = "when"
				when.innerHTML = response_obj.time
				
				var k = document.createElement('div')
				k.className = "k"
				k.innerHTML = response_obj.comment
				
				kby.appendChild(who)
				kby.appendChild(when)
				newcomment.appendChild(kby)
				newcomment.appendChild(k)
				
				// Display the send dialog
				ajax_kommentti.lahetys.style.display = 'none'
				
				ajax_kommentti.kommentit.appendChild(newcomment)
				
				YAHOO.util.Dom.setStyle(newcomment, 'display', 'block');
				var comment_fade_in = new YAHOO.util.Anim(newcomment, 
					{ opacity: { to: 1 } }, 
					1, 
					YAHOO.util.Easing.easeIn);
				comment_fade_in.animate();

			} // elseifsuccess
			result_fade_out.onComplete.subscribe(function() {
	 			//Re -enable the form.
				for(var i=0; i<ajax_kommentti.form.elements.length; i++) {
					ajax_kommentti.form.elements[i].disabled = false;
				}});
			result_fade_out.animate();
	  },
	   
		failure: function(o) { // we shouldn't ever go down this path.
			alert('Virhe: ' + o.status + " " + o.statusText );
		}
	},
	
	display_errors: function(error_obj) {
		var result_fade_out = new YAHOO.util.Anim(ajax_kommentti.results_div, 
			{ opacity: { to: 0 } }, 
			0.25, 
			YAHOO.util.Easing.easeOut);

			var success_message = document.createElement('p');
			success_message.innerHTML = 'There were errore:';
			var input_list = document.createElement('ul');
			var name_item = document.createElement('li');
			name_item.innerHTML = 'Name and comment are required'
			input_list.appendChild(name_item);

			YAHOO.util.Dom.setStyle(ajax_kommentti.results_div, 'display', 'block');
			var result_fade_in = new YAHOO.util.Anim(ajax_kommentti.results_div, 
				{ opacity: { to: 1 } }, 
				0.25, 
				YAHOO.util.Easing.easeIn);

				ajax_kommentti.results_div.appendChild(success_message);
				ajax_kommentti.results_div.appendChild(input_list);
				result_fade_in.animate();
	}
};

YAHOO.util.Event.addListener(window, 'load', ajax_kommentti.init);
