﻿//类库
//去除两端空格
if (!String.prototype.trim) {
    var TRIM_REG = /^\s+|\s+$/g;
    String.prototype.trim = function() { return this.replace(TRIM_REG, ''); }
}
String.prototype.trueLength = function(isForShow) {
    var length = this.replace(/[^\u0000-\u00ff]/g, "aa").length;
    if (isForShow) { return Math.ceil(length / 2); }
    else { return length; }
}

//StringBuffer
/*
var buffer = new StringBuffer();
buffer.append("hello ");
var result = buffer.toString();
*/
function StringBuffer() {
    this.__strings__ = new Array();
}
StringBuffer.prototype.append = function(str) {
    this.__strings__.push(str);
};
StringBuffer.prototype.toString = function() {
    return this.__strings__.join("");
};

//获取浏览器参数
Request = {
    QueryString: function(item) {
        var svalue = location.search.match(new RegExp("[\?\&]" + item + "=([^\&]*)(\&?)", "i"));
        return svalue ? svalue[1] : svalue;
    }
}
//Request.QueryString("name");

//浏览器版本
//在/js/Common/client

function URLencode(sStr) {
    return escape(sStr).replace(/\+/g, '%2B').replace(/\"/g, '%22').replace(/\'/g, '%27').replace(/\//g, '%2F');
}

//http://www.cnblogs.com/rubylouvre/archive/2010/04/20/1716486.html
//高效获取XMLHttp
var xhr;
(function() {
    var s = ["XMLHttpRequest",
    "ActiveXObject('Msxml2.XMLHTTP.6.0')",
    "ActiveXObject('Msxml2.XMLHTTP.3.0')",
    "ActiveXObject('Msxml2.XMLHTTP')",
    "ActiveXObject('Microsoft.XMLHTTP')"];

    //使用eval大法防止IE的条件编译在压缩时被删掉  
    if (eval("''+/*@cc_on" + " @_jscript_version@*/-0") === 5.7 &&
    location.protocol === "file:") {
        s.shift();
    }
    for (var i = 0; i < 3; i++) {
        try {
            if (eval("new " + s[i])) {
                xhr = s[i]
                break;
            }
        } catch (e) { }
    }
})();
var getXmlHttp = new Function("return new " + xhr);

var getElementsByClassName = function(searchClass, node, tag) {
    if (document.getElementsByClassName) {
        return document.getElementsByClassName(searchClass)
    } else {
        node = node || document;
        tag = tag || "*";
        var classes = searchClass.split(" "),
        elements = (tag === "*" && node.all) ? node.all : node.getElementsByTagName(tag),
        patterns = [],
        returnElements = [],
        current,
        match;
        var i = classes.length;
        while (--i >= 0) {
            patterns.push(new RegExp("(^|\\s)" + classes[i] + "(\\s|$)"));
        }
        var j = elements.length;
        while (--j >= 0) {
            current = elements[j];
            match = false;
            for (var k = 0, kl = patterns.length; k < kl; k++) {
                match = patterns[k].test(current.className);
                if (!match) break;
            }
            if (match) returnElements.push(current);
        }
        return returnElements;
    }
}

function $() {
    var elements = [];
    for (var i = 0; i < arguments.length; i++) {
        var element = arguments[i];
        if (typeof element == 'string')
            element = document.getElementById(element);
        if (arguments.length == 1)
            return element;
        elements.push(element);
    }
    return elements;
}

//移除数组中的项
Array.prototype.remove = function(item) {
    var a = [],
         i,
         len = this.length;
    if (!len) {
        return [];
    }
    for (i = 0; i < len; i++) {
        if (this[i] != item) {
            a.push(this[i]);
        }
    }
    return a;
};
Array.prototype.indexOf = function(substr, start) {
    var ta, rt, d = '\0';
    if (start !== null) { ta = this.slice(start); rt = start; } else { ta = this; rt = 0; }
    var str = d + ta.join(d) + d, t = str.indexOf(d + substr + d);
    if (t == -1) {
        return -1;
    }
    rt += str.slice(0, t).replace(/[^\0]/g, '').length;
    return rt;
};

/**
* 批量设置属性
* @param obj {object} 对应元素
* @param css {json} 参数，用json组织的批量样式
*/
function setStyle(obj, css) {
    for (var atr in css) {
        obj.style[atr] = css[atr];
    }
}

function setAttributes(obj, Attributes) {
    for (var atr in Attributes) {
        obj.setAttribute(atr, Attributes[atr]);
    }
}

//获取当前 select 元素的值 
var getSelectValue = function(select) {
    var idx = select.selectedIndex,
        option,
        value;
    if (idx > -1) {
        option = select.options[idx];
        value = option.attributes.value;
        return (value && value.specified) ? option.value : option.text;
    }
    return null;
}
