/*----------------------------------------
       文件上传前台控制检测程序 

  远程图片检测功能
  检测上传文件类型

　检测图片文件格式是否正确
　检测图片文件大小
　检测图片文件宽度
　检测图片文件高度
  图片预览

 -----------------------------------------*/

var ImgObj=new Image();            //建立一个图像对象

var AllImgExt=".jpg|.jpeg|.gif|.bmp|.png|"//全部图片格式类型
var FileObj,ImgFileSize,ImgWidth,ImgHeight,FileExt,ErrMsg,FileMsg,HasCheked,IsImg//全局变量 图片相关属性

//以下为限制变量
//var AllowExt=".jpg|.gif|.png|.txt|"    //允许上传的文件类型 &#320;为无限制 每个扩展名后边要加一个"|" 小写字母表示
var AllowExt=".jpg|.gif|.jpeg|"    //允许上传的文件类型 &#320;为无限制 每个扩展名后边要加一个"|" 小写字母表示

//var AllowExt=0
var AllowImgFileSize=300;        //允许上传图片文件的大小 0为无限制  单位：KB 

//Felix commented out
//var AllowImgWidth=800;            //允许上传的图片的宽度 &#320;为无限制　单位：px(像素)
//var AllowImgHeight=600;            //允许上传的图片的高度 &#320;为无限制　单位：px(像素)

var AllowImgWidth=1280;          //允许上传的图片的宽度 &#320;为无限制　单位：px(像素)
var AllowImgHeight=1024;           //允许上传的图片的高度 &#320;为无限制　单位：px(像素)
//Felix end
HasChecked=false;
/*
 * 检测图像属性
 * */
function CheckProperty(obj,id)        //检测图像属性
{
  FileObj=obj;
  if(ErrMsg!="")            //检测是否为正确的图像文件　返回出错信息并重置
  {
    ShowMsg(ErrMsg,false,id);
    return false;            //返回
  }
/* IE7 not working. commented and update to new code
  if(ImgObj.readyState!="complete")    //如果图像是未加载完成进行循环检测
  {
    setTimeout("CheckProperty(FileObj,"+id+")",500);
    return false;
  }

  ImgFileSize=Math.round(ImgObj.fileSize/1024*100)/100;//取得图片文件的大小
  ImgWidth=ImgObj.width            //取得图片的宽度
  ImgHeight=ImgObj.height;        //取得图片的高度
  **/ /* IE 7 new code 28 Sep 07 Start **/
    if(!window.XMLHttpRequest && ImgObj.readyState!="complete")    //如果图像是未加载完成进行循环检测
  {
    setTimeout("CheckProperty(FileObj,"+id+")",500);
    return false;
  }
//*/
  if(window.XMLHttpRequest){  //ie7
  	var newPreview = document.getElementById("newPreview");
	newPreview.className = 'picDataCss'
    newPreview.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = obj.value;
    newPreview.style.width = "1px";
    newPreview.style.height = "1px";

	ImgWidth = (newPreview.offsetWidth)
	ImgHeight = (newPreview.offsetHeight)
	ImgFileSize = Math.round(ImgWidth*ImgHeight/1024*100)/100;  //只能算出大概的文件大小。
	
  }else{  //ie6
  	ImgFileSize=Math.round(ImgObj.fileSize/1024*100)/100;//取得图片文件的大小
   	ImgWidth=ImgObj.width            //取得图片的宽度
   	ImgHeight=ImgObj.height;        //取得图片的高度
  }

/*** IE 7 End**/
  FileMsg="\nPhoto dimension:"+ImgWidth+"*"+ImgHeight+" px";
  FileMsg=FileMsg+"\nPhoto size:"+ImgFileSize+" K";
  FileMsg=FileMsg+"\nPhoto format:"+FileExt;

  if(AllowImgWidth!=0&&AllowImgWidth<ImgWidth)
    ErrMsg=ErrMsg+"\nWidth ("+ImgWidth+"px) exceeds max limit ("+AllowImgWidth+"px)";

  if(AllowImgHeight!=0&&AllowImgHeight<ImgHeight)
    ErrMsg=ErrMsg+"\nHeight ("+ImgHeight+"px) exceeds max limit ("+AllowImgHeight+"px)";

  if(AllowImgFileSize!=0&&AllowImgFileSize<ImgFileSize)
    ErrMsg=ErrMsg+"\nSize ("+ImgFileSize+"K) exceeds max limit("+AllowImgFileSize+"K)";

  if(ErrMsg!=""){
    ShowMsg(ErrMsg,false,id);
	document.getElementById('dec'+id).style.display="none";
	document.getElementById('dec'+id).value="";
	checkisAllRight();
	}
  else
    ShowMsg(FileMsg,true,id);
}

ImgObj.onerror=function(){ErrMsg='\nInvalid format or photo corrupted!'}
/*
 * 构造输出信息
 * */
function ShowMsg(msg,tf,id)    //显示提示信息 tf=true 显示文件信息 tf=false 显示错误信息 msg-信息内容
{
  msg=msg.replace("\n","<li>");
  msg=msg.replace(/\n/gi,"<li>");
  if(!tf)
  {
    document.all.UploadButton.disabled=true;
    FileObj.outerHTML=FileObj.outerHTML;
  	document.getElementById('MsgList'+id).innerHTML=msg;
    HasChecked=false;
	checkisAllRight();
  }
  else
  {
    document.all.UploadButton.disabled=false;
	/** IE 7 not working commented 28 Sep07
    if(IsImg){
     document.getElementById('PreviewImg'+id).innerHTML="<img src='"+ImgObj.src+"' width='80' height='100'>"
	  **/ /** new code for IE 7 28Sep 07 Start **/
	 
    if(IsImg){
    	if(window.XMLHttpRequest){  //ie7
    		var newPreview = document.getElementById('PreviewImg'+id);
    		newPreview.innerHTML = "";
			newPreview.className = 'picPreviewCss'
		    newPreview.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = ImgObj.src;
		    newPreview.style.width = "80px";
		    newPreview.style.height = "100px";
    	}else{
     		document.getElementById('PreviewImg'+id).innerHTML="<img src='"+ImgObj.src+"' width='80' height='100'>"
    	}
/*** End for IE 7**/
	 document.getElementById('dec'+id).style.display="";
	// document.getElementById('again'+id).style.display="";
	// document.getElementById('del'+id).style.display="";
	 checkisAllRight();
	 scroller('del'+id, 800);
	// checkisAllRight();
	 }else{
      document.getElementById('PreviewImg'+id).innerHTML="File Not Available";
	  document.getElementById('dec'+id).style.display="none";
	  document.getElementById('dec'+id).value="";
	  checkisAllRight();
	  }
    document.getElementById('MsgList'+id).innerHTML=msg;
    HasChecked=true;
  }
}
/*
 * 检测文件的扩展名
 * */
function CheckExt(obj,id)
{

  ErrMsg="";
  FileMsg="";
  FileObj=obj;
  IsImg=false;
  HasChecked=false;
  document.getElementById('PreviewImg'+id).innerHTML="";
  
  if(obj.value=="")return false;
  document.getElementById('MsgList'+id).innerHTML="Loading...";
  document.all.UploadButton.disabled=true;
  FileExt=obj.value.substr(obj.value.lastIndexOf(".")).toLowerCase();
  if(AllowExt!=0&&AllowExt.indexOf(FileExt+"|")==-1)    //判断文件类型是否允许上传
  {
    ErrMsg="\nInvalid file format.Please upload in "+AllowExt+" format, Current file format is"+FileExt;
    ShowMsg(ErrMsg,false,id);
    return false;
  }

  if(AllImgExt.indexOf(FileExt+"|")!=-1)        //如果图片文件，则进行图片信息处理
  {
    IsImg=true;
    ImgObj.src=obj.value;
    CheckProperty(obj,id);
    return false;
  }else{
    FileMsg="\nPhoto format:"+FileExt;
    ShowMsg(FileMsg,true,id);
  }
  
}

function resetPicDiv(id){

	document.getElementById('PreviewImg'+id).innerHTML="";
	document.getElementById('dec'+id).style.display="none";
	document.getElementById('dec'+id).value="";
	document.getElementById('MsgList'+id).innerHTML="";
	document.getElementById('del'+id).style.display="none";
	document.getElementById('again'+id).style.display="none";
	document.getElementById('divpic'+id).style.display="none";
	var outerstr=document.getElementById('divpic'+id).outerHTML;
	document.getElementById('divpic'+id).outerHTML="";
	document.getElementById('addtion').outerHTML=outerstr+'<div id=\"addtion\"></div>';

	var before=getBeforeDisplayDiv();
	if(checkisAllRight()){
		if(before!=undefined){
		var beforeid=before.id.substring(6);
		document.getElementById('again'+beforeid).style.display="";
		scroller('del'+beforeid, 800);
		}
		
		document.all.UploadButton.disabled=false;
	}else{
	document.all.UploadButton.disabled=true;
	}
	if(returnDisplayDivNo()==0){  //说明只有一个显示的
		if(getNextDisplayDiv()!=undefined&&before!=undefined){
		     var nextid=before.id.substring(6);
			getNextDisplayDiv().style.display="";
			document.getElementById('again'+nextid).style.display="none";
			document.getElementById('del'+nextid).style.display="none";
			document.all.UploadButton.disabled=true;
			
		}else{
			getNextDisplayDiv().style.display="";
			document.all.UploadButton.disabled=true;
		}
	}
	//checkisAllRight();
	
}


function displayNextPicDiv(id){
	if(id<6){
	var next=getNextDisplayDiv();
	if(next!=undefined){
	next.style.display="";
	document.all.UploadButton.disabled=true;
	document.getElementById('again'+id).style.display="none";
	var nextid=next.id.substring(6);
	document.getElementById('del'+nextid).style.display="";
	///alert(document.documentElement.scrollTop);
	scroller('del'+nextid, 800);
	
	}else{
	//alert('允许到最大图片数!');
	alert('Max limit reached.');
	}
	}
}
function checkisAllRight(){
	//IE 7 not working. commented
	//var divs=document.getElementsByTagName("DIV");
	// IE7 new code started
	var divs=document.getElementById('uploadFile').getElementsByTagName("DIV");
	// IE7 End
	var flag=true;
	for(var i=0;i<(divs.length-1);i++){
		if(divs[i].style.display!="none"){
			var id=divs[i].id.substring(6);
			if(document.getElementById('dec'+id).style.display=="none"){
			document.all.UploadButton.disabled=true;
			document.getElementById('again'+id).style.display="none";
			document.getElementById('del'+id).style.display="";
			flag=false;
			}
		}
	}
	/////////////////
	if(flag==false){
	for(var i=0;i<(divs.length-1);i++){
	if(divs[i].style.display!="none"){
			var id=divs[i].id.substring(6);
			document.all.UploadButton.disabled=true;
			document.getElementById('again'+id).style.display="none";
			document.getElementById('del'+id).style.display="";
			flag=false;
			
			}
		}
	}
	/////////////////////
	if(flag==true){
	
		for(var i=0;i<(divs.length-1);i++){
			var id=divs[i].id.substring(6);
			if(divs[i].style.display==""&&i>0){
			document.getElementById('again'+id).style.display="none";
			}
			var before=getBeforeDisplayDiv();
			if(before!=undefined){
		 	var beforeid=before.id.substring(6);
			document.getElementById('again'+beforeid).style.display="";
			document.getElementById('del'+beforeid).style.display="";
			}
		}
		document.all.UploadButton.disabled=false;
		
	}
	/////////////////
	return flag;
}

function test(){
	frames[0].scrollBy(0,(document.body.scrollHeight));
	///alert(document.body.scrollHeight);  
}


function getBeforeDisplayDiv(){
	var divs=document.getElementsByTagName("DIV")
	
	for(var i=0;i<(divs.length-1);i++){
	///alert(i);
		if(divs[i].style.display=="none"){
		if(i>0)return divs[i-1];
		}
	}
}
function getNextDisplayDiv(){
	var divs=document.getElementsByTagName("DIV")
	for(var i=0;i<(divs.length-1);i++){
		if(divs[i].style.display=="none"){
		return divs[i];
		}
	}
	
}
function returnDisplayDivNo(){
	var divs=document.getElementsByTagName("DIV");
	var no=0;
	for(var i=0;i<(divs.length-1);i++){
		if(divs[i].style.display==""){
		no++;
		}
	}
	return no;
}


// 说明 ：用 Javascript 实现锚点(Anchor)间平滑跳转
// 来源 ：ThickBox 2.1
// 整理 ：Yanfu Xie [xieyanfu@yahoo.com.cn]
// 网址 ：http://www.codebit.cn
// 日期 ：07.01.17

// 转换为数字
function intval(v)
{
	v = parseInt(v);
	return isNaN(v) ? 0 : v;
}

// 获取元素信息
function getPos(e)
{
	var l = 0;
	var t  = 0;
	var w = intval(e.style.width);
	var h = intval(e.style.height);
	var wb = e.offsetWidth;
	var hb = e.offsetHeight;
	while (e.offsetParent){
		l += e.offsetLeft + (e.currentStyle?intval(e.currentStyle.borderLeftWidth):0);
		t += e.offsetTop  + (e.currentStyle?intval(e.currentStyle.borderTopWidth):0);
		e = e.offsetParent;
	}
	l += e.offsetLeft + (e.currentStyle?intval(e.currentStyle.borderLeftWidth):0);
	t  += e.offsetTop  + (e.currentStyle?intval(e.currentStyle.borderTopWidth):0);
	return {x:l, y:t, w:w, h:h, wb:wb, hb:hb};
}

// 获取滚动条信息
function getScroll() 
{
	var t, l, w, h;
	
	if (document.documentElement && document.documentElement.scrollTop) {
		t = document.documentElement.scrollTop;
		l = document.documentElement.scrollLeft;
		w = document.documentElement.scrollWidth;
		h = document.documentElement.scrollHeight;
	} else if (document.body) {
		t = document.body.scrollTop;
		l = document.body.scrollLeft;
		w = document.body.scrollWidth;
		h = document.body.scrollHeight;
	}
	return { t: t, l: l, w: w, h: h };
}

// 锚点(Anchor)间平滑跳转
function scroller(el, duration)
{
	if(typeof el != 'object') { el = document.getElementById(el); }

	if(!el) return;

	var z = this;
	z.el = el;
	z.p = getPos(el);
	z.s = getScroll();
	z.clear = function(){window.clearInterval(z.timer);z.timer=null};
	z.t=(new Date).getTime();

	z.step = function(){
		var t = (new Date).getTime();
		var p = (t - z.t) / duration;
		if (t >= duration + z.t) {
			z.clear();
			window.setTimeout(function(){z.scroll(z.p.y, z.p.x)},13);
		} else {
			st = ((-Math.cos(p*Math.PI)/2) + 0.5) * (z.p.y-z.s.t) + z.s.t;
			sl = ((-Math.cos(p*Math.PI)/2) + 0.5) * (z.p.x-z.s.l) + z.s.l;
			z.scroll(st, sl);
		}
	};
	z.scroll = function (t, l){window.scrollTo(l, t)};
	z.timer = window.setInterval(function(){z.step();},13);
}	
	