 
/*
 
 -------------- 函数检索 --------------
 trim函数:                         trim() lTrim() rTrim()
 校验字符串是否为空:                 checkIsNotEmpty(str)
 校验字符串是否为整型:               checkIsInteger(str)
 校验整型最小值:                    checkIntegerMinValue(str,val)
 校验整型最大值:                    checkIntegerMaxValue(str,val) 
 校验整型是否为非负数:               isNotNegativeInteger(str)
 校验字符串是否为浮点型:             checkIsDouble(str) 
 校验浮点型最小值:                  checkDoubleMinValue(str,val)
 校验浮点型最大值:                  checkDoubleMaxValue(str,val)
 校验浮点型是否为非负数:             isNotNegativeDouble(str)
 校验字符串是否为日期型:             checkIsValidDate(str)
 校验两个日期的先后:                checkDateEarlier(strStart,strEnd)
 校验字符串是否为email型:           checkEmail(str)
 
 校验字符串是否为中文:               checkIsChinese(str)
 计算字符串的长度，一个汉字两个字符:   realLength()
 校验字符串是否符合自定义正则表达式:   checkMask(str,pat)
 得到文件的后缀名:                   getFilePostfix(oFile)  
 -------------- 函数检索 --------------
*/ 

/**
 * 去除多余空格函数
 * trim:去除两边空格 lTrim:去除左空格 rTrim: 去除右空格
 * 用法：
 *     var str = "  hello ";
 *     str = str.trim();
 */
String.prototype.trim = function()
{
    return this.replace(/(^[\s]*)|([\s]*$)/g, "");
}
String.prototype.lTrim = function()
{
    return this.replace(/(^[\s]*)/g, "");
}
String.prototype.rTrim = function()
{
    return this.replace(/([\s]*$)/g, "");
}
/********************************** Empty **************************************/
/**
*校验字符串是否为空
*返回值：
*如果不为空，定义校验通过，返回true
*如果为空，校验不通过，返回false               参考提示信息：输入域不能为空！
*/
function checkIsNotEmpty(str)
{
    if(str.trim() == "")
        return false;
    else
        return true;
}//~~~
/*--------------------------------- Empty --------------------------------------*/
/********************************** Integer *************************************/
/**
*校验字符串是否为整型
*返回值：
*如果字串全部为数字，校验通过，返回true
*如果校验不通过，              返回false     参考提示信息：输入域必须为数字！
*/
function checkIsInteger(str)
{
    if(/^(\-?)(\d+)$/.test(str))
        return true;
    else
        return false;
}//~~~
/**
*校验整型最小值
*str：要校验的串。  val：比较的值
*
*返回值：
*如果为空，定义校验通过，                返回true
*如果满足条件，大于等于给定值，校验通过，返回true
*如果小于给定值，                        返回false              参考提示信息：输入域不能小于给定值！
*/
function checkIntegerMinValue(str,val)
{
    //如果为空，则通过校验
    if(str == "")
        return true;
    if(typeof(val) != "string")
        val = val + "";
    if(checkIsInteger(str) == true)
    {
        if(parseInt(str,10)>=parseInt(val,10))
            return true;
        else
            return false;
    }
    else
        return false;
}//~~~
/**
*校验整型最大值
*str：要校验的串。  val：比较的值
*
*返回值：
*如果为空，定义校验通过，                返回true
*如果满足条件，小于等于给定值，校验通过，返回true
*如果大于给定值，                        返回false       参考提示信息：输入值不能大于给定值！
*/
function checkIntegerMaxValue(str,val)
{
    //如果为空，则通过校验
    if(str == "")
        return true;
    if(typeof(val) != "string")
        val = val + "";
    if(checkIsInteger(str) == true)
    {
        if(parseInt(str,10)<=parseInt(val,10))
            return true;
        else
            return false;
    }
    else
        return false;
}//~~~
/**
*校验整型是否为非负数
*str：要校验的串。
*
*返回值：
*如果为空，定义校验通过，返回true
*如果非负数，            返回true
*如果是负数，            返回false               参考提示信息：输入值不能是负数！
*/
function isNotNegativeInteger(str)
{
    //如果为空，则通过校验
    if(str == "")
        return true;
    if(checkIsInteger(str) == true)
    {
        if(parseInt(str,10) < 0)
            return false;
        else
            return true;
    }
    else
        return false;
}//~~~
/*--------------------------------- Integer --------------------------------------*/
/********************************** Double ****************************************/
/**
*校验字符串是否为浮点型
*返回值：
*如果为空，定义校验通过，      返回true
*如果字串为浮点型，校验通过，  返回true
*如果校验不通过，              返回false     参考提示信息：输入域不是合法的浮点数！
*/
function checkIsDouble(str)
{
    //如果为空，则通过校验
    if(str == "")
        return true;
    //如果是整数，则校验整数的有效性
    if(str.indexOf(".") == -1)
    {
        if(checkIsInteger(str) == true)
            return true;
        else
            return false;
    }
    else
    {
        if(/^(\-?)(\d+)(.{1})(\d+)$/g.test(str))
            return true;
        else
            return false;
    }
}//~~~
/**
*校验浮点型最小值
*str：要校验的串。  val：比较的值
*
*返回值：
*如果为空，定义校验通过，                返回true
*如果满足条件，大于等于给定值，校验通过，返回true
*如果小于给定值，                        返回false              参考提示信息：输入域不能小于给定值！
*/
function checkDoubleMinValue(str,val)
{
    //如果为空，则通过校验
    if(str == "")
        return true;
    if(typeof(val) != "string")
        val = val + "";
    if(checkIsDouble(str) == true)
    {
        if(parseFloat(str)>=parseFloat(val))
            return true;
        else
            return false;
    }
    else
        return false;
}//~~~
/**
*校验浮点型最大值
*str：要校验的串。  val：比较的值
*
*返回值：
*如果为空，定义校验通过，                返回true
*如果满足条件，小于等于给定值，校验通过，返回true
*如果大于给定值，                        返回false       参考提示信息：输入值不能大于给定值！
*/
function checkDoubleMaxValue(str,val)
{
    //如果为空，则通过校验
    if(str == "")
        return true;
    if(typeof(val) != "string")
        val = val + "";
    if(checkIsDouble(str) == true)
    {
        if(parseFloat(str)<=parseFloat(val))
            return true;
        else
            return false;
    }
    else
        return false;
}//~~~
/**
*校验浮点型是否为非负数
*str：要校验的串。
*
*返回值：
*如果为空，定义校验通过，返回true
*如果非负数，            返回true
*如果是负数，            返回false               参考提示信息：输入值不能是负数！
*/
function isNotNegativeDouble(str)
{
    //如果为空，则通过校验
    if(str == "")
        return true;
    if(checkIsDouble(str) == true)
    {
        if(parseFloat(str) < 0)
            return false;
        else
            return true;
    }
    else
        return false;
}//~~~
/*--------------------------------- Double ---------------------------------------*/
/********************************** date ******************************************/
/**
*校验字符串是否为日期型
*返回值：
*如果为空，定义校验通过，           返回true
*如果字串为日期型，校验通过，       返回true
*如果日期不合法，                   返回false    参考提示信息：输入域的时间不合法！（yyyy-MM-dd）
*/
function checkIsValidDate(str)
{
    //如果为空，则通过校验
    if(str == "")
        return true;
    var pattern = /^((\d{4})|(\d{2}))-(\d{1,2})-(\d{1,2})$/g;
    if(!pattern.test(str))
        return false;
    var arrDate = str.split("-");
    if(parseInt(arrDate[0],10) < 100)
        arrDate[0] = 2000 + parseInt(arrDate[0],10) + "";
    var date =  new Date(arrDate[0],(parseInt(arrDate[1],10) -1)+"",arrDate[2]);
    if(date.getYear() == arrDate[0]
       && date.getMonth() == (parseInt(arrDate[1],10) -1)+""
       && date.getDate() == arrDate[2])
        return true;
    else
        return false;
}//~~~
/**
*校验两个日期的先后
*返回值：
*如果其中有一个日期为空，校验通过,          返回true
*如果起始日期早于等于终止日期，校验通过，   返回true
*如果起始日期晚于终止日期，                 返回false    参考提示信息： 起始日期不能晚于结束日期。
*/
function checkDateEarlier(strStart,strEnd)
{
    if(checkIsValidDate(strStart) == false || checkIsValidDate(strEnd) == false)
        return false;
    //如果有一个输入为空，则通过检验
    if (( strStart == "" ) || ( strEnd == "" ))
        return true;
    var arr1 = strStart.split("-");
    var arr2 = strEnd.split("-");
    var date1 = new Date(arr1[0],parseInt(arr1[1].replace(/^0/,""),10) - 1,arr1[2]);
    var date2 = new Date(arr2[0],parseInt(arr2[1].replace(/^0/,""),10) - 1,arr2[2]);
    if(arr1[1].length == 1)
        arr1[1] = "0" + arr1[1];
    if(arr1[2].length == 1)
        arr1[2] = "0" + arr1[2];
    if(arr2[1].length == 1)
        arr2[1] = "0" + arr2[1];
    if(arr2[2].length == 1)
        arr2[2]="0" + arr2[2];
    var d1 = arr1[0] + arr1[1] + arr1[2];
    var d2 = arr2[0] + arr2[1] + arr2[2];
    if(parseInt(d1,10) > parseInt(d2,10))
       return false;
    else
       return true;
}//~~~
/*--------------------------------- date -----------------------------------------*/
/********************************** email *****************************************/
/**
*校验字符串是否为email型
*返回值：
*如果为空，定义校验通过，           返回true
*如果字串为email型，校验通过，      返回true
*如果email不合法，                  返回false    参考提示信息：Email的格式不正確！
*/
function checkEmail(str)
{
    //如果为空，则通过校验
    if(str == "")
        return true;
    if (str.charAt(0) == "." || str.charAt(0) == "@" || str.indexOf('@', 0) == -1
        || str.indexOf('.', 0) == -1 || str.lastIndexOf("@") == str.length-1 || str.lastIndexOf(".") == str.length-1)
        return false;
    else
        return true;
}//~~~
/*--------------------------------- email ----------------------------------------*/
/********************************** chinese ***************************************/
/**
*校验字符串是否为中文
*返回值：
*如果为空，定义校验通过，           返回true
*如果字串为中文，校验通过，         返回true
*如果字串为非中文，             返回false    参考提示信息：必须为中文！
*/
function checkIsChinese(str)
{
    //如果值为空，通过校验
    if (str == "")
        return true;
    var pattern = /^([\u4E00-\u9FA5]|[\uFE30-\uFFA0])*$/gi;
    if (pattern.test(str))
        return true;
    else
        return false;
}//~~~
/**
 * 计算字符串的长度，一个汉字两个字符
 */
String.prototype.realLength = function()
{
  return this.replace(/[^\x00-\xff]/g,"**").length;
}
/*--------------------------------- chinese --------------------------------------*/
/********************************** mask ***************************************/
/**
*校验字符串是否符合自定义正则表达式
*str 要校验的字串  pat 自定义的正则表达式
*返回值：
*如果为空，定义校验通过，           返回true
*如果字串符合，校验通过，           返回true
*如果字串不符合，                   返回false    参考提示信息：必须满足***模式
*/
function checkMask(str,pat)
{
    //如果值为空，通过校验
    if (str == "")
        return true;
    var pattern = new RegExp(pat,"gi")
    if (pattern.test(str))
        return true;
    else
        return false;
}//~~~
/*--------------------------------- mask --------------------------------------*/
/********************************** file ***************************************/
/**
 * added by LxcJie 2004.6.25
 * 得到文件的后缀名
 * oFile为file控件对象
 */
function getFilePostfix(oFile)
{
    if(oFile == null)
        return null;
    var pattern = /(.*)\.(.*)$/gi;
    if(typeof(oFile) == "object")
    {
        if(oFile.value == null || oFile.value == "")
            return null;
        var arr = pattern.exec(oFile.value);
        return RegExp.$2;
    }
    else if(typeof(oFile) == "string")
    {
        var arr = pattern.exec(oFile);
        return RegExp.$2;
    }
    else
        return null;
}

/*-------------------------------------------------------------------------------*/
    function validMonth(month){
           if (!checkIsNotEmpty($(month).value)){
               window.alert("月份不能为空");
               $(month).focus();
               return false;
           }else{
               //必须为整数型
               if (!checkIsInteger($(month).value)){
                  window.alert("月份须为整数");
                  $(month).focus();
                  return false;                  
               }else{
                   if (($(month).value>12)||($(month).value<1)){
                      window.alert("月份必须在0到12之间");
                      $(month).focus();
                      return false;
                   }else{
                      if ($(month).value.length==1){
                         $(month).value="0"+$(month).value;
                      }
                   }
               }
           }
           return true;    
    }

    function validYear(year){
           if (!checkIsNotEmpty($(year).value)){
               window.alert("年份不能为空");
               $(year).focus();
               return false;
           }else{
               //必须为整数型
               if (!checkIsInteger($(year).value)){
                  window.alert("年份须为整数");
                  $(year).focus();
                  return false;                  
               }else{
                  
                   var curryear=getCurrentYear();
                   //alert(curryear);
                   if (($(year).value>curryear)||($(year).value<curryear-40)){
                      window.alert("年份必须在"+(curryear-40)+"到"+curryear+"之间");
                      $(year).focus();
                      return false;
                   }
               }
           }
           return true;
    }
    
    function getCurrentYear(){
          var nowdate=new Date();
          return nowdate.getFullYear();
    }

  //计算纸张价格,每张纸的价格
   // paper_type纸张类型：大度还是正度
   // paper_num 纸张数量
   // weight 纸张克重
   // unit_price 纸张吨价
   function calcPaperPrice(paper_type,paper_num,weight,unit_price){
       var con = 0;
       if (paper_type=="D"){
          con = 1884;
       }else{
          con = 2327;
       }
       
       return (unit_price/con)*weight/500;
   }
   
   
   function kaiban(side1,side2,chuxue){
   //0:纸张类型（大度，正度），1：纸张开度，2：开版类型（竖开，横开），3：描述
      var Z_L = 1092;
      var Z_S = 787;
      var D_L = 1194;
      var D_S = 889;
      var a = parseInt(side1)+parseInt(chuxue);
      var b = parseInt(side2)+parseInt(chuxue);
      //alert("a:"+a+",b:"+b);
      //alert("sql");
      var long_side,short_side;
      if (a>b){
          long_side = a;  
          short_side = b;
      }else{
          long_side = b;
          short_side = a;
      }    
      
      //正度横排
      var z_l_long_num =Math.floor(Z_L/long_side);//横排在长边的数量
      var z_l_short_num = Math.floor(Z_S/short_side);//横排在短边的数量
      var z_l_s=Math.floor((Z_L-z_l_long_num*long_side)/short_side);//在长边剩余的空间可以排短边多少？
      var z_l_l=Math.floor(Z_S/long_side);//在正度纸的短边可以排长边个数
      var z_l_num = z_l_long_num*z_l_short_num+z_l_s*z_l_l; //总的开版数量
      //alert("正度横排:"+z_l_num);

      //正度竖排
      var z_h_long_num =Math.floor(Z_L/short_side);//需要取整数
      var z_h_short_num = Math.floor(Z_S/long_side);//需要取整数
      var z_h_l=Math.floor((Z_S-z_h_short_num*long_side)/short_side);//需要取整数  
      var z_h_s=Math.floor(Z_L/long_side);//在正度纸的短边可以排长边个数  
      var z_h_num = z_h_long_num*z_h_short_num+z_h_s*z_h_l; //总的开版数量
      //alert("正度竖排:"+z_h_num);
      
      var z_type;   //用于存放开版方式，"L":水平开版，"H":竖直开版
      var z_l_num_12;   //长边数量
      var z_s_num_12;   //短边数量
      var z_s_l_num_12 ; //剩余面积的长边数量
      var z_s_s_num_12 ; //剩余面积的短边数量
      var z_total; //正度总数量
      if (z_l_num>z_h_num){//正度横排更合适
          z_type="L";
          z_l_num_12 = z_l_long_num;
          z_s_num_12 = z_l_short_num;
          z_s_l_num_12 = z_l_l;
          z_s_s_num_12 = z_l_s;
          z_total = z_l_num;
      }else{
          z_type="H";
          z_l_num_12 = z_h_long_num;
          z_s_num_12 = z_h_short_num;
          z_s_l_num_12 = z_h_l;
          z_s_s_num_12 = z_h_s;
          z_total = z_h_num;
      }
      //计算浪费的比例
      var z_waste =((Z_L*Z_S)-z_total*long_side*short_side)/z_total;
      
      //大度横排
      var d_l_long_num =Math.floor(D_L/long_side);//横排在长边的数量，需要取整数
      var d_l_short_num = Math.floor(D_S/short_side);//需要取整数
      var d_l_s=Math.floor((D_L-d_l_long_num*long_side)/short_side);//需要取整数
      var d_l_l=Math.floor(D_S/long_side);//在正度纸的短边可以排长边个数
      var d_l_num = d_l_long_num*d_l_short_num+d_l_s*d_l_l; //总的开版数量
      //alert("大度横排:"+d_l_num);

      //大度竖排
      var d_h_long_num =Math.floor(D_L/short_side);//需要取整数
      var d_h_short_num = Math.floor(D_S/long_side);//需要取整数
      var d_h_l=Math.floor((D_S-d_h_short_num*long_side)/short_side);//需要取整数    
      var d_h_s=Math.floor(D_L/long_side);//在正度纸的短边可以排长边个数    
      var d_h_num = d_h_long_num*d_h_short_num+d_h_s*d_h_l; //总的开版数量     
      //alert("大度横排:"+d_h_num);
      
      var d_type;   //用于存放开版方式，"L":水平开版，"H":竖直开版
      var d_l_num_12;   //长边数量
      var d_s_num_12;   //短边数量
      var d_s_l_num_12 ; //剩余面积的长边数量
      var d_s_s_num_12 ; //剩余面积的短边数量
      var d_total; //大度总数量
      if (d_l_num>d_h_num){//正度横排更合适
          d_type="L";
          d_l_num_12 = d_l_long_num;
          d_s_num_12 = d_l_short_num;
          d_s_l_num_12 = d_l_l;
          d_s_s_num_12 = d_l_s;
          d_total = d_l_num;
      }else{
          d_type="H";
          d_l_num_12 = d_h_long_num;
          d_s_num_12 = d_h_short_num;
          d_s_l_num_12 = d_h_l;
          d_s_s_num_12 = d_h_s;
          d_total = d_h_num;
      }

      //计算浪费的比例
      var d_waste =((D_L*D_S)-d_total*long_side*short_side)/d_total;
      
      //形成描述文本
      var text="";
      if (d_waste>z_waste){//大度纸浪费的多的多的时候选择正度纸
          var type=""; //开版类型
          if ("L"==z_type){
             type ="横列";
          }else{
             type ="竖排"
          }
          text="Z|"+z_total+"|"+type+"|";
          text+="("+z_l_num_12+"*"+z_s_num_12+"="+z_l_num_12*z_s_num_12+")+("+z_s_l_num_12+"*"+z_s_s_num_12+"="+z_s_l_num_12*z_s_s_num_12+")";
      }else{
          //alert("选择大度纸");
          var type=""; //开版类型
          if ("L"==d_type){
             type ="横列";
          }else{
             type ="竖排"
          }
          text="D|"+d_total+"|"+type+"|";
          text+="("+d_l_num_12+"*"+d_s_num_12+"="+d_l_num_12*d_s_num_12+")+("+d_s_l_num_12+"*"+d_s_s_num_12+"="+d_s_l_num_12*d_s_s_num_12+")";   
     }  
      return text;
   }
   
   //功能：在给定的尺寸上面开板
   //输入：side1,side2:被开料的尺寸，p_side1,p_side2:成品尺寸
   //输出：数组 [0]：开度，[1]：开板方式，
   //[2]:列数，[3]：行数，[4]:列数,[5]:行数，[6]:每个浪费比例，[8]：描述
   
   function kaiban_ConstSize(side1,side2,p_side1,p_side2){
      //alert(side1+"*"+side2+","+p_side1+"*"+p_side2)
       if (p_side1<p_side2){
       	  temp =p_side1;
       	  p_side1=p_side2;
       	  p_side2=temp;
       }
       
       if (side1<side2){
       	 temp = side1
       	 side1=side2
       	 side2=temp
      }
       var big_area = side1*side2;
       var sm_area = p_side1*p_side2;
       var a = Math.floor(side1/p_side1);
       var b = Math.floor(side2/p_side2);
       var c = Math.floor((side1-a*p_side1)/p_side2);
       var d = Math.floor(side2/p_side1);
       //计算浪费纸张每一个
       var num = a*b+c*d;
       var waste = (big_area-num*sm_area)/sm_area;
       var desc = num+"|"+"V"+"|"+a+"|"+b+"|"+c+"|"+d+"|"+waste;
       if ((a>0)&&(b>0)){
            desc =desc+"|"+"("+side1+"/"+p_side1+"="+a+")*("+side2+"/"+p_side2+"="+b+")="+(a*b);
            if ((c>0)&&(d>0)){
                desc+=",("+(side1-a*p_side1)+"/"+p_side2+"="+c+")*("+side2+"/"+p_side1+"="+d+")="+(c*d)
            }
       }
       //alert(desc);
       
       var a1 = Math.floor(side1/p_side2);
       var b1 = Math.floor(side2/p_side1);
       var c1 = Math.floor((side2-b1*p_side1)/p_side2);
       var d1 = Math.floor(side1/p_side1); 
       var num1 = a1*b1+c1*d1;
       waste = (big_area-num1*sm_area)/sm_area
       var desc1 = num1+"|"+"H"+"|"+a1+"|"+b1+"|"+d1+"|"+c1+"|"+waste;
       if ((a1>0)&&(b1>0)){
            desc1 =desc1+"|"+"("+side1+"/"+p_side2+"="+a1+")*("+side2+"/"+p_side1+"="+b1+")="+(a1*b1);
            if ((c1>0)&&(d1>0)){
                desc1+=",("+(side2-b1*p_side1)+"/"+p_side2+"="+c1+")*("+(side1)+"/"+p_side2+"="+d1+")="+(c1*d1)
            }
       }
              
       //alert(desc1)
       if (num>num1){
           return desc.split("|");
       }else{
           return desc1.split("|");
       }
   }
   
  function kaiban_align(align,side1,side2,p_side1,p_side2){
    if (p_side1<p_side2){
      temp =p_side1;
      p_side1=p_side2;
      p_side2=temp;
    }
      
    if (side1<side2){
    	 temp = side1
    	 side1=side2
    	 side2=temp
     }
      var big_area = side1*side2;
      var sm_area = p_side1*p_side2;  	
  	if (align=="H"){  //横排
  		 //alert("h")
       var a = Math.floor(side1/p_side1);
       var b = Math.floor(side2/p_side2);
       var c = Math.floor((side1-a*p_side1)/p_side2);
       var d = Math.floor(side2/p_side1);
       //计算浪费纸张每一个
       var num = a*b+c*d;
       var waste = (big_area-num*sm_area)/sm_area;
       var desc = num+"|"+"V"+"|"+a+"|"+b+"|"+c+"|"+d+"|"+waste;
       if ((a>0)&&(b>0)){
            desc =desc+"|"+"("+side1+"/"+p_side1+"="+a+")*("+side2+"/"+p_side2+"="+b+")="+(a*b);
            if ((c>0)&&(d>0)){
                desc+=",("+(side1-a*p_side1)+"/"+p_side2+"="+c+")*("+side2+"/"+p_side1+"="+d+")="+(c*d)
            }
       }  	
       return desc.split("|");	
  	}else if (align=="S"){//竖排
  		 //alert("s")
       var a1 = Math.floor(side1/p_side2);
       var b1 = Math.floor(side2/p_side1);
       var c1 = Math.floor((side2-b1*p_side1)/p_side2);
       var d1 = Math.floor(side1/p_side1); 
       var num1 = a1*b1+c1*d1;
       waste = (big_area-num1*sm_area)/sm_area
       var desc1 = num1+"|"+"H"+"|"+a1+"|"+b1+"|"+d1+"|"+c1+"|"+waste;
       if ((a1>0)&&(b1>0)){
            desc1 =desc1+"|"+"("+side1+"/"+p_side2+"="+a1+")*("+side2+"/"+p_side1+"="+b1+")="+(a1*b1);
            if ((c1>0)&&(d1>0)){
                desc1+=",("+(side2-b1*p_side1)+"/"+p_side2+"="+c1+")*("+(side1)+"/"+p_side2+"="+d1+")="+(c1*d1)
            }
       }
       return desc1.split("|");
  	}else{
  		 return kaiban_ConstSize(side1,side2,p_side1,p_side2)
  	}
  }
   
   //生成图形
  function createPic(name,width,height,p_width,p_height,type,a,b,c,d){
  	if (height>width){
  		temp=width
  		width=height
  		height=temp
  	}
  	
  	if (p_height>p_width){
  		temp=p_width
  		p_width=p_height
  		p_height=temp
  	}  	
  	
  	var text_desc="";
  	var heng_s=0;
  	var shu_s=0;
  	if (type=='H'){
  		heng_s = width-a*p_height;
  		shu_s = height-b*p_width;
  		if (c*d>0){
  			shu_s = shu_s-d*p_height
  		}
  	}else{
  		heng_s = width-a*p_width
  		if (c*d){
  			heng_s = heng_s - c*p_height
  		}
  		shu_s = height-b*p_height
  	}
  		
 		text_desc="横边("+width+")剩余："+heng_s+"mm,竖边("+height+")剩余："+shu_s+"mm.";
  	
  	var ob = document.getElementById(name);
    var table_width = 550
	  var table_height =Math.round((height/width)*table_width);
	  var table_text = "<table bgcolor='black' style='border : #000000 1px solid;' cellpadding=0 cellspacing=0 id='tab1' width="+table_width+" height="+table_height+">";
	  
	 
	  if (type=='H'){
	  	table_text += "<tr><td valign='top' id='area1'>&nbsp;</td></tr><tr><td valign='top' id='area2'>&nbsp;</td></tr></table>";
	  }else{
	  	table_text += "<tr><td valign='top' id='area1'>&nbsp;</td><td valign='top' id='area2'>&nbsp;</td></tr></table>";	  	
	  }
	  
	  ob.innerHTML= text_desc+"<br>图示："+table_text
	  //设置area1
	  if ((a*b)>0){
	  	 //alert("table_width:"+table_width+",width:"+width)
  	   var per = table_width/width
  	   //alert("per:"+per)
     	 var td_width= Math.round(p_width*per)
	  	 var td_height= Math.round(p_height*per)	
	  	 if (type=='H'){
	  	   td_width= Math.round(p_height*per)
	  	   td_height= Math.round(p_width*per)	 
	  	 }
	     document.getElementById("area1").innerHTML=creatTable(a,b,td_width-1,td_height-1)
	     if (c*d>0){
	  	   document.getElementById("area2").innerHTML=creatTable(c,d,td_height-1,td_width-1)
	     }
	  }
	  
	  
    //alert(ob.innerHTML);
  }
  
  //cols:列数 rows：行数
  function creatTable(cols,rows,td_width,td_height){
	   text="<table border=1 bgcolor=white style='border-collapse: collapse' cellspacing=0 cellpadding=0 bordercolor='#111111'>"
	   for (var i=0;i<rows;i++){
	     text+="<tr>";
		 for (var j=0;j<cols;j++){
		 	 var td_content = "&nbsp;"
		 	 if (i==0){
		 	 	 td_content = (j+1)+"";
		 	 }
		 	 if(j==0){
		 	 	 td_content = (i+1)+"";
		 	 }
		   text+="<td align=center width="+(td_width)+" height="+(td_height)+">"+td_content+"</td>"
		 }
		 text+="</tr>";
	   }
	   text+="</table>"
	   return text;
	 }
	 
	 
	 //-------------------------重新设置生产工艺的价格
	 
	   function setPaperWorkFee(){
       total_price=0
       //设置过胶价格
       if (document.getElementById("paper_work_guojiao_num")!=null && document.getElementById("paper_work_guojiao_num").value!=""){
         guojiao_num1=parseInt(document.getElementById('paper_work_guojiao_num').value);
         guojiao_unit_price1=parseFloat(document.getElementById('paper_work_guojiao_unit_price').value);
         guojiao_total_price1=Math.ceil(guojiao_num1*guojiao_unit_price1);
         guojiao_kaiji = parseFloat(document.getElementById("paper_work_guojiao_kaiji_fee").value);
         guojiao_total_price1= guojiao_total_price1>guojiao_kaiji?guojiao_total_price1:guojiao_kaiji;
         document.getElementById("paper_work_guojiao_price").value=guojiao_total_price1;
         document.getElementById('show_guojiao_price').innerHTML=guojiao_total_price1+'元';
         total_price += guojiao_total_price1;
       }
       
      
       //设置烫金价格
       if (document.getElementById("paper_work_tangjin_num")!=null && document.getElementById("paper_work_tangjin_num").value!=""){
         tangjin_num1=parseInt(document.getElementById('paper_work_tangjin_num').value);
         tangjin_min_price1=parseFloat(document.getElementById('paper_work_tangjin_min_price').value);
         tangjin_moban_fee1 =parseFloat(document.getElementById('paper_work_tangjin_moban_fee').value);
         tangjin_moban_unit_price1=parseFloat(document.getElementById('paper_work_tangjin_moban_unit_price').value);
         tangjin_moban_min_price1=parseFloat(document.getElementById('paper_work_tangjin_moban_min_price').value);
         tangjin_kaiji_fee1 =parseFloat(document.getElementById('paper_work_tangjin_kaiji_fee').value);
         tangjin_unit1 = 0;
         tangjin_tao = parseInt($('paper_work_tangjin_tao').value);
         //先比较一啤的价格
         if ( $('paper_work_client_tangjin_price')){
         	 tangjin_unit1 = parseFloat($('paper_work_client_tangjin_price').value)*tangjin_tao;
         }else{
         	 tangjin_unit_price1=parseFloat(document.getElementById('paper_work_tangjin_unit_price').value);
           tangjin_side11 =parseFloat($('paper_work_tangjin_side1').value);
           tangjin_side21 =parseFloat($('paper_work_tangjin_side2').value);           
           tangjin_unit1=tangjin_unit_price1*tangjin_side11*tangjin_side21*tangjin_tao;
         }
         if (tangjin_unit1<tangjin_min_price1){
         	 tangjin_unit1 = tangjin_min_price1
         }
         //比较开机费
         tangjin_fee1 = Math.ceil(tangjin_unit1*tangjin_num1)
         if (tangjin_fee1<tangjin_kaiji_fee1){
         	 tangjin_fee1=Math.ceil(tangjin_kaiji_fee1)
         }
         //计算烫金板费
         tangjin_moban1=0
         if (document.getElementById('paper_work_client_tangjin_price')){
         	 client_tangjin_moban = parseFloat(document.getElementById("paper_work_client_tangjin_moban").value);
         	 tangjin_moban1 = Math.ceil(client_tangjin_moban*tangjin_tao);
         }else{
           tangjin_moban1 = Math.ceil(tangjin_side21*tangjin_side11*tangjin_moban_unit_price1*tangjin_tao);
         }
         if (tangjin_moban1<tangjin_moban_min_price1){
         	 tangjin_moban1=Math.ceil(tangjin_moban_min_price1)
         }
         document.getElementById("paper_work_tangjin_moban_fee").value=tangjin_moban1;
         document.getElementById("paper_work_tangjin_fee").value=tangjin_fee1;         
         document.getElementById("paper_work_tangjin_total_fee").value=tangjin_moban1+tangjin_fee1;
         document.getElementById('show_tangjin_price').innerHTML=tangjin_moban1+tangjin_fee1+'元';
         total_price += tangjin_moban1+tangjin_fee1;
       }       
       //设置UV价格
       //alert("paper_work_isUv:"+document.getElementById("paper_work_isUv").value)
       if (document.getElementById("paper_work_isUv")&&(document.getElementById("paper_work_isUv").value=='true')){
         uv_num1=parseInt(document.getElementById("paper_work_uv_num").value)
         uv_kaiji_fee1=parseFloat(document.getElementById("paper_work_uv_kaiji_fee"  ).value)
         uv_fee1 = 0;
         if (document.getElementById("paper_work_client_uv_price")){
         	 client_uv_price = parseFloat(document.getElementById("paper_work_client_uv_price").value);
         	 uv_fee1 = Math.ceil(client_uv_price*uv_num1)
         }else{
           uv_side11=parseFloat(document.getElementById("paper_work_uv_side1"      ).value)
           uv_side21=parseFloat(document.getElementById("paper_work_uv_side2"      ).value)
           uv_unit_price1=parseFloat(document.getElementById("paper_work_uv_unit_price" ).value)         	
           uv_fee1 = Math.ceil(uv_num1*uv_side11*uv_side21*uv_unit_price1)
         }
         //alert("uv_fee:"+uv_fee1);
         if (uv_fee1<uv_kaiji_fee1){
         	 uv_fee1 = Math.ceil(uv_kaiji_fee1)
         }
         //alert("uv_fee:"+uv_fee1);
         document.getElementById("paper_work_uv_total_fee"  ).value=uv_fee1
         document.getElementById("show_uv_price").innerHTML=uv_fee1+"元"
         total_price += uv_fee1;
       }
       //设置凹凸价格
       if (document.getElementById("paper_work_isAotu")&&(document.getElementById("paper_work_isAotu").value=="true")){
         aotu_num1=parseInt(document.getElementById('paper_work_aotu_num').value);
         aotu_unit_price1=parseFloat(document.getElementById('paper_work_aotu_unit_price').value);
         //aotu_min_price1=parseFloat(document.getElementById('paper_work_aotu_price').value);
         aotu_moban_fee1 =parseFloat(document.getElementById('paper_work_aotu_moban_fee').value);
         aotu_moban_min_price1=parseFloat(document.getElementById('paper_work_aotu_moban_min_price').value);
         aotu_kaiji_fee1 =parseFloat(document.getElementById('paper_work_aotu_kaiji_fee').value);
         aotu_tao =parseInt(document.getElementById('paper_work_aotu_tao').value);
         //比较开机费
         aotu_fee1 = Math.ceil(aotu_unit_price1*aotu_num1)
         if (aotu_fee1<aotu_kaiji_fee1){
         	 aotu_fee1=Math.ceil(aotu_kaiji_fee1)
         }
         
         //计算凹凸板费
         aotu_moban=0
         if (document.getElementById("paper_work_client_aotu_moban")){
         	 client_aotu_moban = parseFloat(document.getElementById("paper_work_client_aotu_moban").value);
         	 aotu_moban1 = Math.ceil(client_aotu_moban*aotu_tao)
         }else{
           aotu_moban_unit_price1=parseFloat(document.getElementById('paper_work_aotu_moban_unit_price').value);
           aotu_side11 =parseFloat(document.getElementById('paper_work_aotu_side1').value);
           aotu_side21 =parseFloat(document.getElementById('paper_work_aotu_side2').value);         
           aotu_moban1 = Math.ceil(aotu_side21*aotu_side11*aotu_moban_unit_price1*aotu_tao)
         }
         
         if (aotu_moban1<aotu_moban_min_price1){
         	 aotu_moban1=Math.ceil(aotu_moban_min_price1)
         }
         document.getElementById("paper_work_aotu_moban_fee").value=aotu_moban1;
         document.getElementById("paper_work_aotu_fee").value=aotu_fee1;         
         document.getElementById("paper_work_aotu_total_fee").value=aotu_moban1+aotu_fee1;
         document.getElementById('show_aotu_price').innerHTML=aotu_moban1+aotu_fee1+'元';
         total_price += aotu_moban1+aotu_fee1;
       }       
       
       //设置过油费用
       if (document.getElementById("paper_work_guoyou_num")!=null && document.getElementById("paper_work_guoyou_num").value!=""){
         guoyou_num1=parseInt(document.getElementById('paper_work_guoyou_num').value);
         guoyou_unit_price1=parseFloat(document.getElementById('paper_work_guoyou_unit_price').value);
         document.getElementById("paper_work_guoyou_price").value=Math.ceil(guoyou_num1*guoyou_unit_price1)
         document.getElementById('show_guoyou_price').innerHTML=Math.ceil(guoyou_num1*guoyou_unit_price1)+'元';
         total_price += Math.ceil(guoyou_num1*guoyou_unit_price1);
       }   
       
       //设置压纹费用
       if (document.getElementById("paper_work_yawen_num")!=null && document.getElementById("paper_work_yawen_num").value!=""){
       	 
         yawen_num1=parseInt(document.getElementById('paper_work_yawen_num').value);
         yawen_unit_price1=parseFloat(document.getElementById('paper_work_yawen_unit_price').value);
         yawen_total_fee1 = yawen_num1*yawen_unit_price1
         if (parseFloat(document.getElementById('paper_work_yawen_kaiji_fee').value)>yawen_total_fee1){
           yawen_total_fee1 = parseFloat(document.getElementById('paper_work_yawen_kaiji_fee').value);
         }
         document.getElementById("paper_work_yawen_total_fee").value=Math.ceil(yawen_total_fee1)
         document.getElementById('show_yawen_price').innerHTML=Math.ceil(yawen_total_fee1)+'元';
         total_price += Math.ceil(yawen_total_fee1);
       }     
       //设置啤机费用
       if (document.getElementById("paper_work_bieji_num")!=null && document.getElementById("paper_work_bieji_num").value!=""){
         bieji_num1=parseInt(document.getElementById('paper_work_bieji_num').value);
         bieji_unit_price1=parseFloat(document.getElementById('paper_work_bieji_unit_price').value);
         bieji_kaiji_fee1=parseFloat(document.getElementById('paper_work_bieji_kaiji_fee').value);
         bieji_total_price1 = Math.ceil(bieji_num1*bieji_unit_price1)
         bieji_moban_fee1 = parseInt(document.getElementById('paper_work_bieji_tao').value)*parseFloat(document.getElementById('paper_work_bieji_moban_fee').value)
         //alert("")
         if (bieji_kaiji_fee1>bieji_total_price1){
           bieji_total_price1=bieji_kaiji_fee1
         }
         document.getElementById("paper_work_bieji_total_fee").value=bieji_total_price1+bieji_moban_fee1
         document.getElementById('show_bieji_price').innerHTML=bieji_total_price1+bieji_moban_fee1+'元';
         total_price += bieji_total_price1+bieji_moban_fee1
       }           
       return total_price     
    }

    //-------------------重新设置装订的价格
    function setBindFee(order_num){
    	if (document.getElementById("bind_info_shou_shu")){
    	show_bind_fee1=parseInt(document.getElementById("bind_info_shou_shu").value)*parseFloat(document.getElementById("bind_info_unit_price").value)
    	kaiji_fee1 = parseInt(document.getElementById("bind_info_kaiji_fee").value)
    	show_b=Math.ceil(show_bind_fee1*order_num)
    	show_b = show_b>kaiji_fee1?show_b:kaiji_fee1
    	document.getElementById("show_bind_fee").innerHTML=show_b+"元"
    	document.getElementById("bind_info_bind_fee").value=show_b
    	
     	return show_b;
     	}else{
     		return 0
      }
    }
    
    function calcPrintfee(zheng_color,
                          fan_color,
                          pinban_type,
                          print_type,
                          print_zheng_fee_type,
                          print_fan_fee_type,
                          ban_shu,
                          print_zheng_fee,
                          print_fan_fee,
                          ling_shu){
          fee=0;
          if (pinban_type=='0'){ //正反版的情况
            if (print_fan_fee_type=='B'){
                fee=2*ban_shu*print_zheng_fee;
            }else{
            	  if (print_type="I"){//说明是内页
            	  	color = zheng_color>fan_color?zheng_color:fan_color;
                  fee=2*ban_shu*ling_shu*print_zheng_fee*color;
                }else{
                	 fee=ban_shu*ling_shu*print_zheng_fee*zheng_color;
                	 fee+=ban_shu*ling_shu*print_fan_fee*fan_color;
                }
            }              
          }else{  //自反，单张的情况
            color = zheng_color>fan_color?zheng_color:fan_color;
            if (print_zheng_fee_type=='B'){
              fee=ban_shu*print_zheng_fee;
            }else{
              fee=ban_shu*ling_shu*print_zheng_fee*color;
            }
          } 
          return fee;     
    }
    
    function getPaperUnitPrice(paper_type,paper_weight,ton_price){
      //alert("paper_type:"+paper_type+",paper_weight:"+paper_weight+",ton_price:"+ton_price)
      if (paper_type=='D'){
          return (0.889*1.194*paper_weight*ton_price)/(1000*1000)
      }else if (paper_type=='Z'){
          return (0.787*1.092*paper_weight*ton_price)/(1000*1000)
      }else if (paper_type=='T'){
          return (0.889*1.240*paper_weight*ton_price)/(1000*1000)
      }
    }
    
    function getPaperNum(pinban_type,ban_shu,order_num,paper_fangshu,self_num,numperban){
      //paper_num = 0;
      //<input type="text" >alert("pinban_type:"+pinban_type+",banshu:"+ban_shu+",order_num:"+order_num+",paper_fangshu:"+paper_fangshu+",paper_size:"+paper_size)
      if (pinban_type=='0'){ //正反版的情况
        paper_num=Math.ceil(ban_shu*(order_num/numperban+2*paper_fangshu)/paper_size);
      }else if (pinban_type=='1'){ //自反版的情况
        paper_num=Math.ceil((order_num/(Math.pow(2,self_num)*numperban)+paper_fangshu)*1.0/paper_size);
      }else{
        paper_num=Math.ceil(ban_shu*(order_num/numperban+paper_fangshu)/paper_size);
      } 
      return paper_num     
    }
    
    
    
    
    //重新计算印刷及纸张价格
    function recalc(sign){
    i_num=parseInt(document.getElementById(sign+"_num").value)
    order_num = parseInt(document.getElementById("order_num").value)
    paper_type = document.getElementById("order_paper_type").value
    for (i=0;i<=i_num;i++){
      zheng_color = parseInt(document.getElementById(sign+"_"+i+'_color1').value);
      fan_color = parseInt(document.getElementById(sign+"_"+i+'_color2').value);
      paper_weight = parseInt(document.getElementById(sign+"_"+i+'_paper_weight').value);
      ton_price = parseInt(document.getElementById(sign+"_"+i+'_ton_price').value);
      paper_fangshu = parseInt(document.getElementById(sign+"_"+i+'_paper_fangshu').value);
      print_type=document.getElementById(sign+"_"+i+"_print_type").value;
      
      inner_paper_fee=0
      inner_paper_num=0
      inner_print_fee=0    
    
      j_num = parseInt(document.getElementById(sign+"_"+i+"_pinban").value)
      for (j=0;j<j_num;j++){
          pinban_type=document.getElementById(sign+"_"+i+"_"+j+"_pinban_type").value;
          ban_shu=parseInt(document.getElementById(sign+"_"+i+"_"+j+"_ban_shu").value);
          self_num = parseInt(document.getElementById(sign+"_"+i+"_"+j+"_self_num").value);
          numperban = parseInt(document.getElementById(sign+"_"+i+"_"+j+"_numperban").value);        
          //重新计算纸张价格及数量
          paper_size=document.getElementById(sign+"_"+i+"_"+j+"_paper_size").value;
          paper_num=getPaperNum(pinban_type,ban_shu,order_num,paper_fangshu,self_num,numperban)
          document.getElementById("show_"+sign+"_"+i+"_"+j+"_paper_num").innerHTML=paper_num;
          document.getElementById(sign+"_"+i+"_"+j+"_paper_num").value=paper_num;
          
          paper_price = Math.ceil(paper_num*getPaperUnitPrice(paper_type,paper_weight,ton_price));
          document.getElementById("show_"+sign+"_"+i+"_"+j+"_paper_fee").innerHTML=paper_price;
          document.getElementById(sign+"_"+i+"_"+j+"_paper_fee").value=paper_price;
          
          inner_paper_num+=paper_num;
          inner_paper_fee+=paper_price;
          total_paper_fee+=paper_price;
                    
          //重新计算印刷价格
          print_zheng_fee_type=document.getElementById(sign+"_"+i+"_"+j+"_print_zheng_fee_type").value;
          print_fan_fee_type=document.getElementById(sign+"_"+i+"_"+j+"_print_fan_fee_type").value;
          print_zheng_fee=parseFloat(document.getElementById(sign+"_"+i+"_"+j+"_print_zheng_fee").value);
          print_fan_fee=0.0;
          if (document.getElementById(document.getElementById(sign+"_"+i+"_"+j+"_print_fan_fee"))!=null){
            print_fan_fee=parseFloat(document.getElementById(sign+"_"+i+"_"+j+"_print_fan_fee").value);
          }
          ling_shu=parseFloat(document.getElementById(sign+"_"+i+"_"+j+"_ling_shu").value);
          fee= calcPrintfee(zheng_color,
                            fan_color,
                            pinban_type,
                            print_type,
                            print_zheng_fee_type,
                            print_fan_fee_type,
                            ban_shu,
                            print_zheng_fee,
                            print_fan_fee,
                            ling_shu);
          total_print_fee+=Math.ceil(fee);  
          inner_print_fee+=Math.ceil(fee);              
          document.getElementById("show_"+sign+"_"+i+"_"+j+"_print_fee").innerHTML=Math.ceil(fee);
          document.getElementById(sign+"_"+i+"_"+j+"_print_fee").value=Math.ceil(fee);
      }//end for(j
      //设置内页总的用纸及印刷费
      document.getElementById(sign+"_"+i+"_paper_num").innerHTML=Math.ceil(inner_paper_num);
      document.getElementById(sign+"_"+i+"_paper_fee").innerHTML=Math.ceil(inner_paper_fee);
      document.getElementById(sign+"_"+i+"_print_fee").innerHTML=Math.ceil(inner_print_fee);
    }//end for (i
    
    return inner_print_fee+","+inner_paper_fee;
  }
  
  

