/**
 * 图片自适应大小 根据此方法,来判断是否选择的图片和预定的相差不大
 * @param ele file控件对象
 * @param imageFile  图片对象
 * @param divObject 当图片不符合的话,用于重新生成file对象
 * @param validateType 验证的格式
 * @param nMaxWidth 控制图片显示时,用来计算的宽
 * @param nMaxHeight 控制图片显示时,用来计算的高
 * @param isEqual 是否有固定大小 Y or N
 * @param isNeed 是否必须 Y or N
 * @param img_width 上传图片应该符合的宽度
 * @param img_height 上传图片应该符合的高度
 */
function proDownImageCheck(ele,imageFile,divObject,validateType,isEqual,isNeed,nMaxWidth,nMaxHeight,img_width,img_height)
{
　　  var image=new Image();
　　　var myImage=document.getElementById(imageFile);
	 image.src=myImage.src;
　　　if(image.width>0 && image.height>0)
	 {
　　　	if(isEqual!='' && isEqual.length>0 && isNeed!='' && isNeed.length>0)
		{
			if(isEqual=='Y' && (isNeed=='Y' || isNeed=='N'))
			{
				if(Math.abs(image.width-img_width)<=15 && Math.abs(image.height-img_height)<=15)
				{
					var rate = (nMaxWidth/image.width < nMaxHeight/image.height)?nMaxWidth/image.width:nMaxHeight/image.height;
			　　		if(rate <= 1)
					{　
			　　 		myImage.width = image.width*rate;
			　　	 		myImage.height =image.height*rate;
			　　		}
			　　		else {
			　　　　　　	myImage.width = image.width;
			　　　　　　	myImage.height =image.height;
			　　　　　}
					myImage.style.display = 'inline';
				}
				else
				{
					alert('请选择宽为:'+img_width+',高为:'+img_height+'的图片');
					myImage.style.display = 'none';
					inintHtmlFile(ele,imageFile,divObject,validateType,isEqual,isNeed,nMaxWidth,nMaxHeight,img_width,img_height);
				}
			}
			else if(isEqual=='N' && (isNeed=='Y' || isNeed=='N') && img_width==800 && img_height==480)
			{
				if(image.width <= img_width && image.height <= img_height)
				{					
					var rate = (nMaxWidth/image.width < nMaxHeight/image.height)?nMaxWidth/image.width:nMaxHeight/image.height;
			　　		if(rate <= 1)
					{　
			　　 		myImage.width = image.width*rate;
			　　	 		myImage.height =image.height*rate;
			　　		}
			　　		else {
			　　　　　　	myImage.width = image.width;
			　　　　　　	myImage.height =image.height;
			　　　　　}
					myImage.style.display = 'inline';
				}
				else
				{
					alert('请选择宽为:'+img_width+',高为:'+img_height+'的图片');
					myImage.style.display = 'none';
					inintHtmlFile(ele,imageFile,divObject,validateType,isEqual,isNeed,nMaxWidth,nMaxHeight,img_width,img_height);
				}
			}
			else
			{
				alert('请选择宽为:'+img_width+',高为:'+img_height+'的图片');
				myImage.style.display = 'none';
				inintHtmlFile(ele,imageFile,divObject,validateType,isEqual,isNeed,nMaxWidth,nMaxHeight,img_width,img_height);
			}
		}
　　　}
}

/**
 * 显示图片
 * @param ele 文件上传File 控件对象
 * @param imageFile 显示的image 对象
 * @param ele 对象的上一层对象
 * @param validateType 用于验证的格式
 * @param isEqual 是否有固定大小 Y or N
 * @param isNeed 是否必须 Y or N
 * @param nMaxWidth 控制图片显示时,用来计算的宽
 * @param nMaxHeight 控制图片显示时,用来计算的高
 * @param img_width 上传图片应该符合的宽度
 * @param img_height 上传图片应该符合的高度
 */
function toShowImage(ele,imageFile,divObject,validateType,isEqual,isNeed,nMaxWidth,nMaxHeight,img_width,img_height)
{
	//匹配格式
	var flag = new RegExp(validateType);
	if(ele.value && flag.test(ele.value.substr(ele.value.lastIndexOf('.')+1)))
	{
		document.getElementById(imageFile).src=ele.value;
		proDownImageCheck(ele,imageFile,divObject,validateType,isEqual,isNeed,nMaxWidth,nMaxHeight,img_width,img_height);
	}
}

/**
 * 重新生成file对象
 * @param ele 文件上传File 控件对象
 * @param imageFile 显示的image 对象
 * @param ele 对象的上一层对象
 * @param validateType 用于验证的格式
 * @param isEqual 是否有固定大小 Y or N
 * @param isNeed 是否必须 Y or N
 * @param nMaxWidth 控制图片显示时,用来计算的宽
 * @param nMaxHeight 控制图片显示时,用来计算的高
 * @param img_width 上传图片应该符合的宽度
 * @param img_height 上传图片应该符合的高度
 */
function inintHtmlFile(ele,imageFile,divObject,validateType,isEqual,isNeed,nMaxWidth,nMaxHeight,img_width,img_height)
{
	//alert('进入inintHtmlFile方法');
	document.getElementById(divObject).innerHTML='';
	var string_Html=
			"<input type='file' name='"+ele.name+"' id='"+ele.id+"' onchange='toShowImage(this,\""
			+imageFile+"\",\""+divObject+"\",\""+validateType+"\",\""+isEqual+"\",\""+isNeed+"\","+nMaxWidth+","+
			nMaxHeight+","+img_width+","+img_height+")' alias="+ele.alias+" _alias="+ele._alias+" />";
	//alert(string_Html);
	document.getElementById(divObject).innerHTML=string_Html;
	myfileChooseValidate();
}

/**
 * 初始化验证方法
 */
function myfileChooseValidate(){
    if (document.forms.length == 0){
        return;
    }
    $.metadata.setType("attr", "validate_rules");
    var es = document.forms[0].elements;
    for (var i = 0; i < es.length; i++){
        if (es[i].alias){
            es[i].validate_rules = es[i].alias;
        }
    }
    $(document.forms[0]).validate({
        errorLabelContainer:"#errorMessagePanel",
        //meta :"validate",// 采用meta String方式进行验证（验证内容与写入class中）
        errorElement :"div",// 使用"div"标签标记错误， 默认:"label"
        wrapper:"li",// 使用"li"标签再把上边的errorELement包起来
        errorClass :"validate-error",// 错误提示的css类名"error"
        onsubmit:true,// 是否在提交是验证,默认:true
        //onfocusout:true,// 是否在获取焦点时验证,默认:true
        //onkeyup :true,// 是否在敲击键盘时验证,默认:true
        onclick:false,// 是否在鼠标点击时验证（一般验证checkbox,radiobox）
        focusCleanup:false// 当未通过验证的元素获得焦点时,并移除错误提示
    });

    $("#btnClear").click(function() { // run twice or more, why?
        //alert('#btnClear');
        //$(document.forms[0]).clearForm();
        clearForm(/*this.form*/);
    });
}
