	var patternsDict = new Object();
	var patternsType = new Object();
	var patternsSample = new Object();


	function initpatternsDict() {
		patternsDict.emailPat =/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
		patternsType.emailPat = "电子邮件地址";
		patternsSample.emailPat = "laoye@archean.net";
		patternsDict.floatPat =/^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/;
		patternsType.floatPat = "浮点数";
		patternsSample.floatPat = "2999.00 或 2999 或 0.50";
		patternsDict.digitPat =/^[0-9]{1,20}$/;
		patternsDict.telPat =/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
		patternsDict.letterPat =/^[a-zA-Z0-9_]+$/
		patternsType.letterPat = "英文、数字、下划线";
		patternsSample.letterPat = "archean_laoye";
	}

	initpatternsDict();

  function validateForm(theForm){	  

	var elArr = theForm.elements;
	for(var i = 0; i < elArr.length; i++)
	with(elArr[i]){ 
		var v = elArr[i].validator;
		var thePat = patternsDict[v];
		var typeName = patternsType[v];
		var sample = patternsSample[v];
		var fieldName = elArr[i].fieldName;		
		var maxNLen = elArr[i].maxNLen;
		var minNLen = elArr[i].minNLen;
		var required = elArr[i].required;
		var equalsField = elArr[i].equalsField;


		if(typeof equalsField != 'undefined') {
			if(value != elArr[equalsField].value) {
				alert("["+fieldName+"]项的值跟["+elArr[equalsField].fieldName+"]项的值应该相同。\n\n请重新输入");
				elArr[i].focus();
				return false;
			}
		}

		if(!v && !required && !maxNLen)
			continue;

		elArr[i].focus();

		var trimValue = value.trim();
		
		if("true"==required) {
			if(trimValue.length==0) {
				alert("["+fieldName+"] 项不能为空");
				return false;
			}
		} else {
			//如果可以为空，且该值为空，则视为合法
			if(trimValue.length==0)
				continue;
		}

		var nLen = trimValue.nLen();

		if(typeof maxNLen != 'undefined' && nLen>maxNLen) {
			alert("在 ["+fieldName+"] 中最多允许 "+maxNLen+" 个字符，但您输入了 "+nLen+" 个字符\n\n请对该项的内容精简一下\n\n注意：1个汉字算2个字符长度");
			return false;
		}	
		
		if(typeof minNLen != 'undefined' && nLen<minNLen) {
			alert("在 ["+fieldName+"] 中最少需要 "+minNLen+" 个字符，但您输入了 "+nLen+" 个字符\n\n请对该项的内容加以补充\n\n注意：1个汉字算2个字符长度");
			return false;
		}	

		if(!v)
			continue;

		var gotIt = thePat.exec(value);		

		if(!gotIt){
			alert("请在 ["+fieldName+"] 项中输入一个合法的"+typeName+"\n\n您输入的是 ["+value+"] \n\n正确的"+typeName+"举例："+sample);
			
			return false;
		}
	} 
	return true;
  }
String.prototype.nLen=function(){return this.replace(/[^\x00-\xff]/g,"aa").length;}
String.prototype.trim = function(){return this.replace(/(^\s*)|(\s*$)/g, "");}


function openDateTimeBrowse(formName,textbox,currentdate) {

  var xCoord=event.clientX;
  var yCoord=event.clientY;
  if (xCoord+320>=screen.width-50)
      xCoord=xCoord-50;
  if (yCoord+180>=screen.height-100)
      yCoord=yCoord-100;
  tmp=open('util/smartdate/calendar1.jsp?formname='+formName+'&textname='+textbox.name+'&textvalue='+currentdate,'Calendar','top='+ yCoord +',left=' + xCoord +',directories=no,menubar=no,scrollbars=no,resizable=no,location=no,toolbar=no,width=320,height=185');
  tmp.focus();
}


function openDate(txtName){
	var obj=eval("document.mainForm."+txtName);
	openDateTimeBrowse(obj);
}


function openDialogTrade(code,optionStyle,codecom,titlecom){
         var dialogResult; 
		 dialogResult=window.showModalDialog('util/trade.jsp?code='+code+'&optionstyle='+optionStyle,'view','dialogWidth:650px;dialogHeight:500px;center:yes;status:no;scrollbars:yes;resizable:yes');
		 
		 if (dialogResult!=null){ 
		    codecom.value=dialogResult["code"];
			titlecom.value=dialogResult["name"];
		 }
}

//返回产品对话框
function openDialogProdcat(id,optionStyle,codecom,titlecom){
         var dialogResult; 
		 dialogResult=window.showModalDialog('util/prodcat.jsp?id='+id+'&optionstyle='+optionStyle,'view','dialogWidth:650px;dialogHeight:500px;center:yes;status:no;scrollbars:yes;resizable:yes');
		 
		 if (dialogResult!=null){ 
		    codecom.value=dialogResult["id"];
			titlecom.value=dialogResult["name"];
		 }
}
//返回时间的格式化字符串
function formatDate(dateObj) {
	if(!dateObj)
		return "";
	var year = dateObj.getYear();
	year = (year<1000)?year+1900:year;

	var month = dateObj.getMonth()+1;
	month = (month<10)?"0"+month:month;

	var day = dateObj.getDate();
	day = (day<10)?"0"+day:day;

	return year+"-"+month+"-"+day;
}

function getDate() {
	return formatDate(new Date());
}

function str2date(dateString) {
	var dob = new Date(dateString.substring(0,4),dateString.substring(5,7)-1,dateString.substring(8,10));
    return dob;
}
//计算月偏移
function monthOffset(dateString, offset) {
	var dob = new Date(dateString.substring(0,4),dateString.substring(5,7)-(1-offset),dateString.substring(8,10));	
    return formatDate(dob);
}

function timeOffset(dateString, yearOffset, monthOffset, dayOffset) {	
	var dob = new Date(dateString.substring(0,4)-(-yearOffset),dateString.substring(5,7)-(1-monthOffset),dateString.substring(8,10)-(-dayOffset));	
    return formatDate(dob);
}
