
String.prototype.Trim = function(){return this.replace(/^\s+|\s+$/g,"");}

 if(typeof(HTMLElement)!="undefined" && !window.opera) { 
    HTMLElement.prototype.__defineGetter__("outerHTML",function() { 
        var a=this.attributes, str="<"+this.tagName, i=0;for(;i<a.length;i++) 
        if(a[i].specified) 
            str+=" "+a[i].name+'="'+a[i].value+'"'; 
        if(!this.canHaveChildren) 
            return str+" />"; 
        return str+">"+this.innerHTML+"</"+this.tagName+">"; 
    }); 
    
    HTMLElement.prototype.__defineSetter__("outerHTML",function(s) { 
        var r = this.ownerDocument.createRange(); 
        r.setStartBefore(this); 
        var df = r.createContextualFragment(s); 
        this.parentNode.replaceChild(df, this); 
        return s; 
    }); 
    
    HTMLElement.prototype.__defineGetter__("canHaveChildren",function() { 
        return !/^(area|base|basefont|col|frame|hr|img|br|input|isindex|link|meta|param)$/.test(this.tagName.toLowerCase()); 
    }); 
} 



function validS(obj){

	
	var validated = true; //globle element erro exsit;
	var v = true; //Single element erro exist;
	if( obj.getAttribute("isRequired")=="true" && obj.value=="" ){
		v=validated=false;
	} else if ( (obj.getAttribute("isRequired")=="true" && obj.value != "") || (obj.getAttribute("isRequired")==null && obj.value != "") ) {
		if(obj.getAttribute("isEmail")=="true"){
			if(!checkEmail(obj.value)){
				v=validated=false;
			}
		}	
	}
	if(v){
		removeMark(obj);
	}else{
		markField(obj);
	}
	return validated;
}

function validInput(tagId){
	var inputTag = document.getElementById(tagId);
	if (inputTag==null) return false;
	var validated = true; //globle element erro exsit;
	var v = true; //Single element erro exist;
	if( inputTag.getAttribute("isRequired")=="true" ){
		inputTag.value=trimlr(inputTag.id);
		if(inputTag.value=="")
			v=validated=false;
	} 
	/**/if( inputTag.getAttribute("minLen")!=null ){
		inputTag.value=trimlr(inputTag.id);
		if(bytes(inputTag.value)<inputTag.getAttribute("minLen"))
			v=validated=false;
	} 
	if( inputTag.getAttribute("isNumber")=="true" ){
		inputTag.value=trimlr(inputTag.id);
		if(!isNumeric(inputTag.value)){
			v=validated=false;
		}
	} 
	if( inputTag.getAttribute("isPass2")=="true" ){
		inputTag.value=trimlr(inputTag.id);
		if(inputTag.value==""){
			inputTag.setAttribute("err",inputTag.getAttribute("err1"));
			v=validated=false;
		}else if(inputTag.value!=G(inputTag.getAttribute("passId")).value){
			inputTag.setAttribute("err",inputTag.getAttribute("err2"));
			v=validated=false;
		}
	} 
	if( inputTag.getAttribute("isPNumber")=="true" ){
		inputTag.value=trimlr(inputTag.id);
		if(!isNumeric(inputTag.value)||inputTag.value<=0){
			v=validated=false;
		}
	}
	if( inputTag.getAttribute("isCode")=="true" ){
		inputTag.value=trimlr(inputTag.id);
		if(!isCode(inputTag.value)){
			v=validated=false;
		}
	} 
	if( inputTag.getAttribute("isDate")=="true" ){
		inputTag.value=trimlr(inputTag.id);
		if(!isDate(inputTag.value)){
			v=validated=false;
		}
	}
	if( inputTag.getAttribute("isUserName")=="true" ){
		inputTag.value=trimlr(inputTag.id);
		if(!chkUserName(inputTag.value)){
			v=validated=false;
		}
	}
	if( inputTag.getAttribute("isNickName")=="true" ){
		inputTag.value=trimlr(inputTag.id);
		if(!chkNickName(inputTag.value)){
			v=validated=false;
		}
	}
	if( inputTag.getAttribute("isTagStr")=="true" ){
		inputTag.value=trimlr(inputTag.id);
		if(!chkTagStr(inputTag.value)){
			v=validated=false;
		}
	}
	if( inputTag.getAttribute("isDomain")=="true" ){
		inputTag.value=trimlr(inputTag.id);
		if(!chkDomain(inputTag.value)){
			v=validated=false;
		}
	}
	if( inputTag.getAttribute("isEmail")=="true" ){
		inputTag.value=trimlr(inputTag.id);
		if(!checkEmail(inputTag.value)){
			v=validated=false;
		}
	}
	//alert(inputTag.name+";"+v);
	if(v){
		removeMark(inputTag);
	}else{
		markField(inputTag);
	}
	return v;
	
}
function validForm(obj){
	var inps = obj.getElementsByTagName("input");
	var validated = true; //globle element erro exsit;
	var v = true; //Single element erro exist;
	for(var i=0;i<inps.length;i++){
		v = true;	
		if( inps[i].getAttribute("isRequired")=="true" ){
			inps[i].value=trimlr(inps[i].id);
			if(inps[i].value=="")
				v=validated=false;
		} 
		/**/if( inps[i].getAttribute("minLen")!=null ){
			inps[i].value=trimlr(inps[i].id);
			if(bytes(inps[i].value)<inps[i].getAttribute("minLen"))
				v=validated=false;
		} 
		if( inps[i].getAttribute("isNumber")=="true" ){
			inps[i].value=trimlr(inps[i].id);
			if(!isNumeric(inps[i].value)){
				v=validated=false;
			}
		} 
		if( inps[i].getAttribute("isPass2")=="true" ){
			inps[i].value=trimlr(inps[i].id);
			if(inps[i].value==""){
				inps[i].setAttribute("err",inps[i].getAttribute("err1"));
				v=validated=false;
			}else if(inps[i].value!=G(inps[i].getAttribute("passId")).value){
				inps[i].setAttribute("err",inps[i].getAttribute("err2"));
				v=validated=false;
			}
		} 
		if( inps[i].getAttribute("isPNumber")=="true" ){
			inps[i].value=trimlr(inps[i].id);
			if(!isNumeric(inps[i].value)||inps[i].value<=0){
				v=validated=false;
			}
		}
		if( inps[i].getAttribute("isCode")=="true" ){
			inps[i].value=trimlr(inps[i].id);
			if(!isCode(inps[i].value)){
				v=validated=false;
			}
		} 
		if( inps[i].getAttribute("isDate")=="true" ){
			inps[i].value=trimlr(inps[i].id);
			if(!isDate(inps[i].value)){
				v=validated=false;
			}
		}
		if( inps[i].getAttribute("isUserName")=="true" ){
			inps[i].value=trimlr(inps[i].id);
			if(!chkUserName(inps[i].value)){
				v=validated=false;
			}
		}
		if( inps[i].getAttribute("isNickName")=="true" ){
			inps[i].value=trimlr(inps[i].id);
			if(!chkNickName(inps[i].value)){
				v=validated=false;
			}
		}
		if( inps[i].getAttribute("isTagStr")=="true" ){
			inps[i].value=trimlr(inps[i].id);
			if(!chkTagStr(inps[i].value)){
				v=validated=false;
			}
		}
		if( inps[i].getAttribute("isDomain")=="true" ){
			inps[i].value=trimlr(inps[i].id);
			if(!chkDomain(inps[i].value)){
				v=validated=false;
			}
		}
		if( inps[i].getAttribute("isEmail")=="true" ){
			inps[i].value=trimlr(inps[i].id);
			if(!checkEmail(inps[i].value)){
				v=validated=false;
			}
		}
		if( inps[i].getAttribute("checkFile")=="true" ){
			if(!chkExt(inps[i].value,inps[i].getAttribute("allowExt"))){
				v=validated=false;
			}
		} 
		//alert(inps[i].name+";"+v);
		if(v){
			removeMark(inps[i]);
		}else{
			markField(inps[i]);
		}		
	}
	var textareas = obj.getElementsByTagName("textarea");
	for(var i=0;i<textareas.length;i++){
		v = true;	
		if( textareas[i].getAttribute("isRequired")=="true" ){
			textareas[i].value=trimlr(textareas[i].id);
			if(textareas[i].value=="")
				v=validated=false;
		} 
		if( textareas[i].getAttribute("maxLen")!=null ){
			textareas[i].value=trimlr(textareas[i].id);
			if(bytes(textareas[i].value)>textareas[i].getAttribute("maxLen"))
				v=validated=false;
		} 
		if(v){
			removeMark(textareas[i]);
		}else{
			markField(textareas[i]);
		}		
	}
	
	
	var select = obj.getElementsByTagName("select");
	for(var i=0;i<select.length;i++){
		v = true;	
		if( select[i].getAttribute("isRequired")=="true" ){
			select[i].value=trimlr(select[i].id);
			if(select[i].value=="")
				v=validated=false;
		} 
		if( select[i].getAttribute("maxLen")!=null ){
			select[i].value=trimlr(select[i].id);
			if(bytes(select[i].value)>select[i].getAttribute("maxLen"))
				v=validated=false;
		} 
		if(v){
			removeMark(select[i]);
		}else{
			markField(select[i]);
		}		
	}
	
	return validated;
}
function removeMark(obj){
	if(document.getElementById(obj.id+"Err")!=null){
		document.getElementById(obj.id+"Err").style.display="none";
	}
}
function removeMarkB(objId){
	if(document.getElementById(objId+"Err")!=null){
		document.getElementById(objId+"Err").style.display="none";
	}
}
function markField(obj){
	if(document.getElementById(obj.id+"Err")==null){
		obj.outerHTML += " <div id=\""+obj.id+"Err\" class=error>"+obj.getAttribute("err")+"</div>";
	}else if(document.getElementById(obj.id+"Err")!=null){
		document.getElementById(obj.id+"Err").style.display = "";
		document.getElementById(obj.id+"Err").innerHTML = obj.getAttribute("err");
	}
}

function markFieldB(objId,cnt){
	if(document.getElementById(objId+"Err")!=null){
		
		var obj=document.getElementById(objId);
		if (obj!=null&&obj.getAttribute("errb")!=null){
			document.getElementById(objId+"Err").innerHTML = obj.getAttribute("errb");
		}else{
			document.getElementById(objId+"Err").innerHTML = cnt;
		}
		document.getElementById(objId+"Err").style.display = "";
	}
}
function sucField(objId,cnt){
	if(document.getElementById(objId+"Suc")!=null){
		
		var obj=document.getElementById(objId);
		if (obj!=null&&obj.getAttribute("suc")!=null){
			document.getElementById(objId+"Suc").innerHTML = obj.getAttribute("suc");
		}else{
			document.getElementById(objId+"Suc").innerHTML = cnt;
		}
		document.getElementById(objId+"Suc").style.display = "";
	}
}
function removeSuc(objId){
	if(document.getElementById(objId+"Suc")!=null){
		document.getElementById(objId+"Suc").style.display="none";
	}
}
// Validate Integer
function isNumeric(aString){
	var ret = /^\d+$/.test(aString);	
	return ret ;
}
// Validate Integer
function chkExt(strFileName,allowExt){
	var charindex = strFileName.lastIndexOf(".");
	if (charindex==-1) {
		return false;
	}
    var extentName = strFileName.substring(charindex+1,strFileName.length);
    if (extentName==''){
		return false;
	}
  	extentName=extentName.toLowerCase();
  	return (allowExt.indexOf(extentName)!=-1)
}


//char or number
function isCode(aString){
	var ret = /^\w+$/.test(aString);	
	return ret ;
}
//is date
function isDate(aString){
	//alert(aString);
	var ret =/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,2}$/.test(aString);	
	//var ret = /\[0-9]{4}-[0-9]{2}-[0-9]{2}/.test(aString);	
	return ret ;
}

// Validate Email Format
function checkEmail(aString)
{
    var searchStr = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/
    return (searchStr.test(aString));
}

// (数字，字母和下划线)
function chkUserName(str){
	if(typeof(str)!='string'){
		str = str.value;
	}
	for(var i = 0; i < str.length; i++){		
		if (!str.substr(i,1).match(/^\w+$/ig)){
			return false;
		}
	}
	return true;
}
// (空格 数字，字母和下划线)
function chkTagStr(str){
	if(typeof(str)!='string'){
		str = str.value;
	}
	for(var i = 0; i < str.length; i++){		
		if (str.charCodeAt(i) < 127 && !str.substr(i,1).match(/^[\w|\s]+$/ig)){
			return false;
		}
	}
	return true;
}
// (汉字，数字，字母和下划线)
function chkNickName(str){
	if (typeof (str) != "string") {
		str = str.value;
	}
	for (var i = 0; i < str.length; i++) {
		if (str.charCodeAt(i) < 127 && !str.substr(i, 1).match(/^\w+$/ig)) {
			return false;
		}
	}
	return true;
	
}
//仅限字母、数字和下划线
function chkDomain(str){
	if(typeof(str)!='string'){
		str = str.value;
	}
	for(var i = 0; i < str.length; i++){
		if (!str.substr(i,1).match(/^\w+$/ig)){
			return false;
		}
	}
	return true;
}

function bytes(str){
	if(typeof(str)!='string'){
		str = str.value;
	}
	var len = 0;
	for(var i = 0; i < str.length; i++){
		if(str.charCodeAt(i) > 127){
			len++;
		}
		len++;
	}
	return len;
}

function checkTextarea(obj,dsc){ 
   	var mx=obj.getAttribute("maxLen");
   	var cur=bytes(obj);
   	var dsc=G(dsc);
   	if (cur<=mx){
   		dsc.innerHTML='您还可以输入'+((mx-cur)/2)+'个汉字'
   		dsc.style.display='';
   	}else{
   		obj.setAttribute("err",'已经超出'+(mx/2)+'个汉字，多了'+((cur-mx)/2)+'个');
   		dsc.style.display='none';
   	} 
   	//alert(obj.offsetParent.id);
   	validForm(obj.offsetParent);         	
}

function go(p){
   queryUser(p)
}


function CheckTitle(){
  G('title').value=G('title').value.Trim();
  if( G('title').value.Trim()=='' ){
 	 
 	 location.hash='#top';
  }
  return true;
}
