﻿// JScript 文件
function P() {}
P.Tlength = function(txt)
{
    var arr = txt.match(/[^\x00-\xff]/ig);
    return txt.length + (arr == null ? 0 : arr.length); 
}

P.getParameter = function(param)
{
    var query = window.location.search;
    var iLen = param.length;
    var iStart = query.indexOf(param);
    if (iStart == -1) return "";
    iStart += iLen + 1;
    var iEnd = query.indexOf("&", iStart);
    if (iEnd == -1) return query.substring(iStart);
    return query.substring(iStart, iEnd);
}     
   
P.isEmpty = function(obj)
{
   return obj.value.length > 0;
} 

P.isPhone = function(obj)
{
    var txt = obj.value;
    var re = txt.match(/(\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$/);
    return re != null;
}

P.isMobeil = function(obj)
{
    var txt = obj.value;
    var re = txt.match(/^13[0-9]{9}$/);
    return re != null;
}
   
P.isMoney = function(obj)
{
    var txt = obj.value;
    var re = txt.match(/^\d{1,9}(\.\d{0,2})?$/);
    return re != null;
} 

// 小数不限
P.isMoney2 = function(obj)
{
    var txt = obj.value;
    var re = txt.match(/^\d{1,9}(\.\d)?$/);
    return re != null;
} 

P.isPostCode = function(obj)
{
    var txt = obj.value;
    var re = txt.match(/^\d{6}$/);
    return re != null;
}

P.stripHTMLTag = function(text)
{
    var reTag = /<(?:.|\s)*?/g;
    return text.replace(reTag,"");
}

P.isUrl = function(obj)
{
    var txt = obj.value;
    var re = txt.match(/^([\w-]+\.)+[\w-]+(\/[\w-.\/?%&=]*)?$/);
    return re != null;
}

P.isEmail = function(obj)
{
    var txt = obj.value;
    var re = txt.match(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/);
    return re != null; 
} 

P.IsDate = function(op, formatString)
{
    formantString = formatString || "ymd";
    var m, year, month, day;
    
    switch (formatString)
    {
        case "ymd":
            m = op.match(/^((\d{4})|(\d{2}))([-./])(\d{1,2})\4(\d{1,2})$/);
            if (m == null) return false;
            day = m[6];
            month = m[5] * 1; //这是为了得到整型的月，07×1=7
            year = m[2].length = 4 ? m[2] : GetFullYear(parseInt(m[3], 10));
            break; 
        case "dmy":
            m = op.match(/^\d{1,2}([-/.])(\d{1,2})\2((\d{4})|(\d{2}))$/);
            if (m == null) return false;
            day = m[1];
            month = m[3] * 1;
            year = m[5].length == 4 ? m[5] : GetFullYear(parseInt(m[6], 10));
            break;
        default:
            break;          
    }// end switch
    
    // javascript Date对象的Month范围是0～11
    if (!parseInt(month)) return false;
    month = month == 0 ? 12 : month;
    var date = new Date(year, month - 1, day);
    return (typeof(date) == "object" && year == date.getFullYear() && month == (date.getMonth() + 1) && day == date.getDate());
    function GetFullYear (y) 
    {
        return ((y < 30 ? "20" : "19") + y) | 0;
    }
} 

P.IsIdCard = function (number) //身份证验证
{
    number = number.toLowerCase(); 
    var date, Ai;
    var verify = "10x98765432";
    var Wi = [7, 9 , 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
    var area = ['', '', '' , '', '', '', '', '', '', '', '', '北京', '天津', '河北', '山西', '内蒙古', '', '', '', '', '', '辽宁', '吉林', '黑龙江' , '', '', '', '', '', '', '', '上海', '江苏', '浙江', '安徽', '福建', '江西', '山东', '', '', '', '河南', '湖北', '湖南' ,'广东', '广西', '海南', '', '', '', '重庆', '四川', '贵州', '云南', '西藏', '', '', '', '', '', '', '陕西', '甘肃', '青海', '宁夏', '新疆', '', '', '', '', '', '台湾', '', '', '', '', '', '', '', '', '', '香港', '澳门', '', '', '', '', '', '', '', '', '国外']; 
    var re = number.match(/^(\d{2})\d{4}(((\d{2})(\d{2})(\d{2})(\d{3}))|((\d{4})(\d{2})(\d{2})(\d{3}[xX|\d])))$/i);
    
    if (re == null) return false;
    if (re[1] >= area.length || area[re[1]] == "") return false;
    
    if (re[2].length == 12)
    {
        Ai = number.substr(0, 17);
        date = [re[9], re[10], re[11]].join("-");
    }
    else
    {
        Ai = number.substr(0, 6) + "19" + number.substr(6);
        date = ["19" + re[4], re[5], re[6]].join("-");
    }
    
    if (!P.IsDate(date, "ymd")) return false;
    var sum = 0;
    
    for (var i = 0; i <= 16; i++)
    {
        sum += Ai.charAt(i) * Wi[i];
    }
    
    Ai += verify.charAt(sum % 11);
    return (number.length == 15 || number.length == 18 && number == Ai);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

StringBuilder = function() 
{
    this.initialize();
}
StringBuilder.Prototype = 
{  
    initialize: function()
    {
        this.__strings__ = new Array;
    },
   
    append: function(str)
    {
        this.__strings__.push(str);
    },
   
    toString: function()
    {
        return this.__strings__.join("");
    }   
}  


function $(element)
{
  if (arguments.length > 1) 
  {
    for (var i = 0, elements = [], length = arguments.length; i < length; i++)
      elements.push($(arguments[i]));
    return elements;
  }
  if (typeof element == 'string')
    element = document.getElementById(element);
  return element;
}
