﻿
///////////// property extend



// 返回字符串 Unicode 长度
String.prototype.ulen = function() {
    var _s = this;
    return _s.replace(/[^\x00-\xff]/g,"aa").length;    
};

// 将 GET 参数转换为 JSON 对象
String.prototype.paramsToJson = function() {
    var _s = this;
    var paraJ = '';
    var paraArr = _s.split('&');
    for (var i = 0; i < paraArr.length; ++i) {
      var paraSubArr = paraArr[i].split('=');
      paraJ += "'" + paraSubArr[0] + "':";
      paraJ += "'" + paraSubArr[1] + "', ";
    }
    paraJ = '{' + paraJ.substring(0, paraJ.length - 2) + '}';
    return eval('(' + paraJ + ')');
};

// 判断字符串是否为手机号
String.prototype.isMobile = function() {
    var _s = this;
     var re=/^(130|131|132|133|134|135|136|137|138|139|159|158|153|150|157)(\d){8}$/; 
     if(!re.test(_s)) {
       return false;
     }
     else {
       return true;
     } 
};

// 判断字符串是否为电话
String.prototype.isPhone = function() {
    var _s = this;
     var re=/^[\d\-\(\)]+$/; 
     if(!re.test(_s)) {
       return false;
     }
     else {
       return true;
     } 
};

// 判断字符串是否为电邮地址
String.prototype.isEmail = function() {
    var _s = this;
     var re=/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
     if(!re.test(_s)) {
       return false;
     }
     else {
       return true;
     } 
};

// 判断字符串是否可以转换为日期
String.prototype.isDate = function() {
    var _s = this;
    var reg = /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$/;
    if (reg.test(_s)) {
        return true;
    }
    else {
        return false;
    }
};

// 判断字符串是否为邮编
String.prototype.isZipCode = function() {
    var _s = this;
     var re=/^\d{3,6}$/;
     if(!re.test(_s)) {
       return false;
     }
     else {
       return true;
     } 
};


// 截取
String.prototype.trim = function() {
    var _s = this;
    _s = _s.replace(/^\s*(.*?)[\s\n]*$/g, "$1");
    return _s;
};

// 返回通用的日期时间格式
Date.prototype.toNormalString = function() {
    var _d = this;
    var r = _d.getFullYear() + '-';
    r += (((_d.getMonth() + 1).toString().length == 1) ? '0' + (_d.getMonth() + 1).toString() : _d.getMonth() + 1) + '-';
    r += ((_d.getDate().toString().length == 1) ? '0' + _d.getDate().toString() : _d.getDate()) + ' ';
    r += ((_d.getHours().toString().length == 1) ? '0' + _d.getHours().toString() : _d.getHours()) + ':';
    r += ((_d.getMinutes().toString().length == 1) ? '0' + _d.getMinutes().toString() : _d.getMinutes()) + ':';
    r += (_d.getSeconds().toString().length == 1) ? '0' + _d.getSeconds().toString() : _d.getSeconds();
    return r;
};

// 数组移除元素并改变长度
Array.prototype.remove = function(dx) {
  var _a = this;
  if (isNaN(dx) || dx>_a.length) {
    return false;
  }
  for (var i=0,n=0; i<_a.length; ++i)
  {
　  if(_a[i] != _a[dx])
　　{
　　  _a[n++] = _a[i];
　　}
　}
  _a.length -= 1;
};

// 返回随机数
Math.rand = function(l, u) {
  return Math.floor((Math.random() * (u-l+1))+l);
};



/////////// cookie support

function getCookieVal(offset)
{
	var endstr = document.cookie.indexOf (";", offset);
	if (endstr == -1)
		endstr = document.cookie.length;
	return unescape(document.cookie.substring(offset, endstr));
}

function getCookie(name)
{
	var arg = name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	while (i < clen) {
		var j = i + alen;
		if (document.cookie.substring(i, j) == arg)
		  return getCookieVal (j);
		i = document.cookie.indexOf(" ", i) + 1;
		if (i == 0) break; 
	}
	return null;
}

function setCookie(name, value)
{
	var argv = setCookie.arguments;
	var argc = setCookie.arguments.length;
	var expires = (argc > 2) ? argv[2] : null;
	var path = (argc > 3) ? argv[3] : null;
	var domain = (argc > 4) ? argv[4] : null;
	var secure = (argc > 5) ? argv[5] : false;
	document.cookie = name + "=" + escape (value) +
		((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
		((path == null) ? "" : ("; path=" + path)) +
		((domain == null) ? "" : ("; domain=" + domain)) +
		((secure == true) ? "; secure" : "");
}

function getCookieValTransparent(offset)
{
	var endstr = document.cookie.indexOf (";", offset);
	if (endstr == -1)
		endstr = document.cookie.length;
	return document.cookie.substring(offset, endstr);
}

function getCookieTransparent(name)
{
	var arg = name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	while (i < clen) {
		var j = i + alen;
		if (document.cookie.substring(i, j) == arg)
		  return getCookieValTransparent (j);
		i = document.cookie.indexOf(" ", i) + 1;
		if (i == 0) break; 
	}
	return null;
}

function setCookieTransparent(name, value)
{
	var argv = setCookieTransparent.arguments;
	var argc = setCookieTransparent.arguments.length;
	var expires = (argc > 2) ? argv[2] : null;
	var path = (argc > 3) ? argv[3] : null;
	var domain = (argc > 4) ? argv[4] : null;
	var secure = (argc > 5) ? argv[5] : false;
	document.cookie = name + "=" + value +
		((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
		((path == null) ? "" : ("; path=" + path)) +
		((domain == null) ? "" : ("; domain=" + domain)) +
		((secure == true) ? "; secure" : "");
}

function delCookie(name)
{
	var exp = new Date();
	exp.setTime (exp.getTime() - 1);
	var cval = GetCookie (name);
	document.cookie = name + "=" + cval + "; expires="+ exp.toGMTString();
}


////////// server class mapping 
var getSuggestionLanguage = function() {
  var l = getCookie("Mabelle.Common.LanguageManager.Suggestion");
  if (l !== null) {
    return l;
  }
  else {
    return "CHI";
  }
};


/////// common functions

// 获取标签中的内容
var getTagValue = function(sContent, sTagName) {
    var sTagValue = "";
    var sTemp;
    if (sContent != null && sTagName != null)
    {
        sTemp = "<" + sTagName + ">";
        var nPosBegin = sContent.indexOf(sTemp);
        if (nPosBegin >= 0)
        {
            sTemp  = "</" + sTagName + ">";
            var nPosEnd = sContent.indexOf(sTemp);
            if (nPosEnd >= 0)
            {
                sTagValue = sContent.substring(nPosBegin + sTagName.length + 2,nPosEnd);
            }
        }
    }
    return sTagValue;
}

// 得到 Checkbox 的值
var getCheckBox = function(name) {
    var r = '';
    var c = document.getElementsByName(name);   
    for(i = 0; i < c.length; i++)   
    {   
        if(c[i].checked == true)   
        {   
            r = r + c[i].value + ',';
        }   
    }
    if (r.length > 0) {
        r = r.substring(0, r.length - 1);
    }
    return r;
};

// 得到干净的 URL
var getClearUrl = function() {
  return location.href.split('?')[0].split('#')[0];
};

// 添加收藏夹
var addFavor = function() {
    if (!isFF()) {
        window.external.AddFavorite(location.href, document.title)
    }
    else {
        window.sidebar.addPanel(document.title, location.href, document.title);
    }
};

// 返回到前一个页面
var goBack = function() {
  history.back();
};


////////// browser check
function isFF() {return navigator.userAgent.indexOf('fox') > -1;}
function isIE6() {return navigator.appVersion.indexOf('MSIE 6') > -1;}


////////// common class

// 字符串缓冲
var StringBuilder = function() {
  this._strings = new Array();
};

StringBuilder.prototype.append = function(str) {
  this._strings.push(str);
};

StringBuilder.prototype.toString = function() {
  return this._strings.join("");
};

// 对象：获取URL参数
var QueryString = function() { 
    var name,value,i; 
    var str=location.href; 
    var num=str.indexOf("?") 
    str=str.substr(num+1); 
    var arrtmp=str.split("&"); 
    for(i=0;i < arrtmp.length;i++){ 
        num=arrtmp[i].indexOf("="); 
        if(num>0){ 
            name=arrtmp[i].substring(0,num).toLowerCase(); 
            value=arrtmp[i].substr(num+1); 
            this[name]=value; 
        } 
    } 
};


