var JQ = jQuery.noConflict();
var $submit_form;
var $submit_form_holder;
var current_comment_id;
var $dyn_form;
var $old_holder;
var is_submitting = false;
JQ(document).ready( installhook );

function checkValues(){
	var valid = true;
	var message = '';
	var element;
	JQ("[defaultvalue]").each( function( index ) {
		if( valid==false ) return;
		if( JQ(this).val()==JQ(this).attr("defaultvalue") ){
		
			JQ(this).val("");
		}
		element = JQ(this).get(0);
		if( JQ(this).attr("id")=="CommentBody" ){
			body = JQ(this).val();
			body.trim();
			if( body.length==0 ){
				
				message = 'Message coment is required!';
				valid = false;
			}			
		} else if( JQ(this).attr("id")=="CommentName" ){
			name = JQ(this).val();
			name.trim();
			if( name.length==0 ){
				message = 'Your Name is required!';
				valid = false;
			}
		} else if( JQ(this).attr("id")=="CommentEmail" ){
			var filter=/^.+@.+\..{2,3}$/ 
			if ( !filter.test(JQ(this).val() ) ){
				message = 'Valid email address is required!';
				valid = false;
			}

		}
		
	});
	if( valid==false ){
		alert( message );

		element.focus();
		return false;
	}
	return true;
}

function createOverlay( ){
	
	$form = JQ("#submit_comment");
	$holder = $old_holder;
	var offset = $form.parent().offset();
	if( $holder==null || $holder=='undefined' ){
		$form.parent().append("<div id='overlay'></div>");
		offset.left = 120;
		offset.top = 0;
		$old_holder = JQ("#comments").find("#last_comment_holder");
	//	alert($old_holder.attr("class") );
	}	
	else 	
		$holder.after("<div id='overlay'></div>");
	
	JQ("#overlay").css({'background':'url(../images/semi3.png) repeat scroll 0% 0% transparent','position':'absolute','index':'900'});
	JQ("#overlay").css("left",offset.left );
	JQ("#overlay").css("top", offset.top );
	JQ("#overlay").css("width",$form.parent().width() );
	JQ("#overlay").css("height", $form.parent().height() );
	// add the spinner
	JQ("#overlay").append("<img src='../images/spinner.gif' id='spinner' />");
	JQ("#spinner").css("left",(JQ("#overlay").width()-35 ) / 2 );
	JQ("#spinner").css("top",(JQ("#overlay").height()-35 ) / 2 );	
	JQ("#spinner").css("position","absolute" );
//	alert( JQ("#overlay").html() );
}

function installhook(){

	JQ("[defaultvalue]").each( function( index ) {
		JQ(this).val(JQ(this).attr("defaultvalue"));
	});
	//val(JQ("form :input").attr("defaultvalue"));

	JQ("[defaultvalue]").click(function(){
		if( JQ(this).val()==JQ(this).attr("defaultvalue") ){
			JQ(this).val("");
		}
	});
	JQ("[defaultvalue]").blur(function(){
		if( JQ(this).val().length==0 ){
			JQ(this).val(JQ(this).attr("defaultvalue"));
		}
	});
	
	JQ("#submit_comment").click(function(){
		if( is_submitting ) return;
		
		if( !checkValues()  ){
			return false;
		}	
		return true;//
		createOverlay(); 
	//	return false;
	
		is_submitting = true;
		var $form = JQ("#comment_form");
	//	JQ("#CommentName").attr("value","");
		JQ.post($form.attr('action'),$form.serialize(),
				function(data,stauts, request){
					var $status = JQ(data).find("status");						
					
					if( !$status || $status.text().length==0 ){
					//success			
						if( $dyn_form==null ) // submit from noraml form
							$old_holder.before( data );
						else 
							$old_holder.append( data );							
						cancelSubmit();
						
					} else {
						alert('failed');
						var $message = JQ(data).find("message");						
						alert($message.text() );
					}
					JQ("#overlay").remove();	
					is_submitting = false;
				},
		'text'
		);
		
		return false;
	});
	
	JQ("#captcha_img").click( function() {
		var $img = JQ("#captcha_img");
		$img.attr("src","/images/spinner_small.gif");
		JQ.get("/captcha", function(data){
			var $img = JQ("#captcha_img");
			$img.attr("src","/captcha?"+new Date().getTime());
			$img.removeAttr("width");
			$img.removeAttr("height");
		});
	} );
}

function moveForm(reply, elemId, commentId, type, level ){
	
	var $new_form;
	if( current_comment_id==elemId ){
		return false;
	}
	current_comment_id = elemId;
	
	if( $submit_form==null ){
		var $old_form = JQ("#comment_form");
		$submit_form = $old_form.clone();
		
		$new_form = $old_form.clone();
		$submit_form_holder = JQ("#response").html();
		$old_form.remove();
		JQ("#response").empty();
	} else {
		$new_form = $submit_form.clone();
		JQ("#response").empty();
	}
//	alert(reply.href);return false;
	$new_form.attr("action",reply.href);
	// show cancel button
	$new_form.find("#cancel-comment-reply-link").removeAttr("style");
	$new_form.find("#CommentLevel").attr("value", level );
		
	var $holder = JQ("#"+elemId);
	var $holder_parent = $holder.parent();
	var $new_holder ;
	var $container ;

	if( $holder_parent.get(0).tagName.toLowerCase()=="ol" && 
		$holder_parent.hasClass("children") ){
		$new_holder = $holder_parent.clone();
		$new_holder.removeAttr("id");
		width = $holder_parent.css("width");
		$new_holder.width(width);
		$container = $new_holder.children("li");
	} else if( $holder.get(0).tagName.toLowerCase()=="li" ){
		$new_holder = $holder.clone();
		$new_holder.removeAttr("id");
		$container = $new_holder;
	}
	$container.empty();
	
	$container.append($new_form);

	$wrap = $holder.children(".comment_wrap");
	padleft = $holder.outerWidth() - $holder.width();
	padleft = padleft>20?padleft:20;
	width = $wrap.width() - padleft*(level==1?level:level-1) ;

	$new_form.find("textarea,input").each( function(index){
		if( JQ(this).attr("id")!="math_captcha" )
			JQ(this).css( "width", width+"px" );
	});
	$old_holder = $holder;
	$holder.after( $new_holder );
	if( $dyn_form ){
		$dyn_form.remove();
	}
	$dyn_form = $new_holder;
	installhook();
	return false;
}

function cancelSubmit(){
	if( $dyn_form ){
			$dyn_form.remove();
	}
	$dyn_form = null;
	JQ("#response").html( $submit_form_holder );
	current_comment_id = null;
	installhook();
	return false;
}
