var crating = {

	init: function() {
        crating.add_rating_listeners()
	},

	add_rating_listeners: function() {
		crating.raise_links = YAHOO.util.Dom.getElementsByClassName('raise');
		crating.lower_links = YAHOO.util.Dom.getElementsByClassName('lower');
		crating.hide_links = YAHOO.util.Dom.getElementsByClassName('hide');
		crating.show_links = YAHOO.util.Dom.getElementsByClassName('show');
		
		for(var i=0, max=crating.raise_links.length; i<max; i++) {
			YAHOO.util.Event.addListener(crating.raise_links[i], 'click', crating.do_comment);
		}        

		for(var i=0, max=crating.lower_links.length; i<max; i++) {
			YAHOO.util.Event.addListener(crating.lower_links[i], 'click', crating.do_comment);
		}        

		for(var i=0, max=crating.hide_links.length; i<max; i++) {
			YAHOO.util.Event.addListener(crating.hide_links[i], 'click', crating.hide_comment);
		}        

		for(var i=0, max=crating.show_links.length; i<max; i++) {
			YAHOO.util.Event.addListener(crating.show_links[i], 'click', crating.show_comment);
		}
	},

	do_comment: function(e) {
		rateform = $(this.id + '_form');
		YAHOO.util.Connect.setForm(rateform);
		var cObj = YAHOO.util.Connect.asyncRequest('POST', '/kommentit/rate/?xhr=True', crating.rating_callback);
	},
    
	show_comment: function(e) {
        // parent = $('kl' + this.id.substr(0,this.id.length-5))
        // body = YAHOO.util.Dom.getElementsByClassName('k', '', parent)[0];
        body = this.parentNode.parentNode.parentNode.childNodes[3]
        // showlink = YAHOO.util.Dom.getElementsByClassName('show', '', parent)[0];
        showlink = this

        YAHOO.util.Dom.setStyle(body, 'display', 'block');
        showlink.innerHTML = '&middot; piilota';
        YAHOO.util.Event.addListener(showlink, 'click', crating.hide_comment);
    },
        
	hide_comment: function(e) {
        // parent = $('kl' + this.id.substr(0,this.id.length-5))
        // body = YAHOO.util.Dom.getElementsByClassName('k', '', parent)[0];
        body = this.parentNode.parentNode.parentNode.childNodes[3]
        // showlink = YAHOO.util.Dom.getElementsByClassName('show', '', parent)[0];
        showlink = this
        
        YAHOO.util.Dom.setStyle(body, 'display', 'none');
        showlink.innerHTML = '&middot; näytä';
        YAHOO.util.Event.addListener(showlink, 'click', crating.show_comment);
    },
    
    hide_just_rated_comment: function(cid) {
        parent = $('kl' + cid)
        // body = YAHOO.util.Dom.getElementsByClassName('k', '', parent)[0];
        // showlink = YAHOO.util.Dom.getElementsByClassName('show', '', parent)[0];
        body = $('kbody' + cid)
        showlink = parent.childNodes[1].childNodes[1].childNodes[5]
        
        YAHOO.util.Dom.setStyle(body, 'display', 'none');
        showlink.innerHTML = '&middot; näytä';
        YAHOO.util.Event.addListener(showlink, 'click', crating.show_comment);
    },
    
	rating_callback: {
		success: function(o) {
		    // This turns the JSON string into a JavaScript object.
		    var response_obj = eval('(' + o.responseText + ')');
		
			if(response_obj.success) { // The form went through successfully.                

                comment_head = $('khead' + response_obj.comment_id)
                comment_head.innerHTML = response_obj.head_html;

                if(response_obj.hide_comment) {
                    crating.hide_just_rated_comment(response_obj.comment_id);
                }
			} // ifsuccess
	  }, // success
	   
		failure: function(o) { // we shouldn't ever go down this path.
			alert('Virhe: ' + o.status + " " + o.statusText );
		}
	} // callback
    
}; // tags

var $ = YAHOO.util.Dom.get;
YAHOO.util.Event.addListener(window, 'load', crating.init);
