/*----------------------------------------------------------//
iLinkTarget(id,successFn);设定一链接打开的页面结果显示一个html元素中
	id:要显示结的元素ID
	successFn:页面请求成功后执行的函数（可选）,参数:xThis为链接对象（DOM）;id为显示结果元素的ID

iHover(className1,className2);设定鼠标hover样式
	className1:初始Class
	className2:悬停Class

iUpFile(fn);
	jQuery上传文件,调用方法:jQuery(form).upFile(function);form为文件框所在的form,function为回调函数,函数参数为返回的文本值
iFormsubmit(fn);上传表单，fn为回调函数

iURL(url);
	请求url的结果赋值与一jQuery对象


inu.link();查找有iTarget的a标签，将链接的结果显示在iTarget目标中

iGetPosition();返回一个元素的位置数组，[0]为left,[1]为top

Event.pointerX(event);Event.pointerY(event);//鼠标所在位置

inuLoad.css(file);加载一个css文件，并添加到页面
inuLoad.html(file);加载一个HTML，返回HTML文本

xiaoliMoveDiv(target);设置一对象可移动,target为目标(默认为自已)

xiaoliCenter();设置一对象居中

oscillate(length,time,position,fn);振动，length振动像素，time持继时间,position:left、top,默认为top,fn执行完调用的函数

addOption(json);json如是json[{"text":"1","value":"2"}]则add到select,如是string就当作url进行请求;

clearOption()//清空select中的option

association(oSelect,url)//关联一个select,oSelect:被关联的select,url,值所在的url

inu.fileStyle();用于设置file样式的,文件框必须在<label class="fileOut"></lable>里，label会被设置为block

//-----------------------------------------------------------*/

jQuery(document).ready(function(){
//	inu.link();
});


jQuery.fn.iLinkTarget=function(id,successFn)
{
	var url=this.attr("href");
	function iTarget()
	{
		var xThis=this;
		jQuery.ajax({
			type:"post",
			url:url,
			success:function(str)
			{
				jQuery("#"+id).html(str);
				if(successFn!=undefined)
				{
					successFn(xThis,id);
				}
			}//success
		});
		return false;
	}
	this.unbind("click",iTarget);
	this.click(iTarget);
}

jQuery.fn.iHover=function(className1,className2)
{
	this.removeClass(className2).removeClass(className1).addClass(className1);
	this.hover(
		function(){jQuery(this).removeClass(className2).removeClass(className1).addClass(className1)},
		function(){jQuery(this).removeClass(className2).removeClass(className1).addClass(className2)}
	);
}

jQuery.fn.iUpFile=function(fn,json,fn0)
{
	this.submit(function(){
		if(fn0!=undefined)
		{
			if(fn0(this)===false)
			{
				return false;
			}
		}
		if(window.upFileIFrame==undefined){
			var iframe="<iframe frameborder='0' name='upFileIFrame' style='display:none' src='about:blank' id='upFileIFrame'></iframe>";
			jQuery("body").append(iframe);
		}
		jQuery(this).attr("target","upFileIFrame");
		//jQuery(this).submit();
		if(jQuery("#upFileIFrame").length>0)
		{
			jQuery("#upFileIFrame").load(function(){
				if(json=="json")
				{
					var returnValue=eval("("+window.upFileIFrame.document.getElementsByTagName("body")[0].innerHTML+")");
				}else{
					var returnValue=window.upFileIFrame.document.getElementsByTagName("body")[0].innerHTML;
				}
				fn(returnValue);
			//	setTimeout(function(){jQuery("#upFileIFrame").remove();},500);
			});
			return true;
		}
		return false;
	});
}

jQuery.fn.iFormsubmit=function(fn,json,fn0)
{
	this.submit(function(){
		if(fn0!=undefined)
		{
			if(fn0(this)===false)
			{
				return false;
			}
		}
		jQuery.ajax({
			type:"POST",
			url:this.action,
			data:jQuery(this).serialize(),
			dataType:json||"html",
			success:fn
		});
		return false;
	});
}

jQuery.fn.iURL=function(url,fn)
{
	var xThis=this;
	jQuery.ajax({
		type:"post",
		url:url,
		success:function(str)
		{
			xThis.html(str);
			if(fn!=undefined)
			{
				fn(xThis);
			}
		}
	});//ajax
}

jQuery.fn.iGetPosition=function()
{
	var element=this[0];
	var valueT = 0, valueL = 0;
	do{
		valueT += element.offsetTop  || 0;
		valueL += element.offsetLeft || 0;
		element = element.offsetParent;
	} while (element);
	return [valueL, valueT];
}


var inu=new Object();
inu.link=function()
{
	jQuery("a[@iTarget]").unbind("click");
	jQuery("a[@iTarget]").click(function(){
		var url=jQuery(this).attr("href");
		var target=jQuery(this).attr("iTarget");
		jQuery.ajax({
			type:"post",
			url:url,
			success:function(str)
			{
				jQuery("#"+target).html(str);
				if(pageEvent!=undefined){pageEvent()};
			}
		});//ajax
		return false;
	});//
}

var Event={
	pointerX: function(event){
   		return event.pageX || (event.clientX +(document.documentElement.scrollLeft || document.body.scrollLeft));
	},
	pointerY: function(event){
		return event.pageY || (event.clientY +(document.documentElement.scrollTop || document.body.scrollTop));
	}
}

var inuLoad=new Object();
inuLoad.css=function(file)
{
	var head = document.getElementsByTagName('head').item(0);
	var css = document.createElement('link');
    css.href = file;
    css.rel = 'stylesheet';
    css.type = 'text/css';
    css.id = 'loadCss';
	head.appendChild(css);
}
inuLoad.html=function(file)
{
	var returnString;
	jQuery.ajax({
		type:"get",
		url:file,
		async:false,
		success:function(str)
		{
			returnString=str;
		}
	});
	return returnString;
}


jQuery.fn.xiaoliMoveDiv=function(target)
{
	if(target==undefined){target=this}
	this.mousedown(function(event){
		var oTarget=target;
		oTarget.css("opacity","0.8");
		oTarget.css("filter","alpha(opacity=80)");
		var position=oTarget.iGetPosition();
		var x=Event.pointerX(event)-position[0];
		var y=Event.pointerY(event)-position[1];
		oTarget.attr({differenceX:x,differenceY:y});
		jQuery("#messageBase").find("div").bind("mousemove",{o:oTarget},moveDiv);
		jQuery(document).bind("mousemove",{o:oTarget},moveDiv);
		jQuery(document).bind("mouseup",{o:oTarget},upMoveDiv);
	});
	function moveDiv(event){
		var oTarget=event.data.o;
		var x=Event.pointerX(event)-oTarget.attr("differenceX")+"px";
		var y=Event.pointerY(event)-oTarget.attr("differenceY")+"px";
		oTarget.css({"top":y,"left":x});
		return false;
	}
	function upMoveDiv(event)
	{
		var oTarget=event.data.o;
		oTarget.css("opacity","1");
		oTarget.css("filter","alpha(opacity=100");
		jQuery(document).unbind("mousemove",moveDiv);
		jQuery(document).unbind("mouseup",upMoveDiv);
		jQuery("#messageBase").find("div").unbind("mousemove",moveDiv);
	}
}

jQuery.fn.xiaoliCenter=function()
{
	var xThis=this[0];
	xThis.style.display="block";
	var de=document.documentElement;
	var xTop=de.clientHeight/2-xThis.offsetHeight/2-30+de.scrollTop;
	xTop=(xTop<0)?10:xTop;
	
	var xLeft=de.clientWidth/2-xThis.offsetWidth/2;
	xThis.style.left=xLeft+"px";
	xThis.style.top=xTop+"px";
}

function jsonHandle(json,fnsuccess,fnerror)
{
	if(typeof json!="object"){document.write(json);}
	if(json["success"]!=undefined){fnsuccess(json["success"]);}
	if(json["error"]!=undefined){fnerror(json["error"]);}
	if(json["redirect"]!=undefined){window.location.href=json["redirect"];}
}

jQuery.fn.oscillate=function(length,time,position,fn)
{
	this.css('position','relative');
	var xThis=this;
	var sumTime=time;
	var sumLength=length;
	time=time||0;
	position=position||"top";
	function execOscillate()
	{
		if(time==0||time<0)
		{
			clearInterval(oscillateTime);
			xThis.css('position','static');
			if(fn!=undefined){fn(xThis);}
		}else{
			time=time-100;
			length=Math.floor(time/sumTime*sumLength);
		}
		if(parseInt(xThis.css(position))<0)
		{
			var positionL=(position=="left")?length*1+"px":0;
			xThis.css(position,positionL);
		}else{
			xThis.css(position,length*-1+"px");
		}
	}
	var oscillateTime=setInterval(execOscillate,100);
}


jQuery.fn.addOption=function(json,dataValue)
{
	var xThis=this;
	if(typeof json!="string")
	{
		for(var i=0;i<json.length;i++)
		{
			this[0].options[this[0].options.length]=new Option(json[i]["text"],json[i]["value"]);
		}
	}else{
		jQuery.ajax({
			type:"post",
			url:json,
			data:dataValue||null,
			dataType:"json",
			success:function(json2){
				for(var i=0;i<json2.length;i++)
				{
					xThis[0].options[xThis[0].options.length]=new Option(json2[i]["text"],json2[i]["value"]);
				}
			}
		});
	}
}

jQuery.fn.clearOption=function()
{
	for(var i=this[0].options.length-1;i>=0;i--)
	{
		this[0].options[i]=null;
	}
}

jQuery.fn.association=function(oSelect,url)
{
	var xThis=this;
	this.change(function(){	 
		oSelect.clearOption();
		var dataValue="selected="+xThis.val();
		oSelect.addOption(url,dataValue);
	});
	oSelect.clearOption();
	var dataValue="selected="+xThis.val();
	oSelect.addOption(url,dataValue);
}

inu.fileStyle=function()
{
	jQuery("label.fileOut").css({"display":"block","overflow":"hidden","position":"relative"});
	jQuery("label.fileOut input[@type=file]").css({"position":"absolute","right":"0","top":"2px","opacity":"0","height":"15px"});
	jQuery("label.fileOut").mousemove(function(event){
		if(event.target.className=="fileOut")
		{
			var right=event.target.offsetWidth-Event.offsetX(event);
			var top=Event.offsetY(event)
			jQuery(event.target).find("input[@type=file]").css({"right":right-5+"px","top":top-3+"px"});
		}
		jQuery("label.fileOut input[@type=file]").blur();
	});
	jQuery("div.fileOut").mouseover(function(){jQuery(this).find("input[@type=file]").css("right","1000px")});
	jQuery("div.fileOut").mouseout(function(){jQuery(this).find("input[@type=file]").blur();});
}
