﻿// JScript 文件

String.prototype.Trim = function () { return this.replace(/(^\s*)|(\s*$)/g, ""); };
String.prototype.LTrim = function () { return this.replace(/(^\s*)/g, ""); };
String.prototype.RTrim = function () { return this.replace(/(\s*$)/g, ""); };
String.prototype.endsWith = function (str) { return this.substr(this.length - str.length) == str; };
String.prototype.startsWith = function (str) { return this.substr(0, str.length) == str; };
String.prototype.convertHtml = function () { return this.replaceAll('#lt', '&lt').replceAll('#gt', '&gt').replaceAll('#nbsp;', '&nbsp;'); };
String.prototype.replaceAll = function (s1, s2) { return this.replace(new RegExp(s1, "gm"), s2); };
String.prototype.delHtml = function () { return this.replace(/\r\n/gi, '').replace(/\s+/gi, ' ').replace(/<script[^>]*?>.*?<\/script>/gi, '').replace(/<object[^>]*?>.*?<\/object>/gi, '').replace(/<iframe[^>]*?>.*?<\/iframe>/gi, '').replace(/<[^>].*?>/gi, '').replace(/&nbsp;/gi, ''); };
String.prototype.AbsLen = function () { var r = /[^\x00-\xff]/g; return this.replace(r, "__").length; };
String.prototype.sub = function(n) { 
    if(this.AbsLen() <= n) return this;   
    var m = Math.floor(n/2);    
    for(var i=m; i<this.length; i++){    
        if(this.substr(0, i).AbsLen()>=n){    
            return this.substr(0, i); 
        }    
    } 
    return this;   
};    
//字符串处理

//max:最大的半角字符长度
function cl(o,max){
    if(!max)
        max=o.getAttribute? parseInt(o.getAttribute("maxlength")):1000; 
    if(o.value.AbsLen() >max){
	    o.value = o.value.sub(max);
	    alert("输入内容不能超过 "+max+" 个字符!");
	}
	else {
	
	}
};
function clm(message,total,used,remain){
	var max;
	max = total.value;
	if(message.value.AbsLen() >max){
	    message.value = message.value.sub(max);
	if(used)
	    used.value = max;
	if(remain)
	    remain.value = 0;
	alert("输入内容不能超过 "+max+" 个字符!");
	}
	else {
	if(used)
	    used.value = message.value.AbsLen();
	if(remain)
	    remain.value = max - used.value;
	}
};
function LimitLength(str,len)
{
    if(typeof(str)=="string"){
         if(str.length>len){
            document.write(str.substring(0,len)+"...");
         }
         else{
            document.write(str);
         }
     }
};

function GetLimitLength(str,len){
    if(typeof(str)=="string")
    {
         if(str.length>len){
            return str.substring(0,len)+"...";
         }
         else{
            return str;
         } 
    }
};

function GetWrapedString(str,row,rowLen,moreStr)
{
    if(typeof(str)=="string"){
         if(str.length>rowLen){
            var s='';
            var i=0;
            while(str.length>0&&i<row){
                s+=str.substr(0,rowLen)+'<br>';
                str=str.substr(rowLen);
                i++;
                if(i==row&&str.length>rowLen){
                    s=s.substr(0,s.length-6);
                    if(typeof(moreStr)!='undefined')
                        s+=moreStr;
                    else
                        s+='...';
                }
            }
            return s;
         }
         else{     
            return str;
         }
     }
};
//字符串处理

//检查并限制输入字符长度
//使用方法: <textarea onmouseup="return isMaxLen(this)" onkeyup="return isMaxLen(this)"></textarea>
function isMaxLen(o){  
 var nMaxLen=o.getAttribute? parseInt(o.getAttribute("maxlength")):"";
 if (o.getAttribute && o.value.length > nMaxLen)
     o.value = o.value.substring(0, nMaxLen);
};
function isMinLen(o){  
 var nMinLen=o.getAttribute? parseInt(o.getAttribute("minlength")):"";  
 if(o.getAttribute && o.value.length<nMinLen)
    alert('内容不能少于'+nMinLen+'个字符'); 
};

function Request(strName){
    var strHref = window.document.location.href;
    var intPos = strHref.indexOf("?");
    var strRight = strHref.substr(intPos + 1);
    var arrTmp = strRight.split("&");
    for(var i = 0; i < arrTmp.length; i++){
        var arrTemp = arrTmp[i].split("=");
        if(arrTemp[0].toUpperCase() == strName.toUpperCase()) 
            return arrTemp[1];
    }
    return "";
};



Array.prototype.remove = function (dx) {
    if (isNaN(dx) || dx > this.length) { return false; }
    for (var i = 0, n = 0; i < this.length; i++) {
        if (this[i] != this[dx]) {
            this[n++] = this[i]
        }
    }
    this.length -= 1;
};

function parseXml(html){
    try {
		if (window.ActiveXObject) {
			var xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
			xmlDoc.async = false;
			xmlDoc.loadXML(html);
			
			return xmlDoc;
		} else {
			var parser = new DOMParser();
			var xmlDoc = parser.parseFromString(html, 'text/xml');
			
			return xmlDoc;
		}
	} catch (e) {
		return null;
	}
};

Date.prototype.format = function (format) {
    /*
    * eg:format="YYYY-MM-dd HH:mm:ss";
    */
    var o = {
        "M+": this.getMonth() + 1,  //month
        "d+": this.getDate(),     //day
        "h+": this.getHours(),    //hour
        "m+": this.getMinutes(),  //minute
        "s+": this.getSeconds(), //second
        "q+": Math.floor((this.getMonth() + 3) / 3),  //quarter
        "S": this.getMilliseconds() //millisecond
    };

    if (/(y+)/.test(format)) {
        format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    }

    for (var k in o) {
        if (new RegExp("(" + k + ")").test(format)) {
            format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
        }
    }
    return format;
};
var request = {
    QueryString: function (val) {
        var uri = window.location.search;
        var re = new RegExp("" + val + "\=([^\&\?]*)", "ig");
        return ((uri.match(re)) ? (uri.match(re)[0].substr(val.length + 1)) : null);
    },
    QueryStrings: function () {
        var uri = window.location.search;
        var re = /\w*\=([^\&\?]*)/ig;
        var retval = [];
        while ((arr = re.exec(uri)) != null)
            retval.push(arr[0]);
        return retval;
    },
    setQuery: function (val1, val2) {
        var a = this.QueryStrings();
        var retval = "";
        var seted = false;
        var re = new RegExp("^" + val1 + "\=([^\&\?]*)$", "ig");
        for (var i = 0; i < a.length; i++) {
            if (re.test(a[i])) {
                seted = true;
                a[i] = val1 + "=" + val2;
            }
        }
        retval = a.join("&");
        return "?" + retval + (seted ? "" : (retval ? "&" : "") + val1 + "=" + val2);
    }
};

$.fn.extend({
    position: function (start, end, isSet) {
        var elem = this[0];
        if (elem) {
            if ($.browser.msie) {
                var rng;
                if (document.selection.createTextRange) {
                    rng = event.srcElement.createTextRange();
                    rng.moveToPoint(event.x, event.y);
                } else {
                    rng = document.selection.createRange();
                }
                if (start === undefined) {
                    var count = 0;
                    if (elem.body)
                        count = elem.body.innerHTML.length;
                    rng.moveStart("character", -count);
                    return rng.text.length;
                }
                else { if (isSet || rng.text.length == 0) this.selectRange(start, end) }
            }
        } else {
            if (value === undefined)
                return undefined;
        }
    }
});
$.fn.selectRange = function(start, end){  
    return this.each(function(){ 
    this.focus();
    if(this.selection.createRange && this.selection.createRange().text)
        return;
    else if(this.selection.createTextRange &&this.selection.createTextRange().text)
        return;
    this.execCommand("SelectAll");
    var sls = this.selection;
        if(start === undefined)
            start = 0;
        if(end === undefined)
            end = 0;  
        if (sls.setSelectionRange){   
            sls.setSelectionRange(start, end);   
        }   
        else    
            if (sls.createRange){
                var range = sls.createRange();
                range.collapse(true);
                if(end != 0){
                    range.moveEnd('character', end);
                    range.moveStart('character', start);}
                else{range.move('character', start)};
                range.select();   
            }   
    });   
};
//$.fn.cusorMove = function(start, end){  
//    return this.each(function(){ 
//    this.focus();
//    if(this.selection.createRange && this.selection.createRange().text)
//        return;
//    else if(this.selection.createTextRange &&this.selection.createTextRange().text)
//        return;
//    var sls = this.selection;
//        if(start === undefined)
//            start = 0;
//        if(end === undefined)
//            end = 0;  
//        if (sls.setSelectionRange){   
//            sls.setSelectionRange(start, end);   
//        }   
//        else    
//            if (sls.createRange){
//                var range = sls.createRange();
//                range.collapse(true);
//                if(end != 0){
//                    range.moveEnd('character', end);
//                    range.moveStart('character', start);}
//                else{range.move('character', start)};
//                range.select();   
//            }   
//    });   
//};  

function regexMail(mail){    
    var pattern = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;   
    flag = pattern.test(mail);
    if(flag) {    
        return true;    
    }    
    else  
        return false;    
};
