var Lifyc = {    
	isLog: true,
	//log
	log: function(s){
	    //alert(s);
	},
	handle:function(){},
	//is null
	isNull: function(v){
		if(v&&v!=undefined&&v!=null)return false;
			return true;
	},
	byteLength:function(str){
		var x=0;
		for (i=0; i<str.length; i++) {
			if(str.charCodeAt(i) > 128){
				x=x+2;
			}else{
				x=x+1;
			}
		}
		return x;
	},
	isNum:function(s){
		var re = /^[0-9]+$/;
		return re.test(s);
	},
	isFloat:function(s){
		if (Lifyc.isNum(s)) return true;
		var re = /^[+|-]{0,1}\d*\.\d+$/;
		return re.test(s);
	},
	//Default sample loading message shuw function. Overrride it if you like.
	showLoadingMessage: function(msg){
        var v_msg = "Loading...";
        if(msg) v_msg = msg;
    
        var scrollY = 0;
        try{
            if (document.all)
                scrollY = document.body.scrollTop;
            else
                scrollY = window.pageYOffset;
        } catch(e) {}
    
        var div = document.getElementById("XXXX_loading_div");
        if (div == null) {
            div = document.createElement("DIV");
    		//div.style.background-position="background-position:center;background-repeat:no-repeat"
            document.body.appendChild(div);
            div.id = "XXXX_loading_div";    
            div.innerHTML = "<center>Loading ... </center>";
			div.innerHTML = "<br/><br/><br/><center><img src=\"../theme/img/loading_move.gif\"/></center>";
            div.style.position = "absolute";
            div.style.zIndex = 100;
            div.style.border = "0 solid black";
            div.style.color = "red";
            div.style.backgroundColor = "#FFFBF0";
            div.style.filter="Alpha(opacity:20)";
            div.style.width = document.body.clientWidth;
            div.style.height =document.body.clientHeight;
            div.style.top = 0;
            div.style.left = 0;
            div.style.fontFamily = "Arial, Helvetica, sans-serif";
            div.style.fontWeight = "bolder";
            div.style.fontSize = "48px";
        }
        div.style.top = scrollY;
        div.style.display = "";
	},
	
	//Default sample loading message hide function. Overrride it if you like.
	hideLoadingMessage: function (){
    	var div = document.getElementById("XXXX_loading_div");
    	if (div!=null)
        	div.style.display = "none";
	},
	//change height
	_changeH:function(str){
		
	   var obj = document.getElementById("__RENTING_TIP");
	   
	   if(str=="up"){ 
	        if (parseInt(obj.style.height)>350){
	      	   clearInterval(Lifyc.handle);
			   $("MSG_DIV").style.display = '';
	        }else
	           obj.style.height=(parseInt(obj.style.height)+8).toString()+"px";
	  }
	  if(str=="down"){
	       if (parseInt(obj.style.height)<8){  
			  clearInterval(Lifyc.handle);
		      obj.style.display="none";
		   }else {   
	          obj.style.height=(parseInt(obj.style.height)-8).toString()+"px";
	          obj.style.width=(parseInt(obj.style.width)-8).toString()+"px";
			  $("MSG_DIV").style.display = 'none';
		   }
	  }
	}
}
var $L = Lifyc.log;
var $iN = Lifyc.isNull;
//create meta Class
Lifyc.Meta = Class.create();
//extends Enumerable object 
Object.extend(Object.extend(Lifyc.Meta.prototype, Enumerable),{
  //recording meta path which would be updated with ajax
  //responders: [],
  //request's parameter
  //parameters: [],
  //send url
  //url: "",
  //constractor
  initialize: function(url,param) {
      this.responders = [];
      this.parameters = [];
      this.url = url||"";      
      this.param = param || "";
      this.asynchronous = false
  },
  setAsync:function(async){
  	this.asynchronous = async;
  },
  request: function(onloadfun){   	  
	  //create ajax request	  
      var ajaxReq = new Ajax.Request(
                    this.url,{  
		                method:'post',
                        parameters:this.param,                       
                        asynchronous: this.asynchronous,
                        //requestHeaders:['Content-Type','text/plain;charset=UTF-8'],   
                        onLoading: this.onLoading.bind(this),
                        onComplete: this.onComplete.bind(this)
                    });
      if(!this.asynchronous){
		  this.onLoading();
		  this.onComplete(ajaxReq.transport);
	  }
	 
  },
  //onloading
  onLoading: function(){
      //Lifyc.showLoadingMessage();
	  
  },
  //request complete
  onComplete: function(transport){
      try{
          var context = transport.responseText;  
          if(context.indexOf("SessionTimeOutError")!=-1){
          		
          		 var context = document.forms[0].action.split("/")[1];
          		window.location.href="/"+context+"/register/regIndex.do";
          		return;
          }    
          /*if(confirm("wzhjtes t : you has time out are you going to login?")){
          		window.location.href="/test/register/regIndex.do"
          }*/
		  this.each(function(responder,index){
			  responder.operator(context);
          }.bind(this));
      }catch(e){
          alert("[message]:\n     " + e.message +"\n[number]:\n     "+(e.number&0xFFFF));
      }finally{
		 Lifyc.hideLoadingMessage();
	  }
  },
  addCallBackFun : function(fun){
      this.responders.push(fun);
  },
  //implements Enumerable's interface
  _each: function(iterator) {
    this.responders._each(iterator);
  }
});
var popwin = Class.create();
Object.extend(Object.extend(popwin.prototype,{
	initialize: function(url) {
     
    },
	updateMsg:function(innerMsg){
		$("MSG_DIV").style.width='300px';
		$("MSG_DIV").style.height='350px';
		$("MSG_DIV").innerHTML = innerMsg;
	},
	//change height of __RENTING_TIP
   show:function(str,innerMsg,lefta,topa){
   	   
   	   var curelement = $(str) ;
       var obj = document.getElementById("__RENTING_TIP");
	   if (obj == null) {
	        obj = document.createElement("DIV");
			//div.style.background-position="background-position:center;background-repeat:no-repeat"
	        document.body.appendChild(obj);
	        obj.id = "__RENTING_TIP";			
			obj.innerHTML = "<div align=\"right\"><br><a href=\"javascript:void(0)\" valing='right'"
			                      +" onclick=\"showDetail('"+str+"')\"><font size=\"2\">X</font></a>&nbsp;</div>";
			obj.innerHTML += "<DIV id='MSG_DIV' STYLE='width:300;display:none'><br>"+innerMsg+"</DIV>";
	        obj.style.position = "absolute";
	        obj.style.zIndex = 100;
	        obj.style.border = "0 solid black";
	        obj.style.color = "black";
	        obj.style.backgroundColor = "#A2CBDB";
	        //obj.style.filter="Alpha(opacity:20)";
	        obj.style.width = 300;
	        obj.style.height =0;
			obj.style.display = 'none';
	   }       
       if(!parseInt(obj.style.height) == 0){	   	     	   
	       Lifyc.handle = setInterval("Lifyc._changeH('down')",2);
	       return ;
       }
	   var top = topa;
	   if(!topa)
       		top = event.clientY;
	   var left = lefta;
	   if(!lefta)
       		left = event.clientY;
            
       obj.style.top = top +"px";
       obj.style.left = parseInt(left)+parseInt(160) + "px";
       if (parseInt(obj.style.height)==0){ 
	       
    	   obj.style.display="block";              
	       Lifyc.handle = setInterval("Lifyc._changeH('up')",2);
	  }
   }
}));
/*
*author:wx
*1.KeyCounter.init(max,object,desobj) 
*  max:maxlength 
*  object:this 
*  desobjc:Demonstrates digital the object (for example: Div) 
*2.KeyCounter.operater()
*  errorinfo:
*
*/
var KeyCounter={
 	sum:"",
	SUM:"",
	OBJECT:"",
	obj:"",
	desobj:"",
	DESOBJ:"",
	ERRORINFO:"",
	eventc:null,
	//flag:"1",
	operater:function(evt){
		this.eventc=evt;
		var currentsum=this.desobj.innerHTML;
		var key=this.differetBrower();
		var ctrlkey=this.differentBrowerOthers();
		//this.flag="0";
		if(currentsum>=0){
			if(ctrlkey){
				if(key==86){//ctrl + V
					var sAgent = navigator.userAgent.toLowerCase();
					if(sAgent.indexOf("firefox")!=-1){
							var temsum=this.SUM-this.betterLength(this.obj.value);
							if(temsum<0){
									this.error(this.ERRORINFO);
									if(!this.isChinese()){
										this.obj.value=this.obj.value.substring(0,this.parseChineseSubst(this.OBJECT.value,this.SUM));	
									}else{
										this.obj.value=this.obj.value.substring(0,this.betterLength(this.obj.value)+temsum);
									}
									
									this.sum=0;
									this.desobj.innerHTML=0;
							}else{
							this.sum=temsum;
							this.desobj.innerHTML=temsum;
							}
						
					}
				return;
				}
			}else{
				
				if(key>=65&&key<=90||key==32||key>=187&&key<=192||key>=48&&key<=57||key>=96&&key<=111||key>=219&&key<=222){
					if(currentsum>0){
							var temsum=this.SUM-this.betterLength(this.obj.value);
							if(temsum<0){
								this.error(this.ERRORINFO);
								if(!this.isChinese()){
										this.obj.value=this.obj.value.substring(0,this.parseChineseSubst(this.OBJECT.value,this.SUM));	
								}else{
									this.obj.value=this.obj.value.substring(0,this.betterLength(this.obj.value)+temsum);	
								}
								this.sum=this.SUM-this.betterLength(this.obj.value);
								this.desobj.innerHTML=this.sum;
							}else{
							this.sum=temsum;
							this.desobj.innerHTML=temsum;
							}
					}else{
							var temsum=this.SUM-this.betterLength(this.obj.value);
							if(temsum<0){
									this.error(this.ERRORINFO);
									if(!this.isChinese()){
										this.obj.value=this.obj.value.substring(0,this.parseChineseSubst(this.OBJECT.value,this.SUM));	
									}else{
										this.obj.value=this.obj.value.substring(0,this.betterLength(this.obj.value)+temsum);
									}
									
									this.sum=0;
									this.desobj.innerHTML=0;
							}else{
							this.sum=temsum;
							this.desobj.innerHTML=temsum;
							}
					}
				}else{
					if(key!=13){
						if(currentsum!=0){
							var temsum=this.SUM-this.betterLength(this.obj.value);
							this.sum=temsum;
							this.desobj.innerHTML=temsum;
						}else{
							this.sum=this.SUM;
							var temsum=this.SUM-this.betterLength(this.obj.value);
							this.desobj.innerHTML=temsum;
						}
					}
				}
			}	
		}else{
			//this.block();
			this.desobj.innerHTML=0;
			this.obj.value=this.obj.value.substring(0,this.SUM);
		}
	},
	init:function(max,object,desobj){
		//modify by sunwt 2007-11-09
		if(this.obj!=object){
			this.obj = object;
			this.sum = '';
		}
		//end
		if(this.sum==''){
			this.sum=max;
			this.SUM=max;
			this.OBJECT=object;
			this.obj=object;
			this.desobj=desobj;
		}else if(this.OBJECT!=object){
			this.OBJECT=object;
			if(this.betterLength(object.value)>=2){
			this.sum=this.betterLength(object.value);	
			}else{
			this.sum=max;
			}
			this.SUM=max;
			this.OBJECT=object;
			this.obj=object;
			this.desobj=desobj;
			this.DESOBJ=desobj;
			desobj.innerHTML=this.betterLength(object.value);
			
		}
	},
	differetBrower:function(evt){
			var sAgent = navigator.userAgent.toLowerCase();
			if(sAgent.indexOf("safari")!=-1){
				return event.keyCode;
			}else if(sAgent.indexOf("firefox")!=-1){
				return this.eventc.keyCode;
			}else{
				return window.event.keyCode;
			}
	},
	differentBrowerOthers:function(){
			var sAgent = navigator.userAgent.toLowerCase();
			if(sAgent.indexOf("safari")!=-1){
				return event.ctrlKey||event.metaKey;
			}else if(sAgent.indexOf("firefox")!=-1){
				return this.eventc.ctrlKey;
			}else {
				return window.event.ctrlKey;
			}
	},
	block:function(){
		if(this.desobj.innerHTML<=0){
			var key=this.differetBrower();
			if(key!=8&&key!=46){
				var sAgent = navigator.userAgent.toLowerCase();
				if(sAgent.indexOf("safari")!=-1){
					event.returnValue = false;
				} 
				else {
					window.event.returnValue = false;
				}
			}
		}
	},
	
	painter:function(arrayid,arrayinfo){
			for(var i=0;i<arrayid.length;i++){
					var num=document.getElementById(arrayinfo[i]).innerHTML-this.betterLength(arrayid[i].value);
					document.getElementById(arrayinfo[i]).innerHTML=num;
			}
	},
	betterLength:function (paraobj){
		if(paraobj.length == 0){
			return 0;
		}
		var x=0;
		for (var i=0; i<paraobj.length; i++) {
			if(paraobj.charCodeAt(i)> 128){
				x=x+2;
			}else{
				x=x+1;
			}
		}
		return x;
	},
	error:function(errorinfo){
		var no="";
		if(errorinfo!=null){
			no=1;
		}
		switch(no){
			case 1:alert(errorinfo);
			break;
			default:alert('error !');
		};
	},
	errorinit:function (error){
		this.ERRORINFO=error;
	},
	isChinese:function (){
		for(var h=0;h<this.OBJECT.value.length;h++){
			if(this.OBJECT.value.charCodeAt(h)> 128){
				return false;
			}
		}
		return true;
	},
	parseChineseSubst:function (objval,sumval){
		var chinese_counter=0;
		var xx=0;
		var yy=0;
		for(var iq=0;iq<objval.length;iq++){
			if(objval.charCodeAt(iq)> 128){
				xx=xx+2;
				chinese_counter++;
				if(xx<=sumval){
				yy++;	
				}else{
					if(xx>sumval){
						if((xx-sumval)%2!=0){
							yy--;
							break;
						}else{
							break;	
						}
					}
				}
			}else{
				xx=xx+1;
				if(xx<=sumval){
					yy++;
				}else{
					break;
				}
			}
		}
		return yy;
	},
	 firePaste:function(arrayid,arrayinfo,arraynum,mm){
	     for(var i=0;i<arrayid.length;i++){ 
		      arrayid[i].onpaste=this.firePasteWx;
		      arrayid[i].fireId=arrayinfo[i];
		      arrayid[i].fireNu=arraynum[i];
			  if(mm==undefined){
			 	 arrayid[i].selfObj=arrayid[i].name;
				 arrayid[i].idOrName="name";	
			  }else{
			  	 arrayid[i].selfObj=arrayid[i].id;	
				 arrayid[i].idOrName="id";
			  }
    	 }
   },
  firePasteWx:function (){
  	
   var sAgent = navigator.userAgent.toLowerCase();
   var y="";
   var m="";
   var mcon="";
   var ycon="";
    if(sAgent.indexOf("safari")!=-1){
      mcon=window.getSelection().toString();
      ycon=event.clipboardData.getData("Text");
      m=KeyCounter.betterLength(mcon);//have chinese
      y=KeyCounter.betterLength(ycon);//have chinese
    }else{
       mcon=document.selection.createRange().text;
       ycon=window.clipboardData.getData("Text");
	   m=KeyCounter.betterLength(mcon);//have chinese
       y=KeyCounter.betterLength(ycon);//have chinese
    }
    var z=KeyCounter.betterLength(event.srcElement.value);//have chinese
    var result=event.srcElement.fireNu-z+m-y;
    var strr="";
    var desop=document.getElementById(event.srcElement.fireId);
    if(result<0){
		 
     //dump info
     if(event.srcElement.tagName!="INPUT"){
	 KeyCounter.error(KeyCounter.ERRORINFO);
	 }
	  var arg1=event.srcElement.selfObj;
	  var arg2=event.srcElement.fireId;
	  KeyCounter.arg1=arg1;
	  KeyCounter.arg2=arg2;
	  KeyCounter.arg3=event.srcElement.fireNu;
	  KeyCounter.arg4=event.srcElement.idOrName;
	  setTimeout("KeyCounter.cuter()",100);
    }
    desop.innerHTML=result;
  },
  cuter:function (){
  	var str="";
  	if(KeyCounter.arg4=="name"){
		str=document.getElementsByName(KeyCounter.arg1)[0].value;
		document.getElementsByName(KeyCounter.arg1)[0].value=str.substring(0,KeyCounter.parseChineseSubst(str,KeyCounter.arg3));//chinese
		document.getElementById(KeyCounter.arg2).innerHTML=KeyCounter.arg3-KeyCounter.betterLength(document.getElementsByName(KeyCounter.arg1)[0].value);//chinese
	}else if(KeyCounter.arg4=="id"){
		str=document.getElementById(KeyCounter.arg1).value;
		document.getElementById(KeyCounter.arg1).value=str.substring(0,KeyCounter.parseChineseSubst(str,KeyCounter.arg3));//chinese
		document.getElementById(KeyCounter.arg2).innerHTML=KeyCounter.arg3-KeyCounter.betterLength(document.getElementById(KeyCounter.arg1).value);//chinese
	}
  }

	
	
}

//@panhongcen
function checkEmail(email){	

    if(email==null)return true;
	var splitted = email.match("^(.+)@(.+)$");
	if(splitted == null) return false;
	if(splitted[1] != null )
	{
	  var regexp_user=/^\"?[\w-_\.]*\"?$/;
	  if(splitted[1].match(regexp_user) == null) return false;
	}
	if(splitted[2] != null)
	{
	  var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
	  if(splitted[2].match(regexp_domain) == null) 
	  {
	    var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
	    if(splitted[2].match(regexp_ip) == null) return false;
	  }// if
	  return true;
	}
	return false;
}

//@wangzhongjie
//@param msgType message type ie:error,success
//@param msg content of message
//@param className style of messageBox
var handler = null;
var width = 230;
var height = 50;
var __MSG = null;
function showMsg(msgType,msg,posobj,wid,hei){
       var div = document.getElementById("XXXX_msg_div");       
       if(wid!=null)width=wid;
       if(hei!=null)height=hei; 
       if (div == null||parseInt(div.style.height)<2) {
            div = document.createElement("DIV");
    		div.style.backgroundRepeat="no-repeat"
            document.body.appendChild(div);
            div.id = "XXXX_msg_div"; 
            div.align="center"  
            div.valign="center"          
            if(msgType=="error"){            	
            	div.style.color = "#FF0000";
            	div.style.backgroundColor="#FFDBDB" 
            	div.style.border="1 solid #FF0000"            	
            }else if(msgType=="success"){
            	//div.style.color = "#00FF48";
				div.style.color = "#009328";
            	div.style.backgroundColor="#D2FFDF" 
            	div.style.border="1 solid #00FF48"  
            }else{//waring
            	div.style.color = "#00B4FE";
            	div.style.backgroundColor="#E3F7FF" 
            	div.style.border="1 solid #00B4FE"  
            }        
            __MSG = ''+msg;
            div.style.position = "absolute";
            div.style.zIndex = 100; 
            div.style.width="1px";
            div.style.height="1px";            
            div.style.fontFamily = "Arial, Helvetica, sans-serif";
            div.style.fontWeight = "bolder";
            div.style.fontSize = "12px";            
        } 
        var pos = YAHOO.util.Dom.getXY(posobj);        
        pos[0] = pos[0]+15	
        pos[1] = pos[1]-25	       
        YAHOO.util.Dom.setXY("XXXX_msg_div", pos);        
        div.style.display = ""; 
        if(!parseInt(div.style.height) == 0){    	   	     	   
	       handler = setInterval("openMsgBox()",10);   
	       return ;
       }
}
//wangzhongjie shwo msgbox
function openMsgBox(){ 
	var obj = document.getElementById("XXXX_msg_div");
	if(!obj){  
		clearInterval(handler);
		return ;
	}	
	if (parseInt(obj.style.width)>width){
		obj.innerHTML = "<center>"+__MSG+"</center>";
		obj.style.height= "auto";
   	    clearInterval(handler);  		
    }else{
    	if(parseInt(obj.style.height)<height){
        	//obj.style.height=(parseInt(obj.style.height)+20).toString()+"px"; 
        }
        if(parseInt(obj.style.width)<width)       
        	obj.style.width=(parseInt(obj.style.width)+20).toString()+"px"
    }
}

/*
 * @author wangzhongjie 
 * @param id
 * @param type 操作类型
 * @param coins 此项操作需要的coins
 */
function showOperatorTip(id,type,coins,currCoins,remarks){
	if(parseInt(coins)==0)
		return true;
	var msg = "";
	if(type=="Offline"){
		msg = "You are going to offline this content ,do you want to continue?"
	}else if(type=="delete"){
		msg = "You are going to delete this content ,do you want to continue?"
	}else{
		msg = "  \n\n Operation Confirmation Opreation: \n\n"+
				"\40"+type+" Contents Cost: "+coins+" \n\n"+
				"\40\40\40\40\40\40\40Coins holding now: "+currCoins+" Coins \n\n"+
				"\40\40\40\40\40after the operation: "+(currCoins*1-coins*1)+"\n\n"+
				" Comments: "+remarks+
				"\n\n\n";
	}			
	if(!confirm(msg)){
		return false;
	}
	return true;
}
//@wangzhongjie 
//@param handleYes yes按钮的回调函数
//@param handleNo no按钮的回调函数
//@param msg 提示的消息
//@param head 头消息
//@param width 宽度 
function yahooMsg(handleYes,handleNo,msg,head,width){
	if(!width)
		width = "370px";
	if(!head)
		head = "<font size='3' color='#88888888'>Operation Confirm</font>";
	YAHOO.example.container.simpledialog1 = 
	new YAHOO.widget.SimpleDialog("simpledialog1", 
		{ width: width,																			  
		  fixedcenter: true,																			   
		  visible: false,																			   
		  draggable: true,																			   
		  close: true,
		  modal: true,																			   
		  text: msg,	  																		   
		  icon: YAHOO.widget.SimpleDialog.ICON_HELP,
		  constraintoviewport: true,																			   
		  buttons: [ { text:" Yes ", handler:handleYes, isDefault:true },
					{ text:" No ",  handler:handleNo } ]																			
		} );	
		YAHOO.example.container.simpledialog1.setHeader(head);
		// Render the Dialog	
		YAHOO.example.container.simpledialog1.render("container");
		YAHOO.example.container.simpledialog1.show()
}

String.prototype.ltrim = function(){
	return this.replace(/^\s*/g,"");
}
String.prototype.rtrim = function(){
	return this.replace(/\s*$/g,"");
}
String.prototype.trim = function(){
	return this.replace(/(^\s*)|(\s*$)/g, "");
}
