/* ----------------------------------------------------------------------------
* Script Name: utils.js
* Creation Date: 2007-11-2 15:16:11
* Last Modified: 2007-11-2 15:16:11
* Author: meyu
* Copyright (c) 2007
* Purpose:
* ----------------------------------------------------------------------------*/

/*全半角转换
@ mixed mb_convert(mixed s [, boolean r]);
@ para
    s : String|Array|Json
    r : 为true时,半角转全角
@ return 转换后的原格式subject
*/
function mb_convert(s, r) {
    r = r || false;
    if(typeof(s) == 'object') {
        for(var key in s) {
            s[key] = mb_convert(s[key], r);
        }
        return s;
    } else if(s.length > 1) {
        var res = "";
        for(var a = 0, al = s.length; a < al; a++) {
            res += mb_convert(s.substr(a, 1), r);
        }
        return res;
    } else {
        //补遗数据
        var conv_list = {
            "\u3000" : " "
//            ,"\uFF08" : "("
//            ,"\uFF09" : ")"
//            ,"\uFF02" : "\""
//            ,"\uFF07" : "'"
//            ,"\uFF1C" : "<"
//            ,"\uFF1E" : ">"
//            ,"\uFF0D" : "-"
//            ,"\uFF10" : "0"
//            ,"\uFF11" : "1"
//            ,"\uFF12" : "2"
//            ,"\uFF13" : "3"
//            ,"\uFF14" : "4"
//            ,"\uFF15" : "5"
//            ,"\uFF16" : "6"
//            ,"\uFF17" : "7"
//            ,"\uFF18" : "8"
//            ,"\uFF19" : "9"
            };
/*
        if(r) {
            for(var key in conv_list) {
                if(conv_list[key] == s) return key;
            }
            return s;
        }
        return conv_list[s] ? conv_list[s] : s;
*/
        var code = s.charCodeAt(0);
        var _MIN = 65281;       //！
        var _MAX = 65373;       //｝
        var _MOMENT = 65248;    //转换距
        if(r) {
            for(var key in conv_list) {
                if(conv_list[key] == s) return key;
            }
            _MIN -= _MOMENT;
            _MAX -= _MOMENT;
            return (code >= _MIN && code < _MAX) ? String.fromCharCode(code + _MOMENT) : s;
        }
        return conv_list[s] ? conv_list[s] :
            (code >= _MIN && code < _MAX) ? String.fromCharCode(code - _MOMENT) : s;
    }
}

/*快速日期增减
@ string strtodate(string time [, string now]);
@ para
    time : (±)d days|months|years
    now  : 默认为今天,格式YYYY-MM-DD
@ return YYYY-MM-DD
*/
function strtodate(s, d){
    d = (d || "").replace(/\s/,'').replace(/\//,'-');
    var r = s.match(/^\s*((\+|-)?\d+)\s*(day|month|year)s?\s*/i);
    var t = d.match(/^(\d{4})-(\d{1,2})(-(\d{1,2}))?$/);
    if(!r) return "";
    var tmp = new Date();
    var _y = tmp.getFullYear();
    var _m = tmp.getMonth();
    var _d = tmp.getDate();
    if(t) {
        _y = parseInt(t[1], 10);
        _m = parseInt(t[2], 10) - 1;
        if(t[4]) _d = parseInt(t[4], 10);
    }
    var a = parseInt(r[1],10);
    switch(r[3].toLowerCase()) {
        case 'day':
            _d += a;
            break;
        case 'month':
            _m += a;
            break;
        case 'year':
            _y += a;
            break;
    }
    var tmp = new Date(_y, _m, _d);
    var _mon = tmp.getMonth()+1;
    var _day = tmp.getDate();
    return tmp.getFullYear()+"-"+(_mon > 9 ? _mon : '0'+_mon)+"-"+(_day > 9 ? _day : '0'+_day);
}

function timeLimit(f, t, d) {
    var s = strtodate(d, f);
    for(i = 0; i < 10; i++) {
        if(s.charCodeAt(i) != t.charCodeAt(i)) {
            if(s.charCodeAt(i) < t.charCodeAt(i)) {
                var r = d.match(/(\d+)\s*(day|month|year)s?/i);
                var n = {'day' : "天", 'month' : "个月", 'year' : "年"};//语言习惯: xx 个月
                alert("请控制时间跨度在" + r[1] + n[r[2]] + "内！");
                return false;
            }
            break;
        }
    }
    return true;
}

/*格式化数字(固定小数点位数)
@ float strtodate(float d, int l);
@ para
    d  : 要格式化的数字
    l  : 小数点的长度
@ return float;
*/
function number_format(d, l) {
    if(isNaN(d) || !d) d = 0;
    return parseFloat(d).toFixed(l || 2);
}

function str_repeat(i, m) {
    for(var o = ''; m-- > 0; o += i);
    return o;
}

function sprintf(){
	var a,f=arguments[0],fi='',i=1,m=[''],o='',p;
	while(f=f.substring(m[0].length)){
		m=/^([^\%]*)(?:(\x25)((\x25)|(?:(\d+)\$)?(\+)?(0|\'([^$]))?(-|\^)?(\d+)?(?:\.(\d+))?([bcdefosuxX])))?/.exec(f);
		if(a=m[12]){
			if(arguments.length<(i=m[5]||i))
			throw("sprintf '"+m[0]+"' : No argument "+i);
			a=arguments[i++];
			s=(/[def]/.test(m[12])&&m[6]&&a>0)?'+':'';
			switch(m[12]){
				case 'b':a=a.toString (2);
				break;
				case 'c':a=String.fromCharCode(a);
				break;
				case 'd':a=parseInt(a);
				break;
				case 'e':a=m[11]?a.toExponential(m[11]):a.toExponential();
				break;
				case 'f':a=m[11]?parseFloat(a).toFixed(m[11]):parseFloat(a);
				break;
				case 'o':a=a.toString (8);
				break;
				case 's':a=((a=String(a))&&m[11]?a.substring(0,m[11]):a);
				break;
				case 'u':a=Math.abs(a);
				break;
				case 'x':a=a.toString (16);
				break;
				case 'X':a=a.toString (16).toUpperCase();
				break;
			}
			if(m[10]&&(m[10]>a.toString().length)){
				fir=fil=str_repeat(m[7]?m[8]||'0':' ',m[10]-a.toString().length);
				if(m[9]=='^'){
					fil=fil.substr(0,fil.length/2);
					fir=fir.substr(fil.length);
				} else
				m[9]=='-'?(fil=''):(fir='');
				a=fil+a+fir;
			}
		}
		o+=m[1]+((m[3]?m[4]||(s+a):m[2])||'');
	}
	return o;
}

Array.prototype.insert = function(i, o) {
    this.splice(i + 1, 0, o);
}

if(window.Node)
{
    Node.prototype.swapNode=function(node)
    {
        var nextSibling = this.nextSibling;
        node.parentNode.replaceChild(this,node);
        if(!nextSibling) {
            this.parentNode.appendChild(node);
        } else if(nextSibling == node) {
            this.parentNode.insertBefore(node,this);
        } else {
            this.parentNode.insertBefore(node,nextSibling);
        }
    }
}

function isJQuery(vIn) {
	return (typeof vIn=='object' && !!vIn.attr);
}

function mybind(elem, _type, handle) {
    if (elem.addEventListener) {
		elem.addEventListener(_type, handle, false);
    } else {
		elem.attachEvent("on" + _type, handle);
	}
}
function sethomepage()
{
	var confirm_type=0;
    var url = "http://"+window.location.host;
    if (document.all)
    {
       document.body.style.behavior="url(#default#homepage)";
       document.body.setHomePage(url);
       if (document.body.isHomePage(url) || document.body.isHomePage(url+'/')) //当前URL必须和验证的URL 是同一个域才有效
       {
          confirm_type = 1;
       }
    }
    else if (window.sidebar)
    {
        if(window.netscape)
        {
             try
            {
                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
            }
            catch (e)
            {
                alert( "该操作被浏览器拒绝，如果想启用该功能，请在地址栏内输入 about:config,然后将项 signed.applets.codebase_principal_support 值该为true" );
            }
        }
        var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components. interfaces.nsIPrefBranch);
        prefs.setCharPref('browser.startup.homepage',url);
        var homepage = prefs.getCharPref('browser.startup.homepage');
        if (homepage == url || homepage == url+'/')
        {
         	confirm_type = 1;
        }
    }
    if(confirm_type == 1)
    {
		$.ajax({ type: "GET", url: "index.php?module=user&view=sethomepage", success: function(notice){
			if(notice=='1'){
				alert("恭喜您设置首页成功");
			}
		}});
    }
}
function addfavorite(url, title)
{
	if(!url)
	{
		url = window.location.href;
	}
	if(!title)
	{
		title = document.title;
	}
	if (document.all)
	{
		window.external.addFavorite(url, title);
	}
	else if (window.sidebar)
	{
		window.sidebar.addPanel(title, url, "");
	}
}
function sethomecook (name, value,time) {
       var exp = new Date();
       //if(isNAN(time)) time=86400000;
       time= (typeof(time)=="undefined")?86400000:time;
       exp.setTime (exp.getTime()+time);

       document.cookie = name + "=" + encodeURI(value) + "; expires=" + exp.toGMTString()+"; path=/;domain=" + cookiedomain;
}
function gethomepage()
{
	var url = "http://"+window.location.host;
   if(getCookie("homepage") != '1')
    {
                if (document.all)
                {    document.body.style.behavior="url(#default#homepage)";
 					   if((document.body.isHomePage(url) || document.body.isHomePage(url+'/')) && getCookie("homepage") != '1')
                        {
                            $.ajax({ type: "GET", url: "index.php?module=user&view=checkhomepage", success: function(notice){
                                if(notice == '1'){
                                    sethomecook('homepage', '1'); //是会员 并且设置为首页 赠送金币成功
                                }
                            }});
                            sethomecook('ishomepage', '1');  //未登录的，有设置为首页
                        }
                }
                else if (window.sidebar)
                {
                    try
                    {
                        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
                        var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components. interfaces.nsIPrefBranch);
                        var homepage = prefs.getCharPref('browser.startup.homepage');
                    }
                    catch (e)
                    {
                        alert( "该操作被浏览器拒绝，如果想启用该功能，请在地址栏内输入 about:config,然后将项 signed.applets.codebase_principal_support 值该为true" );
                    }
                    if((homepage == url || homepage == url+'/') && getCookie("homepage") != '1')
                        {
                            $.ajax({ type: "GET", url: "index.php?module=user&view=checkhomepage", success: function(notice){
                                if(notice == '1'){
                                    sethomecook('homepage', '1');
                                }
                            }});
                            sethomecook('ishomepage', '1');  //未登录的，有设置为首页
                        }
                }
    }
}


