function HelpCmd(){
  this.helpkey = "help";
  this.run = function(cmd,newwin) {
   service = "help"
   if(cmd){
	  cmd = cmd.toLowerCase()
	  var func = functions[cmd]
	  if(func)
	     service += "/"+func.helpcmd
	  else if(cmd == "more")
	     service += "/"+cmd
	  else
	     service += "/notfound"
	} 
   serviceCall(service,{cmd:cmd},function(result){
							outprint(result);		   
									   });
  }
}


function JsqCmd(){
  this.helpcmd = "calc";
  this.validfuncs = {"abs":true,"sin":true,"asin":true,"cos":true,"acos":true,"tan":true,"atan":true,"exp":true,"log":true,"pow":true,"sqrt":true,"PI":true,"E":true};
              
  this.run = function(cmd) {
	 if(cmd){
	   //保证变量前有空格，便于转为_var
	   cmd = " "+cmd;
	   var arr = cmd.match(/[A-Za-z]+\s*\(/g);
	   if(arr && arr.length>0)
	    for(var i=0;i<arr.length;i++){
		   var funname = arr[i].match(/[A-Za-z]+/)[0];
	       if( !this.validfuncs[funname] ) return "<?php echo SYS_11;?>"+funname;
		}
	   
	   var expr = cmd.replace(/([A-Za-z]+)/g,"$$$1");
	   //expr = expr.replace(/(\W*)PI(\W*)/g,"$1 Math.PI $2");
	   //expr = expr.replace(/(\W*)E(\W*)/g,"$1 Math.E $2");
	   //expr = expr.replace(/[^(Math\.)]([a-z]+)/g,"$1_$2");
	   try{
         //return expr + "=" + eval(expr);
		 return  eval(expr);
	   }catch(e){
		 return cmd+"<?php echo SYS_12;?>"  
	   }
	 }	 else {
		return this.help;
	}
  }

}

var $PI = Math.PI;
var $E  = Math.E;
function $abs(x){  return Math.abs(x); }
function $sin(x){  return Math.sin(x); }
function $cos(x){  return Math.cos(x); }
function $tan(x){  return Math.tan(x); }
function $asin(x){  return Math.asin(x); }
function $acos(x){  return Math.acos(x); }
function $atan(x){  return Math.atan(x); }
function $exp(x){  return Math.exp(x); }
function $log(x){  return Math.log(x); }
function $pow(x,y){  return Math.pow(x,y); }
function $sqrt(x){  return Math.sqrt(x); }

function ClearCmd() {
  this.helpcmd = "cls";
  this.run = function() {
        cmdout = null;
        output.innerHTML = "";
		bottom0.innerHTML = "";
 }
}


