﻿ String.prototype.trim = function(){
	return this.replace(/(^\s+)|(\s+$)/g, '');
}
function BrowserDetect() {
	var doc=window.document;
	var navVersion=navigator.appVersion.toLowerCase();
	this.ie4=(!doc.getElementById&&doc.all)?true:false;
	this.ie5=(navVersion.indexOf("msie 5.0")!=-1)?true:false;
	this.ie55=(navVersion.indexOf("msie 5.5")!=-1)?true:false;
	this.ie6=(navVersion.indexOf("msie 6.0")!=-1)?true:false;
	this.ie7=(navVersion.indexOf("msie 7.0")!=-1)?true:false;
	this.isIE=(this.ie5||this.ie55||this.ie6||this.ie7)?true:false;
	this.isGecko=!this.isIE;
}
var browser = new BrowserDetect();

function tokenKey(){
	var hex = new Array('0','1','2','3','4','5','6','7','8', '9','a','b','c','d','e','f');
	var t = '';
	for (var i = 0; i<32; i++){
		t += hex[Math.floor(Math.random() * 16)];
	}
	return t.toUpperCase();
}

function AbsPos(el){
	for (var lx=0,ly=0;el!=null;lx+=el.offsetLeft,ly+=el.offsetTop,el=el.offsetParent);
	return {x:lx,y:ly}
}

function onKeydown(evt, act){
	var iekey = evt.keyCode;
	if(iekey == '13') {
	    eval(act);
	    return false;
	}
}

/* 增加一个isNoUrl参数，判断是否增加链接 */
function ResizeImage(img, width, isNoUrl){
    img.removeAttribute('width');   
    img.removeAttribute('height');
	if(img.width > width){
		img.width = width;
		if(!isNoUrl){
		    img.style.cursor = 'pointer';
		    img.onclick = function(){
			    window.open('/Content/ShowImage.aspx?src='+ img.src);			
		    };
		}
	}
}
/* 重置显示页面内容中所有图片的大小 */
function ResizeImageEditor(maxWidth){
    var imgs = document.all.tags('IMG');
    var length = imgs.length;
    for (var i=0; i < length; i++){
        ResizeImage(imgs[i], maxWidth);
    }
}
function ResizeImage_forum(img){
    ResizeImage(img, 750);
}
function T(n, e){
    document.getElementById(e).style.fontSize = n + 'px';
}


/* message */
function alertNull(e, m){ 
    if(e.value.trim().length == 0){
        alert(m);
        e.focus();
        return false;
    }
	return true;
}
function alertZero(e, m){
    if(e.value == '0'){
        alert(m);
        e.focus();
        return false;
    }
	return true;
}
function alertMessage(e, m){
    alert(m);
    if(e){
        e.focus();
    }
}
function alertNumber(e, m){
    var p = new RegExp(/^-?\d+$/gi);
    if(!p.test(e.value)){
        alert(m);
        e.select();
        e.focus();
        return false;
    }
	return true;
}
/* check positive integer */
function alertPositiveNumber(e, m){
    var p = new RegExp(/^[1-9]{1}[\d]*$/gi);
    if(!p.test(e.value)){
        alert(m);
        e.select();
        e.focus();
        return false;
    }
	return true;
}

/* 非负数 */
function alertNonNegativeNumber(e, m){
    var p = new RegExp(/^(0+|([1-9]{1}[\d]*))$/gi);
    if(!p.test(e.value)){
        alert(m);
        e.select();
        e.focus();
        return false;
    }
	return true;
}

function alertFloat(e, m){
    var p = new RegExp(/^-?\d+(\.|)\d*$/gi);
    if(!p.test(e.value)){
        alert(m);
        e.select();
        e.focus();
        return false;
    }
	return true;
}

/* 非负浮点 */
function alertNonNegativeFloat(e, m){
    var p = new RegExp(/^\d+(\.\d+)?$/gi);
    if(!p.test(e.value)){
        alert(m);
        e.select();
        e.focus();
        return false;
    }
	return true;
}

function alertHttp(e, m){
    var p = new RegExp(/^((http|https):\/\/+)|(^\/)|(^#$)/gi);
    if(!p.test(e.value)){
        alert(m);
        e.focus();
        return false;
    }
    return true;
}

function alertLess(e1, e2, m){
    var v1 = parseInt(e1.value, 10);
    var v2 = parseInt(e2.value, 10);
    
    if (v2 < v1){
        alert(m);
        e2.select();
        e2.focus();
        return false;
    }
    return true;
}

/* alert file extend name */
function alertFileExt(e, strExt, m){
    var index = e.value.lastIndexOf(".") + 1;
	var ext;
	if (index >= 0){
		ext = e.value.substring(index).toLowerCase();
		if (strExt.toLowerCase().indexOf(ext) < 0){
			alert(m);
			e.select();
            e.focus();
			return false;
		}
	}	
	return true;
}

/* check is match email */
function isEmail(vEMail)
{
	var regInvalid = new RegExp(/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/);
	var regValid = new RegExp(/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/);
	return (!regInvalid.test(vEMail)&&regValid.test(vEMail));
}

/* check is match url */
function isUrl(vUrl)
{
    var regValid = new RegExp(/^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/ig);
    return (regValid.test(vUrl));
}

/* check is date */
function isDate(date)
{
    var regValid = new RegExp(/^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))$/);
    return (regValid.test(date));
}

/* check is tel */
function isTel(tel)
{
    var regValidTel = new RegExp(/(^[0-9]{3,4}\-[0-9]{7,8}$)|(^[0-9]{7,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/);
    var regValidMobile = new RegExp(/^(130|131|132|133|134|135|136|137|138|139|158|159)\d{8}$/);
    if (regValidTel.test(tel) | regValidMobile.test(tel)){
        return true;
    }else{
        return false;
    }
}

/* check is fax */
function isFax(tel)
{
    var regValidFax = new RegExp(/(^[0-9]{3,4}\-[0-9]{7,8}$)|(^[0-9]{7,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/);
    if (regValidFax.test(tel)){
        return true;
    }else{
        return false;
    }
}

/* check is postalcode */
function isPostalcode(code)
{
    var regValidCode = new RegExp(/^[1-9]\d{5}$/);
    if (regValidCode.test(code)){
        return true;
    }else{
        return false;
    }
}

/* listing checkboxs */
function ChkboxAllClick(e){
    var chks = document.getElementsByName('chkbox');
    for(i=0; i<chks.length; i++){
        chks[i].checked = e.checked;
    }
}
function ChkboxSigleClick(){
    var chkall = document.getElementById('chkbox_all');
    chkall.checked = IsAllChecked();
    
    function IsAllChecked(){
        var isallChecked = true;
        var chks = document.getElementsByName('chkbox');
        for(i=0; i<chks.length; i++){
            if(!chks[i].checked){
                isallChecked = false;
                break;
            }
        }
        return isallChecked;
    }
}
function ChkBoxValues(){
    var names = '';
    var chks = document.getElementsByName('chkbox');
    for(i=0; i<chks.length; i++){
        if(chks[i].checked){
            names += ','+ chks[i].value;
        }
    }
    if(names.length == 0){
        alert('请选择要操作的记录！');
    }
    else{
		names = names.substr(1);
	}
    return names;
}

function  OnSubmitDel(){
	var chkval = ChkBoxValues();
	//alert(chkval);
	if(chkval.trim().length > 0){
		if(confirm('确认删除选择项吗？')){
			return true;
		}
	}
	
	return false;
}

/* rewrite url */
function EscapeUrl()
{
	return escape(window.location.pathname + window.location.search);
}
function EscapeHttpUrl()
{
	return window.location.pathname + window.location.search;
}
function ReWriteUrl(Url){
	window.location.href = Url +'&url='+ EscapeUrl();
}
function ReWriteHref(link){
	link.href = link.href +'&url='+ EscapeUrl();
}
function ReWriteFormAction(form){
	form.action = form.action +'&url='+ EscapeUrl();
}
function ResetFormMethod(f, u){
    f.method = 'GET';
    f.__VIEWSTATE.disabled = true;
    if(u){
        f.action = u;
    }
}

/* public action */
function DoActions(act){
    var chks = ChkBoxValues();
    var p = /.?del*$/gi;
    if(chks.length > 0){
        if(p.test(act)){
            Sure2Delete('Actions.aspx?ids='+ chks +'&act='+ act);
        }else{
            ReWriteUrl('Actions.aspx?ids='+ chks +'&act='+ act);
        }
    }
}

/* sure to delete */
function Sure2Delete(link){
    if( link.indexOf('?')<0 ){
        link += '?';
    }
	if(confirm('确定要删除选择的记录吗？')){
		setTimeout(function(){ window.location.href = link +'&url='+ EscapeUrl(); }, 10);
	}
}

/* create a Ajax object */
function CreateAjax(){
	var oXmlHttp = null;
	if(window.XMLHttpRequest){
		oXmlHttp = new XMLHttpRequest();
	}else{
		try{
			oXmlHttp = new ActiveXObject('MSXML2.XMLHTTP.4.0');
		}catch(e){
			try{
				oXmlHttp = new ActiveXObject('MSXML2.XMLHTTP.3.0');
			}catch(e){
				try{
					oXmlHttp = new ActiveXObject('MSXML2.XMLHTTP.2.6');
				}catch(e){
					try{
						oXmlHttp = new ActiveXObject('MSXML2.XMLHTTP');
					}catch(e){
						try{
							oXmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
						}catch(e){}
					}
				}
			}
		}
	}
	if(oXmlHttp == null){
		alert('The browser does not surport XMLHTTP.');
	}
	return oXmlHttp;
}

function CheckIsNull(o){
	return ("undefined" == typeof(o) || "unknown" == typeof(o) || null == o)
}

/* Ajax call a method or function of page(url) */
function AjaxCall(url, sync, request){
	var oXmlHttp = CreateAjax();
	var issync = !CheckIsNull(sync);
	var doc = CheckIsNull(request) ? '' : request;
	
	oXmlHttp.open('POST', url +'&token='+ token(), issync);
	oXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	oXmlHttp.send(doc);
	
	if(issync){
		//async call
		oXmlHttp.onreadystatechange = readyStateChanged;
	}else{
		//return result of sync call
		return oXmlHttp.responseText;
	}
	
	function token(){
		var hex = new Array('0','1','2','3','4','5','6','7','8', '9','a','b','c','d','e','f');
		var t = '';
		for (var i = 0; i<32; i++){
			t += hex[Math.floor(Math.random() * 16)];
		}
		return t.toUpperCase();
	}
	
	function readyStateChanged(){
		if (oXmlHttp.readyState == 4)
		{
			if (oXmlHttp.status != 0)
			{
				var result = oXmlHttp.responseText;
				//callback-function deal return result of async call
				sync(result);
				//cancel current's request
				oXmlHttp.abort();
			}
		}
	}
}

