// JavaScript Document

// prevent site from being iframed
//if (top!=self) top.location.replace(location.href);

// Hinted form
(function($)
{
	$.fn.hint = function(){
		var $this = $(this);
		if (!$this.length) return $this;
		
		// empty all the hint
		$this.submit(function(){
			$(this).find("input[hint],textarea[hint]").each(function(){
				if ($(this).hasClass('empty'))
					$(this).val("");
			});
			return true;
		});
		
		$this.find("input[hint],textarea[hint]").each(function(){
			var $this = $(this);
			if (!$this.val()) {
				$this.addClass('empty');
				$this.val($this.attr('hint'));
			}
			
			$this.focus(function(){
				var $this=$(this);
				if ($this.hasClass('empty')){
					$this.val('');
					$this.removeClass('empty');
				}
				return true;
			});
			
			$this.blur(function(){
				var $this=$(this);
				if (!$this.val()) {
					$this.addClass('empty');
					$this.val($this.attr('hint'));
				}
				return true;
			});
		});
		
		return $this;
	};
	
	$.fn.rehint = function() {
		$(this).find("input[hint],textarea[hint]").each(function(){
			if (!$(this).val()) $(this).val($(this).attr("hint")).addClass('empty');
		});
		
		return $(this);
	}
})(jQuery);

// Turn Form into AJAX Submit
(function($){
	$.fn.ajaxForm = function(){
		$(this).submit(function(){
			var $this = $(this);
			var func;
			$this.find("button[type=submit]").attr("disabled","disabled").addClass("disabled");
			$.ajax({
				url:$this.attr("action"),
				type:$this.attr("method"),
				data:$this.serialize(),
				success: function(data,status,xml){
					$this.find("button[type=submit]").attr("disabled","").removeClass("disabled");
					var ret = data.split('<>');
					var message;
					if (ret[0]=='C') {
						message=ret[1];
					} else {
						message=data;
					}
					$("<a />").pbox({title:$this.attr('title'),href:'@<div class="pboxMessage">'+message+'</div>'}).click();
				},
				error: function(xml,status) {
					$this.find("button[type=submit]").attr("disabled","").removeClass("disabled");
				}
			});
			return false;
		});
	}
})(jQuery);

// JavaScript Form Submit
function jsSubmit(action,data,method,target) {
	if (typeof(action)=='undefined') action = '';
	if (typeof(method)=='undefined') method = 'get';
	if (typeof(target)=='undefined') target = '_self';
	
	$form = $("<form />").attr("action",action).attr("method",method).attr("target",target).css("display","none").appendTo("body");
	for (var i=0; i<data.length; i++) {
		$("<input />").attr("type","hidden").attr("name",data[i].name).attr("value",data[i].value).appendTo($form);
	}
	$form.submit();
}

function BindLimiter(name)
{
	$(name).each(function(){
		var tex = $(this).val();
		var len = $(this).hasClass("empty")?0:tex.length;
		var limit = $(this).attr("limit");
		var count = $(this).attr("count");
		$(count).text(""+(limit-len));
	});
	
	$(name).keypress(function(e)
	{
		var enter = $(this).attr("enter");
		if (!enter && e.keyCode==13) return false;
		var tex = $(this).val();
		var len = tex.length+1;
		var limit = $(this).attr("limit");
		var count = $(this).attr("count");
		if(len > limit){
			return false;
		}
		$(count).text(""+(limit-len));
	});

	$(name).keydown(function(e)
	{
		if (e.keyCode==8)
		{
			var tex = $(this).val();
			var len = tex.length-1;
			var limit = $(this).attr("limit");
			var count = $(this).attr("count");
			
			if (len>=0) $(count).text(""+(limit-len));
		}
	});
}

function limiter(name,count,stat)
{
	var tex = $(name).val();
	var len = tex.length;
	if(len > count){
		tex = tex.substring(0,count);
		$(name).val(tex);
		return false;
	}
	$(stat).html(""+(count-len));
}

function shorten(str,len,mid)
{
	if (str.length > len)
	{
		if (mid==true)
			return str.substr(0,len-10)+"..."+str.substr(str.length-7);
		else
			return str.substr(0,len-3)+"...";
	}
	else
	{
		return str;
	}
}

function triggerAjax($name,$type,$url,$data,$loading_msg,$hide_done,$callback)
{
	$($name).css("display","none");
	$($name+"_tick").css("display","none");
	$($name+"_warning").css("display","none");
	$($name+"_loading").css("display","");

	$($name+"_message").html($loading_msg);
	$($name+"_message").css("color","#bbbbbb");
	$($name+"_message").css("display","");

	$.ajax({
		type: $type,
		url: $url,
		data: $data,
		success: function(msg) {
			if (msg.substr(0,2) != 'OK')
			{
				$($name+"_message").css("color","#ff0000");
				$($name+"_message").html(msg);
		
				$($name+"_loading").css("display","none");
				$($name).css("display","");
				$($name+"_warning").css("display","");
			}
			else
			{
				data = msg.split("<>");
				$($name+"_message").css("color","#bbbbbb");
				$($name+"_message").html(data[0].substr(3));
				$($name+"_loading").css("display","none");
				$($name+"_tick").css("display","");
				if (!$hide_done) $($name).css("display","");
				if (typeof($callback)=="function") $callback(msg);
			}
		},
		error: function() {
			$($name+"_message").css("color","#ff0000");
			$($name+"_message").html("connection error.");
			$($name+"_loading").css("display","none");
			$($name).css("display","");
			$($name+"_warning").css("display","");
		}
	});
}

(function($)
{
	$.fn.hint = function(){
		var $this = $(this);
		if (!$this.length) return $this;
		
		// empty all the hint
		$this.submit(function(){
			$("input[hint], textarea[hint]").each(function(){
				if ($(this).hasClass('empty'))
					$(this).val("");
			});
		});
		
		$this.find("input[hint], textarea[hint]").each(function(){
			var $this = $(this);
			if (!$this.val()) {
				$this.addClass('empty');
				$this.val($this.attr('hint'));
			}
			
			$this.focus(function(){
				var $this=$(this);
				if ($this.hasClass('empty')){
					$this.val('');
					$this.removeClass('empty');
				}
			});
			
			$this.blur(function(){
				var $this=$(this);
				if (!$this.val()) {
					$this.addClass('empty');
					$this.val($this.attr('hint'));
				}
			});
		});
		
		return $this;
	};
})(jQuery);
