if (!curr_comment)
	var curr_comment = false;
if (!comment_form_ajax)
	var comment_form_ajax=false;
var submitButton;

function show_hide_comment_form(id)
{
	var form = E('post_comment_form');
	var form_target = E('comm_form_container'+id);
	var wrap_source = E('add-comment'+curr_comment);
	var wrap_target = E('add-comment'+id);
	var parent_id = E('id_comment_parent');
	var text_area = E("id_input_text");
	if (E('create-comment'+id))
		var targetReplyBtn = E('create-comment'+id).getElementsByTagName('A')[0];
	if (E('create-comment'+curr_comment))
		var sourceReplyBtn = E('create-comment'+curr_comment).getElementsByTagName('A')[0];
	//alert('id='+id+"\ncurr="+curr_comment+"\npost_id"+post_id+"\nwrap_target.style.display="+wrap_target.style.display);
	
	// SWITCH VISIBLE STATE 
	if (wrap_target.style.display == 'none')
	{
		wrap_target.style.display = 'block';
		if (targetReplyBtn)
			targetReplyBtn.className = "reply close";
		if (sourceReplyBtn)
			sourceReplyBtn.className = "reply";
	}
	else
	{
		wrap_target.style.display = 'none';
		if (targetReplyBtn)
			targetReplyBtn.className = "reply";
		
	}

	// MOVE FORM TO TARGET
	if (curr_comment!==false && curr_comment!=id)
	{
			wrap_source.style.display = 'none';
			form_target.appendChild(form);
	}

	if (id!=post_id)
		parent_id.value = id;
	else
		parent_id.value = 0;
	
	curr_comment = id;
	if (wrap_target.style.display != 'none')
		text_area.focus();
	return false;
}

function toggle_fast_comment_form(id)
{
	var form, action, regexp;
	
	comment_form_ajax = true;
	form = E('post_comment_form');
	action = form.action;
	regexp = /\/comment_save\/\d+$/;

	action = action.replace(regexp, "/comment_save/"+id);
	form.setAttribute('action',action);

	post_id=id;

	show_hide_comment_form(id);
	
	return false;
}

function commentRequest(sbtn)
{
	var body, ok, form, URL, params_str, loader, user_type;
	ok = true;
	form = sbtn.form;
	
	// CHECK FIELDS
	body = E("id_input_text").value;
	body = jsTrim(jsStripTags(body));
	if (body == "" || body == " ")
	{
		alert(comment_error_empty_text);
		ok = false;
		sbtn.disabled=false;
	}
	if (E('add-comment'+post_id) && E('add-comment'+post_id).style.display != 'none')
		E("id_input_text").focus();
	
	//CHECK OpenId users
	if (ok)
	{
		user_type = getRadioValue(form, 'what_user')
		if ('lj'==user_type || 'openid'==user_type)
		{
			comment_form_ajax=false;
		}
	}


	if (comment_form_ajax)
	{
		URL='/ajax/blog/comment_save/';
		params_str = 'post_id='+post_id+"&";
		loader = E('comment_loader');

		
		
		// RECIVE REQUEST
		if (ok)
		{
			sbtn.disabled=true;
			loader.style.display = 'inline';
			params_str+= getForm(form);
			//alert(URL+"\n\n"+params_str);
			submitButton = sbtn;
			LoadData(URL, "commentRequestProcessing", 'commentSaving', 'POST', params_str);
		}
		//alert('return from commentRequest()');
		return false;
	}
	else
		sbtn.form.submit();
}

function commentRequestProcessing()
{
	var requestName, mainTagName, savingResult, loader;
	requestName = 'commentSaving';
	mainTagName = 'saving'
	loader = E('comment_loader');
	
	xml = commentGetXML(requestName, mainTagName);
	if (xml === false)
		return; 
 
	savingResult = xml.getAttribute('result');
 	
	if ('success'==savingResult)
	{
		loader.style.display = 'none';
		// SHOW EFFECTS
		successEffects(xml);

		// RESET FORM
		submitButton.form.reset();
		toggle_fast_comment_form(curr_comment);
	}
	else
	{
		loader.style.display = 'none';
		alert(xml.getAttribute('message'));
	}
	submitButton.disabled=false;
	UnsetRequest(requestName);
	//alert('return from commentRequestProcessing()');
	return;
}

function  getForm(form)  
{  
    var  str, value, name, elm;  
	str  =  "";  
    for(var  i  =  0;i  <  form.elements.length;i++)  
	{  
        elm  =  form.elements[i];
        value  =  elm.value;
        name  =  elm.name;
        switch(elm.type)  
		{
            case  "text":  
            case  "hidden":  
            case  "password":  
            case  "textarea":   
                str  +=  name  +  "="  +  encodeURI(value)  +  "&";  
                break;  
  
            case  "checkbox":  
            case  "radio":  
                if(elm.checked)  str  +=  name  +  "="  +  encodeURI(value)  +  "&";  
                break;  
  
            case  "select-one":  
                str  +=  name  +  "="  +  
                elm.options[elm.selectedIndex].value  +  "&";  
                break;  
        }  //  switch  
    }  //  for  
    str  =  str.substr(0,(str.length  -  1));  
    return  str;  
}

function commentGetXML(requestName, mainTagName)
{
	var Response=GetXMLResponse(requestName);	
	if (Response===false) return false;
	if (Response==='') return false;	
	var xml = Response.getElementsByTagName(mainTagName);
		
	if (!xml || xml.length==0)
	{
		UnsetRequest(requestName);
		return false;
	}	
	xml=xml[0];
	return xml;	
}

function successEffects(xml)
{
	var commentBtn, commentsCount;
	
	commentBtn = E('comment_post_btn_'+post_id);
	commentsCount = E('comments_count_btn_'+post_id);
	commentsCountBtn = E('favshrinkeble2_3:'+post_id);

	commentBtn.innerHTML = xml.getAttribute('message');
	commentBtn.style.color = '#4fb71c';
	if (commentsCount)
		commentsCount.firstChild.replaceData(0, commentsCount.firstChild.length, xml.getAttribute('comments_count')+' ');
	if (commentsCountBtn)
		commentsCountBtn.style.display = 'block';

}

function getRadioValue(form, radioName)
{
	var formElms = form.elements;

	for(var i=0; i<formElms.length; i++)
	{
		if (formElms[i].name==radioName)
		{		
			if (formElms[i].checked)
				return encodeURI(formElms[i].value);
		}
	}
	return false;
}

function sendComment (event)
{
	if (!event) var event = window.event;
	var keycode = event.keyCode ? event.keyCode : event.which ? event.which : null;

	if (!event.ctrlKey) return;

	if (keycode == 13)
	{
		var targ;
		if (event.target) targ = event.target;
		else if (event.srcElement) targ = event.srcElement;
		if (targ.nodeType == 3) // defeat Safari bug
			targ = targ.parentNode;
		var submitBtn = targ.parentNode.getElementsByTagName('input')[0];
		if (submitBtn) {
			submitBtn.disabled = true;
			commentRequest(submitBtn);
		}
		if (event.preventDefault)
		{
			event.preventDefault();
			event.stopPropagation();
		}
		else
		{
			event.returnValue = false;
			event.cancelBubble = true;
		}
		return false;
	}
	else if (keycode == 36)
	{
		document.location = '/';
	}
}

document.onkeydown = sendComment;
