var EVT = YAHOO.util.Event;
var DOM = YAHOO.util.Dom;
var CON = YAHOO.util.Connect;

var postForm = null;
var formVisible = false;
var formCommentId = 0;
var formPostId = 0;
var animating = false;

EVT.onDOMReady( function()
{

    // Hook up events for "reply to [name]" links
    var links = DOM.getElementsByClassName("replyLink");
    for(var i = 0; i < links.length; i++)
    {
		var parts = links[i].id.split("_");
		
        var commentId = parts[1];
		var postId = parts[2];
        
        links[i].href = "javascript:";
        EVT.addListener(links[i], "click", showForm, {post : postId, comment : commentId} );
    }
	
	// Hook up events for the "view comments" links
	var toggleLinks = DOM.getElementsByClassName("commentToggle");
	for(var i = 0; i < toggleLinks.length; i++)
	{
		var uid = toggleLinks[i].href.split("=")[1];
		toggleLinks[i].href = "javascript:";
		EVT.addListener(toggleLinks[i], "click", toggleComments, uid);	
	}
	
	// Hook up events for the "reply to post" links
	var toggleLinks = DOM.getElementsByClassName("commentLink");
	for(var i = 0; i < toggleLinks.length; i++)
	{
		var uid = toggleLinks[i].href.split("=")[1];
		toggleLinks[i].href = "javascript:";
		EVT.addListener(toggleLinks[i], "click", showForm, {post : uid, comment : -1});	
	}
	var frm = DOM.get("commentForm");
	
	frm.name.value = "Name";
	frm.url.value = "URL";
	
	EVT.addListener(frm.name, "focus", function(evt)
	{
		var fld = EVT.getTarget(evt);
		if(fld.value == "Name")
		{
			fld.value = "";
		}
	});
	
	EVT.addListener(frm.url, "focus", function(evt)
	{
		var fld = EVT.getTarget(evt);
		if(fld.value == "URL")
		{
			fld.value = "";
		}
	});
	
	EVT.addListener(frm.name, "blur", function(evt)
	{
		var fld = EVT.getTarget(evt);
		if(fld.value == "")
		{
			fld.value = "Name";
		}
	});
	
	EVT.addListener(frm.url, "blur", function(evt)
	{
		var fld = EVT.getTarget(evt);
		if(fld.value == "")
		{
			fld.value = "URL";
		}
	});
});

function toggleComments(evt, uid)
{
	var comments = DOM.get("comments_" + uid);
	comments.style.display = (comments.style.display == "none") ? "block" : "none";
}

function showForm( evt, obj )
{
    if(animating)
    {
        return;
    }
    
    var frm = DOM.get("commentForm");
    
    if( formVisible && (frm.post_id.value == obj.post) && (frm.parent_id.value == obj.comment) )
    {
        hideForm();
        return;
    }
    
	var frmContainer = DOM.get("formContainer");
	var target = EVT.getTarget(evt);
	if(obj.comment != -1)
	{
		var parent = target.parentNode;
		DOM.insertAfter( frmContainer, parent );
	}
	else
	{
		var parent = target.parentNode.parentNode;
		DOM.insertAfter( frmContainer, parent );
	}
	
	var frm = DOM.get("commentForm");
	frm.post_id.value = obj.post;
	frm.parent_id.value = obj.comment;
	formVisible = true;
	
	var attributes = {
        height: { from:0, to: 315 }
    };
    
    var anim = new YAHOO.util.Anim(frmContainer, attributes, 0.5, YAHOO.util.Easing.easeOut);
    anim.onComplete.subscribe( function() {
        animating = false;
    })
    anim.animate();
    animating = true;
}

function hideForm()
{
    if(animating)
    {
        return;
    }
    
	var attributes = {
        height: { to: 0 }
    };
    
    var anim = new YAHOO.util.Anim("formContainer", attributes, 0.5, YAHOO.util.Easing.easeOut);
    
    anim.onComplete.subscribe( function() {
       	var frm = DOM.get("formContainer");
    	var container = DOM.get("hiddenFormContainer");
    	container.appendChild(frm); 
    	animating = false;
    });
    formVisible = false;
    anim.animate();
    animating = true;
}
