/*+--------------------------------------------------+
  |文 件 名:CommonFuncs.js                           |
  |创 建 人:Simon.Ye                                 |
  |创建时间:2006-06-18                               |
  |说　　明:JavaScript通用函数库                     |
  +--------------------------------------------------+*/
  

//设置网站URL
var SiteUrl = 'http://www.bazhang.com/';

/*+--------------------------------------------------+
  |函 数 名:setHomePage(obj, uri)                    |
  |传入参数:obj(Object类型)                          |
  |         uri(String类型)                          |
  |返 回 值:无                                       |
  |创 建 人:Simon.Ye                                 |
  |创建时间:2006-06-18                               |
  |说　　明:实现"设为首页"功能                       |
  +--------------------------------------------------+*/
function setHomePage(obj, uri)
{
    obj.style.behavior='url(#default#homepage)';
    obj.setHomePage(uri);
}

/*+--------------------------------------------------+
  |函 数 名:addFavorite(uri, siteName)               |
  |传入参数:uri(String类型)                          |
  |         siteName(String类型)                     |
  |返 回 值:无                                       |
  |创 建 人:Simon.Ye                                 |
  |创建时间:2006-06-18                               |
  |说　　明:实现"加入收藏"功能                       |
  +--------------------------------------------------+*/
function addFavorite(uri, siteName)
{
    window.external.AddFavorite(uri, siteName);
}

/*+--------------------------------------------------+
  |函 数 名:OpenWin(uri, w, h)                       |
  |传入参数:uri(String类型)                          |
  |         w(Int类型)                               |
  |         h(Int类型)                               |
  |返 回 值:无                                       |
  |创 建 人:Simon.Ye                                 |
  |创建时间:2006-06-18                               |
  |说　　明:打开新窗口                               |
  +--------------------------------------------------+*/
function OpenWin(uri, w, h)
{
    var X = (screen.availWidth - w) / 2;
    X = parseInt(X, 10);
    var Y = (screen.availHeight - h) / 2;
    Y = parseInt(Y, 10);
    var newwin = window.open(uri, "newWin", "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,top=0,left=0,width=" + w + ",height=" + h);
    newwin.focus();
    newwin.moveTo(X, Y);
}

/*+--------------------------------------------------+
  |函 数 名:openDialog(sURL, sArgs, sWidth, sHeight) |
  |传入参数:sURL(String类型)                         |
  |         sArgs(Mixed类型)                         |
  |         sWidth(Int类型)                          |
  |         sHeight(Int类型)                         |
  |返 回 值:无                                       |
  |创 建 人:Simon.Ye                                 |
  |创建时间:2006-06-18                               |
  |说　　明:打开模式对话框                           |
  +--------------------------------------------------+*/
function openDialog(sURL, sArgs, sWidth, sHeight)
{
	window.showModalDialog(sURL, sArgs, "dialogWidth:" + sWidth + "px;dialogHeight:" + sHeight + "px;Resizable:0;help:0;status:no;scroll:yes;center:yes;edge:Raised;");
}

/*+--------------------------------------------------+
  |函 数 名:objSelected(obj, str)                    |
  |传入参数:obj(Object类型)                          |
  |         str(String类型)                          |
  |返 回 值:无                                       |
  |创 建 人:Simon.Ye                                 |
  |创建时间:2006-06-18                               |
  |说　　明:根据给定的值选定select对象的项           |
  +--------------------------------------------------+*/
function objSelected(obj, str)
{
    for(var i = 0; i < obj.options.length; i++)
    {
        if(obj.options[i].value == str)
        {
            obj.options[i].selected = true;
            break;
        }
    }
}

/*+--------------------------------------------------+
  |函 数 名:objChecked(obj, str)                     |
  |传入参数:obj(Object类型)                          |
  |         str(String类型)                          |
  |返 回 值:无                                       |
  |创 建 人:Simon.Ye                                 |
  |创建时间:2006-06-18                               |
  |说　　明:根据给定的值选定radio对象的项            |
  +--------------------------------------------------+*/
function objChecked(obj, str)
{
    for(var i = 0; i < obj.length; i++)
    {
        if(obj[i].value == str)
        {
            obj[i].checked = true;
        }
        else
        {
            obj[i].checked = false;
        }
    }
}

/*+--------------------------------------------------+
  |函 数 名:resizeImage(obj, MaxW, MaxH)             |
  |传入参数:obj(Object类型)                          |
  |         MaxW(Int类型)                            |
  |         MaxH(Int类型)                            |
  |返 回 值:无                                       |
  |创 建 人:Simon.Ye                                 |
  |创建时间:2006-06-18                               |
  |说　　明:缩放图片                                 |
  +--------------------------------------------------+*/
function resizeImage(obj, MaxW, MaxH)
{
    var imageObject;
    
    if (obj != null) imageObject = obj;
    
    var state = imageObject.readyState;
    var oldImage = new Image();
    oldImage.src = imageObject.src;
    var dW = oldImage.width;
    var dH = oldImage.height;
    
    if(dW>MaxW || dH>MaxH)
    {
        a = dW/MaxW;
        b=dH/MaxH;
        
        if(b > a) a = b;
        
        dW = dW / a;
        dH = dH / a;
    }
    
    if(dW > 0 && dH > 0) imageObject.width = dW;
    
    imageObject.Height = dH;
    
    if(state != 'complete' || imageObject.width > MaxW || imageObject.Height > MaxH)
    {
        setTimeout("ResizeImage(null, " + MaxW + ", " + MaxH + ")", 40);
    }
}

/*+--------------------------------------------------+
  |函 数 名:in_array(str, arr)                       |
  |传入参数:str(String类型)                          |
  |         arr(Array类型)                           |
  |返 回 值:(Bool)                                   |
  |创 建 人:Simon.Ye                                 |
  |创建时间:2006-06-18                               |
  |说　　明:PHP的in_array函数的JavaScript实现        |
  +--------------------------------------------------+*/
function in_array(str, arr)
{
    for(var i = 0; i < arr.length; i++)
    {
        if(str == arr[i])
        {
            return true;
        }
        
        continue;
    }
    
    return false;
}

/*+--------------------------------------------------+
  |函 数 名:preg_match(regStr, str)                  |
  |传入参数:regStr(Object类型)                       |
  |         str(String类型)                          |
  |返 回 值:(Bool)                                   |
  |创 建 人:Simon.Ye                                 |
  |创建时间:2006-06-18                               |
  |说　　明:PHP的preg_match函数的JavaScript实现      |
  +--------------------------------------------------+*/
function preg_match(regStr, str)
{
    var objRegExp = new RegExp(regStr);
    return objRegExp.test(str);
}

/*+--------------------------------------------------+
  |函 数 名:empty(str)                               |
  |传入参数:str(String类型)                          |
  |返 回 值:(Bool)                                   |
  |创 建 人:Simon.Ye                                 |
  |创建时间:2006-06-18                               |
  |说　　明:判断字符串是否为空                       |
  +--------------------------------------------------+*/
function empty(str)
{
    if(!str) return true;
    return false;
}

/*+--------------------------------------------------+
  |函 数 名:isEmail(email)                           |
  |传入参数:email(String类型)                        |
  |返 回 值:(Bool)                                   |
  |创 建 人:Simon.Ye                                 |
  |创建时间:2006-06-18                               |
  |说　　明:Email检测函数                            |
  +--------------------------------------------------+*/
function isEmail(email)
{
    return preg_match(/^([\w\-\.]+)(@)([\w\-\.]+)(\.)([\w\-\.]+)$/, email);
}

/*+--------------------------------------------------+
  |函 数 名:isInt(str)                               |
  |传入参数:str(String类型)                          |
  |返 回 值:(Bool)                                   |
  |创 建 人:Simon.Ye                                 |
  |创建时间:2006-06-18                               |
  |说　　明:判断是否有符号整数                       |
  +--------------------------------------------------+*/
function isInt(str)
{
    return preg_match(/^[\-|\+]?\d+$/, str);
}

/*+--------------------------------------------------+
  |函 数 名:isUInt(str)                              |
  |传入参数:str(String类型)                          |
  |返 回 值:(Bool)                                   |
  |创 建 人:Simon.Ye                                 |
  |创建时间:2006-06-18                               |
  |说　　明:判断是否无符号整数                       |
  +--------------------------------------------------+*/
function isUInt(str)
{
    return preg_match(/^\d+$/, str);
}

/*+--------------------------------------------------+
  |函 数 名:isFloat(str)                             |
  |传入参数:str(String类型)                          |
  |返 回 值:(Bool)                                   |
  |创 建 人:Simon.Ye                                 |
  |创建时间:2006-06-18                               |
  |说　　明:判断是否有符号小数                       |
  +--------------------------------------------------+*/
function isFloat(str)
{
    return preg_match(/^[\-|\+]?\d+\.{1}\d+$/, str);
}

/*+--------------------------------------------------+
  |函 数 名:isUFloat(str)                            |
  |传入参数:str(String类型)                          |
  |返 回 值:(Bool)                                   |
  |创 建 人:Simon.Ye                                 |
  |创建时间:2006-06-18                               |
  |说　　明:判断是否无符号小数                       |
  +--------------------------------------------------+*/
function isUFloat(str)
{
    return preg_match(/^\d+\.{1}\d+$/, str);
}

/*+--------------------------------------------------+
  |函 数 名:isIDCard15(str)                          |
  |传入参数:str(String类型)                          |
  |返 回 值:(Bool)                                   |
  |创 建 人:Simon.Ye                                 |
  |创建时间:2006-06-18                               |
  |说　　明:判断是否是15位身份证                     |
  +--------------------------------------------------+*/
function isIDCard15(str)
{
    return preg_match(/^\d{15}$/, str);
}

/*+--------------------------------------------------+
  |函 数 名:isIDCard18(str)                          |
  |传入参数:str(String类型)                          |
  |返 回 值:(Bool)                                   |
  |创 建 人:Simon.Ye                                 |
  |创建时间:2006-06-18                               |
  |说　　明:判断是否是18位身份证                     |
  +--------------------------------------------------+*/
function isIDCard18(str)
{
    return preg_match(/^\d{17}[\d|x|X]{1}$/, str);
}

/*+--------------------------------------------------+
  |函 数 名:isDate(str)                              |
  |传入参数:str(String类型)                          |
  |返 回 值:(Bool)                                   |
  |创 建 人:Simon.Ye                                 |
  |创建时间:2006-06-18                               |
  |说　　明:判断是否正确的日期格式                   |
  +--------------------------------------------------+*/
function isDate(str)
{
    if(!preg_match(/^\d{4}\-\d{1,2}\-\d{1,2}$/, str))
    {
        return false;
    }
    else
    {
        var arrMonth30 = new Array('4', '6', '9', '11');
        var arr = str.split('-');
        var YYYY = parseInt(arr[0], 10);
        var mm = parseInt(arr[1], 10);
        var dd = parseInt(arr[2], 10);
        
        if(YYYY < 1000 || mm < 1 || mm > 12 || dd < 1 || dd > 31)
        {
            return false;
        }
        else if(mm == 2 && dd > 29)
        {
            return false;
        }
        else if((YYYY % 4) != 0 && mm == 2 && dd > 28)
        {
            return false;
        }
        else if(in_array(mm, arrMonth30) && dd > 30)
        {
            return false;
        }
        else
        {
            return true;
        }
    }
}

/*+--------------------------------------------------+
  |函 数 名:isDateTime(str)                          |
  |传入参数:str(String类型)                          |
  |返 回 值:(Bool)                                   |
  |创 建 人:Simon.Ye                                 |
  |创建时间:2006-06-18                               |
  |说　　明:判断是否正确的日期时间格式               |
  +--------------------------------------------------+*/
function isDateTime(str)
{
    if(!preg_match(/^\d{4}\-\d{1,2}\-\d{1,2} \d{1,2}:\d{1,2}:?\d{0,2}$/, str))
    {
        return false;
    }
    else
    {
        var arrMonth30 = new Array('4', '6', '9', '11');
        var arr = str.split(' ');
        var arrDate = arr[0].split('-');
        var arrTime = arr[1].split(':');
        var YYYY = parseInt(arrDate[0], 10);
        var mm = parseInt(arrDate[1], 10);
        var dd = parseInt(arrDate[2], 10);
        var HH = parseInt(arrTime[0], 10);
        var ii = parseInt(arrTime[1], 10);
        var ss = 0;
        
        if(arrTime.length == 3) ss = parseInt(arrTime[2], 10);
        
        if(YYYY < 1000 || mm < 1 || mm > 12 || dd < 1 || dd > 31 || HH > 23 || ii > 59)
        {
            return false;
        }
        else if(ss != 0 && ss > 59)
        {
            return false;
        }
        else if(mm == 2 && dd > 29)
        {
            return false;
        }
        else if((YYYY % 4) != 0 && mm == 2 && dd > 28)
        {
            return false;
        }
        else if(in_array(mm, arrMonth30) && dd > 30)
        {
            return false;
        }
        else
        {
            return true;
        }
    }
}

/*+--------------------------------------------------+
  |函 数 名:isMobile(str)                            |
  |传入参数:str(String类型)                          |
  |返 回 值:(Bool)                                   |
  |创 建 人:Simon.Ye                                 |
  |创建时间:2006-06-18                               |
  |说　　明:判断是否正确的手机号码                   |
  +--------------------------------------------------+*/
function isMobile(str)
{
    return preg_match(/^(130|131|132|133|134|135|136|137|138|139)\d{8}$/, str);
}

/*+--------------------------------------------------+
  |函 数 名:isZipCode(str)                           |
  |传入参数:str(String类型)                          |
  |返 回 值:(Bool)                                   |
  |创 建 人:Simon.Ye                                 |
  |创建时间:2006-06-18                               |
  |说　　明:判断是否正确的邮政编码                   |
  +--------------------------------------------------+*/
function isZipCode(str)
{
    return preg_match(/^\d{6}$/, str);
}

/*+--------------------------------------------------+
  |函 数 名:checkInput(regStr)                       |
  |传入参数:str(String类型)                          |
  |返 回 值:(Bool)                                   |
  |创 建 人:Simon.Ye                                 |
  |创建时间:2006-06-18                               |
  |说　　明:限制用户的输入(例:<input type="text"     |
  |         onKeyPress="event.returnValue=checkInput |
  |         (/\d+/);">限制只能输入数字)              |
  +--------------------------------------------------+*/
function checkInput(regStr)
{
    var inputChar = String.fromCharCode(event.keyCode);
    
    if(!preg_match(regStr, inputChar)) return false;
    
    return true;
}

/*+--------------------------------------------------+
  |函 数 名:onlyEnglish()                            |
  |传入参数:str(String类型)                          |
  |返 回 值:(Bool)                                   |
  |创 建 人:Simon.Ye                                 |
  |创建时间:2006-06-18                               |
  |说　　明:限制用户只能输入英文(用法同上)           |
  +--------------------------------------------------+*/
function onlyEnglish()
{
    return (event.keyCode < 128);
}

//持续添加中...
