String.prototype.trim=function(){
    var _re,_argument = arguments[0] || " ";
	typeof(_argument)=="string"? _re = new RegExp("(^"+_argument+"*)|("+_argument+"*$)","g") : _re = _argument;
    return this.replace(_re,"");
}
String.prototype.ltrim=function(){
    var _re, _argument = arguments[0] || " ";
	typeof(_argument)=="string"? _re = new RegExp("(^"+_argument+"*)","g") : _re = _argument;
    return this.replace(_re,"");
}
String.prototype.rtrim=function(){
    var _re, _argument = arguments[0] || " ";
	typeof(_argument) == "string" ? _re= new RegExp("("+_argument+"*$)","g"): _re=_argument;
    return this.replace(_re,"");
}
String.prototype.cint=function(){
    return this.replace(/\D/g,"")-0;
}
String.prototype.endWith = function(){
	if(typeof(arguments[0])=="string"){
		var _re = new RegExp(".*"+arguments[0]+"$","gmi");
		return _re.test(this);
	}else{
		return arguments[0].test(this);
	}
}
String.prototype.startWith = function(){
	if(typeof(arguments[0])=="string"){
		var _re = new RegExp("^"+arguments[0]+".*","gmi");
		return _re.test(this);
	}else{
		return arguments[0].test(this);
	}
}
var SBS = {Config:{},Base:{},Abstract:{},Global:{},FrontSQL:{}}

SBS.Base.typeofEx = typeofEx;
SBS.Base.now = function(){
	var _nowFullDate = new Date();
	return _nowFullDate.getFullYear()+"-"+(_nowFullDate.getMonth()+1)+"-"+_nowFullDate.getDate()+" "+_nowFullDate.getHours()+":"+_nowFullDate.getMinutes()+":"+_nowFullDate.getSeconds();
}
SBS.Base.time = function(){
	var _nowTime = new Date();
	return _nowTime.getHours()+":"+_nowTime.getMinutes()+":"+_nowTime.getSeconds();
}
SBS.Base.request = request;
SBS.Base.redirect = redirect;
SBS.Base.GetCookieVal = GetCookieVal;
SBS.Base.readCookie = readCookie;
SBS.Base.writeCookie = writeCookie;
SBS.Base.removeCookie = removeCookie;
SBS.Base.doAjax = doAjax;
SBS.Base.copyString2ClipBoard = copyString2ClipBoard;
SBS.Base.createElement = createElement;
SBS.Base.hasParentNode = hasParentNode;
SBS.Base.printPage = function(elem){
	var n = window.open("");
	n.document.write(elem.innerHTML);
}

SBS.FrontSQL.validate = function (formObj){
	for(i=0; i<formObj.elements.length; i++){
		var j = formObj.elements[i];
		if (!j.CheckValue || typeof(j.CheckValue)=="function") continue;
		var _checkArray = j.CheckValue.split(";");
		for (k=0; k<_checkArray.length; k++){
			switch(_checkArray[k].split("|")[0]){
				case "filled" : if(j.value==""){SBS.FrontSQL.validatepopup(formObj,j,_checkArray[k].split("|")[1]);return false; };break;
				case "number" : if(/\D/.test(j.value)){SBS.FrontSQL.validatepopup(formObj,j,_checkArray[k].split("|")[1]);return false;};break;
				case "email" : if(!/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(j.value)){SBS.FrontSQL.validatepopup(formObj,j,_checkArray[k].split("|")[1]);return false;};break;
				case "minLength6" : if(j.value.length<6){SBS.FrontSQL.validatepopup(formObj,j,_checkArray[k].split("|")[1]);return false;};break;
				case "minLength8" : if(j.value.length<8){SBS.FrontSQL.validatepopup(formObj,j,_checkArray[k].split("|")[1]);return false;};break;
				case "date" : var date = j.value.split(/\D/);var testdate = new Date(date[0],date[1]-1,date[2]);if(date.length!=3 || date[0]!=testdate.getFullYear() || date[1]!=testdate.getMonth()+1 || date[2]!=testdate.getDate()){SBS.FrontSQL.validatepopup(formObj,j,_checkArray[k].split("|")[1]);return false;};break;
			}
		}
	}
	return true;
}
SBS.FrontSQL.validatepopup = function(formObj,obj,str){
	//alert(str);
	formObj.lastChild.firstChild.innerHTML = str;
	obj.style.backgroundImage = "url(/images/tipsbg.gif)";
	obj.select();
	//return false;
}

function hasParentNode(obj,parentnode){
	var _n=obj;
	for (i=0; _n=_n.parentNode ;i++){
		if(_n==parentnode)
		return true;
		if(_n==document.documentElement)
		return false;
	}
}

function createElement(name, attrs, style, innerhtml) {
    var e = document.createElement(name);
    if (attrs) {
        for (key in attrs) {
            if (key == 'class') {
                e.className = attrs[key];
            } else if (key == 'id') {
                e.id = attrs[key];
            } else {
                e.setAttribute(key, attrs[key]);
            }
        }
    }
    if (style) {
        for (key in style) {
            e.style[key] = style[key];
        }
    }
    if (innerhtml) {
        //e.appendChild(document.createTextNode(text));
		e.innerHTML = innerhtml;
    }
    return e;
}


function typeofEx(x){
	if (typeof(x)!="object"){
		return typeof(x);
	}
	if (x.tagName!=undefined || x.tagName!=null){
		return "element";
	}
	var _typeArray = [];
	_typeArray["date"] = Date;
	_typeArray["array"] = Array;
	for (key in _typeArray){
		if (x instanceof _typeArray[key]){
			return key;
		}
	}

}

function $N() {
  return document.getElementsByName(arguments[0]);
}
function $T() {  // $T(tagName,parentElement)  : $T("input","box")
    if (arguments.length==1){
      return document.getElementsByTagName(arguments[0]);
    }else if(arguments.length==2){
        if (typeof(arguments[1])=="object"){
           return arguments[1].getElementsByTagName(arguments[0]);
        }else{
           return $(arguments[1]).getElementsByTagName(arguments[0]);
        }
    }
}

function isDigit(s) {  // 判断 S 是否全为数字
	return /\D/.test(s)
}

function request(paras){  //获取 url 的参数值，不区分大小写,如无此参数，返回空字符串.
	var url = location.href;
	var paraString = url.substring(url.indexOf("?")+1,url.length).split("&");
	var paraObj = {}
	for (i=0; j=paraString[i]; i++){
		paraObj[j.substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=")+1,j.length);
	}
	var returnValue = paraObj[paras.toLowerCase()];

	if(typeof(returnValue)=="undefined"){
		return "";
	}else{
		return returnValue;
	}
}

/*
	Use Age:
		redirect(url,[paras_1],[paras_2],...,[paras_n],[newWin])
		paras_n:	url参数，形式如 page=1 ?type=news 等?
		newWin:		函数的最后一个参数，布尔类型，为true时，用新窗口(window.open)打开url，否则用当前窗口(location.open)打开。默认值为 false?

	Example:
		redirect("http://www.google.com/search","q=hello","start=20",true);  //将在google搜索"hello"，翻到第3页，并用新窗口打开?
		redirect("http://www.xxx.com/listpage.asp","page="+parseInt(request("page"))+1);  //翻页功能中的“下一页”?

*/
function redirect(){
    if (arguments.length==0){
        return;
    }
    if (arguments.length==1){
        //setTimeout(function(){location.href = arguments[0];},10);
        location.href = arguments[0];
        return;
    }else if(arguments.length==2 && typeof(arguments[1])=="boolean"){
	    (arguments[1]==true)?window.open(arguments[0]):location.href = arguments[0];
        return;
    }else{
        var paraObj = {};
        if (arguments[0].indexOf("?")!=-1){
            var curUrlParas = arguments[0].substring(arguments[0].indexOf("?")+1,arguments[0].length).split("&");
            for (i=0; j=curUrlParas[i]; i++){
                paraObj[j.substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=")+1,j.length);
            }
        }
		var j = arguments.length;
		if (typeof(arguments[j-1])=="boolean"){
			j--;
		}
        for (i=1; i<j; i++){
            paraObj[arguments[i].substring(0,arguments[i].indexOf("=")).toLowerCase()] = arguments[i].substring(arguments[i].indexOf("=")+1,arguments[i].length);
        }
        var newURL= "";
        for (key in paraObj){
            newURL += key+"="+paraObj[key]+"&";
        }
        if (arguments[0].indexOf("?")!=-1){
            newURL = arguments[0].substring(0,arguments[0].indexOf("?")+1)+newURL.substring(0,newURL.length-1);
        }else{
            newURL = arguments[0]+"?"+newURL.substring(0,newURL.length-1);
        }
		if(typeof(arguments[arguments.length-1])=="boolean" && arguments[arguments.length-1]==true){
			setTimeout(function(){window.open(newURL);},10);
		}else{
			setTimeout(function(){location.href = newURL;},10);
		}
        return;
    }
}

/*
function writeCookie(name, value, lifetime) {
	exp = new Date();
	if (arguments.length<3){
		exp.setTime(exp.getTime() + (86400 * 1000 * 30));
		document.cookie = name + "=" + escape(value) + "; expires=" + exp.toGMTString() + "; path=/";
	}else if(lifetime=="0"){
		document.cookie = name + "=" + escape(value) + "; path=/";
	}else{
		exp.setTime(exp.getTime() + parseInt(lifetime)*1000);
		document.cookie = name + "=" + escape(value) + "; expires=" + exp.toGMTString() + "; path=/";
	}
}
function readCookie(name) {
	var search;
	search = name + "=";
	offset = document.cookie.indexOf(search);
	if (offset != -1) {
		offset += search.length;
		end = document.cookie.indexOf(";", offset);
		if (end == -1){
			end = document.cookie.length;
		}
		return unescape(document.cookie.substring(offset, end));
	}else{
		return "";
	}
}
*/
function GetCookieVal(offset){ //获得Cookie解码后的?
	var endstr = document.cookie.indexOf (";", offset);
	if (endstr == -1)
		endstr = document.cookie.length;
	return document.cookie.substring(offset, endstr);
}
function writeCookie(name, value){//设定Cookie?
	var expdate = new Date();
	var argv = arguments;
	var argc = 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;
	if(expires!=null) expdate.setTime(expdate.getTime() + ( expires * 1000 ));
	document.cookie = name + "=" + escape (value) +((expires == null) ? "" : ("; expires="+ expdate.toGMTString()))	+((path == null) ? "" : ("; path=" + path)) +((domain == null) ? "" : ("; domain=" + domain)) +((secure == true) ? "; secure" : "");
}

function removeCookie(name){ //删除Cookie
	var exp = new Date();
	exp.setTime (exp.getTime() - 1);
	var cval = GetCookie (name);
	document.cookie = name + "=" + cval + "; expires="+ exp.toGMTString();
}

function readCookie(name){ //获得Cookie的原始?
	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 "";
}

function copyString2ClipBoard(str){
	window.clipboardData.setData("Text",str);
}

function doAjax(url,obj){
	var _funB = obj["beforeAjax"] || function(){};
	var _funC = obj["oncomplete"] || function(){};
	var _funA = obj["afterAjax"] || function(){};
	var _method = obj["method"] || "post";
	var _paras = obj["paras"] || "";
	var _responseType = obj["responseType"] || "Text";

	_funB();
	var myAjax = new Ajax.Request(
		 url,{
		 method: _method,
		 parameters: _paras,
		 onComplete: function(x){_funC(_responseType=="Text"?x.responseText:x.responseXML)}
		 });
	_funA();

}
