func: function addAdminOwners(address usrAddr,
  					  string userName,
  					  string descInfo)public 
  	{
  		require(msg.sender==tx.origin);
  		needToAddAdminInfo memory info;
  		
  		if(!adminOwners[msg.sender].isValid && owner!=msg.sender){
  			revert();
  			return;
  		}
  		
  		if(usrAddr==owner){
  			revert();
  			return;
  		}
  		
  		
  		if(adminOwners[usrAddr].isValid){
  			revert();
  			return;
  		}
  		
  		if(usrAddr==msg.sender){
  			revert();
  			return;
  		}
  		
  		if(adminUsrCount<2){
  			if(msg.sender!=owner){
  				revert();
  				return;
  			}
  			adminOwners[usrAddr].isValid=true;
  			adminOwners[usrAddr].userName=userName;
  			adminOwners[usrAddr].descInfo=descInfo;
  			adminUsrCount++;
  			if(adminUsrCount>=2) isAdminOwnersValid=true;
  			emit adminUsrChange(usrAddr,msg.sender,true);
  			return;
  		}
  		
  		if(msg.sender==owner){
  			
  			if(needToAddAdminInfoList[usrAddr].magic==123456789){
  				revert();
  				return;
  			}
  			
  			info.magic=123456789;
  			info.postedCount=0;
  			needToAddAdminInfoList[usrAddr]=info;
  			return;
  			
  		}
  		else if(adminOwners[msg.sender].isValid)
  		{
  			
  			if(needToAddAdminInfoList[usrAddr].magic!=123456789){
  				revert();
  				return;
  			}
  			
  			if(needToAddAdminInfoList[usrAddr].postedPeople[msg.sender]==123456789){
  				revert();
  				return;
  			}
  			needToAddAdminInfoList[usrAddr].postedCount++;
  			needToAddAdminInfoList[usrAddr].postedPeople[msg.sender]=123456789;
  			if(adminUsrCount>=2 && 
  			   needToAddAdminInfoList[usrAddr].postedCount>adminUsrCount/2){
  				adminOwners[usrAddr].userName=userName;
  				adminOwners[usrAddr].descInfo=descInfo;
  				adminOwners[usrAddr].isValid=true;
  				needToAddAdminInfoList[usrAddr]=info;
  				adminUsrCount++;
  				emit adminUsrChange(usrAddr,msg.sender,true);
  				return;
  			}
  			
  		}else{
  			return revert();
  		}		
  	}