/*****************************************************************************/
/* Yleistä                                                                   */
/*****************************************************************************/

function ajax_update(anchor, element) {
	var link = anchor.getAttribute('href').split('?');	
	new Ajax.Updater(element, link[0], {asynchronous: true, method: 'get', parameters: 'ajax=1&' + link[1]});
	return false;
}

function ajax_remove(anchor, element) {
	var link = anchor.getAttribute('href').split('?');	
	new Ajax.Request(link[0], {asynchronous: true, method: 'get', parameters: 'ajax=1&' + link[1]});
	Element.hide(element);
	return false;
}

function time() {
	return (new Date()).getTime();	
}

/*****************************************************************************/
/* Edit in Place                                                             */
/*****************************************************************************/

var eip_id;

function eip(id) {
	if (eip_id) {
		alert('Voit muokata vain yhtä kohtaa kerrallaan.');
		return;
	}
	eip_id = id;
	Element.hide('eip_' + id);	
	Element.show('eipf_' + id);
}

function eip_cancel() {
	Element.hide('eipf_' + eip_id);	
	Element.show('eip_' + eip_id);
	eip_id = null;
}

/*****************************************************************************/
/* Live-kommentointi                                                         */
/*****************************************************************************/

var lc_ON						= false;
var lc_iteration 				= 0;

var lc_box;
var lc_form;
var lc_indicator;

var lc_last_update			= 0;
var lc_last_toggle			= 0;
var lc_last_comment 			= '';
var lc_last_comment_sent 	= 0;

var lc_service_id;
var lc_target_id;
var lc_offset;
var lc_limit;
var lc_user_id;
var lc_comment_id;

function lc_initialize() {
	lc_box			= $('commentsbox');
	lc_form 			= $('commentform');
	lc_indicator 	= $('indicator');
}

function lc_timeout() {
	setTimeout('lc_comments_get()', 250);	
}

function lc_toggle(checkbox) {
	
	if (time() < lc_last_toggle + 5000) {
		return false;
	}
	
	lc_ON = checkbox.checked;
	lc_last_toggle = time();
	
	if (lc_ON) {
		Element.addClassName(lc_box, 'lc');
		alert('Tosiaikainen kommentointi on nyt päällä.');
		lc_timeout();
	} 
	
	else {
		Element.removeClassName(lc_box, 'lc');
	}
	
}

function lc_comments_get() {
	if (lc_ON) {
		if (lc_last_update + 5000 > time()) {
			lc_timeout();
			return;
		}
		
		lc_last_update = time();
		var parameters = 'action=get&service_id=' + lc_service_id + '&target_id=' + lc_target_id + '&offset=' + lc_offset + '&limit=' + lc_limit + '&user_id=' + lc_user_id + '&comment_id=' + lc_comment_id + '&iteration='+ lc_iteration + '&ajax=1';
		new Ajax.Request('/comments.php', {asynchronous: true, method: 'get', parameters: parameters, onComplete: lc_comments_update});
	}
}

function lc_comments_update(request) {
	
	lc_iteration++;
	
	var count = parseInt(request.getResponseHeader('count'));
	
	if (count > 0) {
		
		lc_comment_id = request.getResponseHeader('comment_id');
		
		Element.cleanWhitespace(lc_box);
		
		while (lc_box.childNodes.length + count > lc_limit) {
			lc_box.removeChild(lc_box.firstChild);
		}
		
		new Insertion.Bottom(lc_box, request.responseText);
		
	}
	
	Element.hide(lc_indicator);
	
	//$('lc_stats').innerHTML = 'iteration: ' + lc_iteration + ' last_update: ' + lc_last_update;
	
	lc_timeout();
	
}

function lc_comment_submit() {
	
	var comment = lc_form.elements['comment'].value;
	
	if (comment.length == 0) {
		return false;
	}	
	
	if (lc_ON) {
	
		if (comment == lc_last_comment) {
			return false;
		} 
		
		if (time() < lc_last_comment_sent + 500) {
			return false;
		}
		
		Element.show(lc_indicator);
		
		lc_last_comment = comment;
		lc_last_comment_sent = time();
			
		var comment = escape(comment).replace(/\+/g, '%2B');
		
		var parameters = 'action=comment&service_id=' + lc_service_id + '&target_id=' + lc_target_id + '&comment=' + comment + '&ajax=1';
		
		new Ajax.Request('/comments.php', {asynchronous: true, method: 'get', parameters: parameters, onSuccess: function() { lc_last_update = 0; }});	
		
		lc_form.elements['comment'].value = '';
		
		return false;
		
	} 
	
	else {
		
		if (lc_form.elements['submit'].disabled) {
			return false;
		}
		
		lc_form.elements['submit'].disabled = true;
		
	}

	return true;
	
}

/*****************************************************************************/
/* Kuvien arviointi                                                          */
/*****************************************************************************/

function image_rate() {
	for (var n = 0; n < $('rateform').elements['rate'].length; n++) {
	   if ($('rateform').elements['rate'][n].checked) {
		   return true;
	   }
	}
	return false;
}

