/**
*Monitor js.
*/
var DEFAULT_MONITOR_SEMANTIC_SEED=0;
var Monitor={
	/**
	*ESC:27
	*/
	config:{
		semanticSeed:0,
		defaultSearchKeyTip:'快速搜索:/URL/主IP/辅IP/网管IP/序列号/资产编号/',
		tipWinId:'semantic-query-win'
	},
	win:null,
semantic:function(id){
  var html=new StringBuffer();
  DEFAULT_MONITOR_SEMANTIC_SEED=0;
  var maxStep=9;
  //background:#FFFFCE url(/images/icons/zoom.png) no-repeat right center;
  //html.append('<input type="text" name="key" id="search-box" autocomplete="off"  style="border:none;width:148px;height:24px;font-family:Courier;vertical-align:middle;border-left:1px solid #99BBE8;border-right:1px solid #99BBE8;color:gray;border-top:solid 1px #99BBE8;border-bottom:solid 1px #99BBE8;margin:2 5 2 5;background:#FFFFCE url(/images/icons/zoom.png) no-repeat right center;" value="快速搜索:/URL/IP"/>');
  html.append('<input type="text" name="key" id="search-box" autocomplete="off"  style="border:none;width:328px;height:24px;font-family:Courier;vertical-align:middle;border-left:1px solid #99BBE8;border-right:0px solid #99BBE8;color:gray;border-top:solid 1px #99BBE8;border-bottom:solid 1px #99BBE8;margin:2 0 2 5;" value="快速搜索:/URL/主IP/辅IP/网管IP/序列号/资产编号/"/>');
  $('#'+id).append(html.toString());
  $('#'+id).parent().append('<input type="button" id="search-box-button"  style="background:#FFFFCE url(/images/icons/zoom.png) no-repeat center;width:24px;height:24px;border:1px solid #99BBE8;margin:2 5 2 0;"/>');
//  $(document).keyup(function(){
//  	alert('test');
//  });
  listenKeybord();
  function listenKeybord(){
  	$(document).keyup(function(e){
	 if(DEFAULT_MONITOR_SEMANTIC_SEED>maxStep){
       DEFAULT_MONITOR_SEMANTIC_SEED=0;
	 }
	 if(DEFAULT_MONITOR_SEMANTIC_SEED<0){
        DEFAULT_MONITOR_SEMANTIC_SEED=maxStep;
	 }
    switch(e.keyCode){
		//向下
         case 40:
         DEFAULT_MONITOR_SEMANTIC_SEED=DEFAULT_MONITOR_SEMANTIC_SEED+1;
		 changeTabFocus();
		  break;
		 //向上
		 case 38:
	        DEFAULT_MONITOR_SEMANTIC_SEED=DEFAULT_MONITOR_SEMANTIC_SEED-1;
	        if(DEFAULT_MONITOR_SEMANTIC_SEED===0){
	        	DEFAULT_MONITOR_SEMANTIC_SEED=maxStep+1;
	        }
	        if(DEFAULT_MONITOR_SEMANTIC_SEED===-1){
	        	DEFAULT_MONITOR_SEMANTIC_SEED=maxStep;
	        }
		   changeTabFocus();
		    break;
		 //向左
		 case 37:
          //changeTabFocus();
          //回车
           break;
		 case 13:
		   	 redirect2SearchResultPage();
		   	 break;
		   	 //数字键盘上的回车
		 case 108:
		    redirect2SearchResultPage();
		  break;
		  //ESC
		  case 27:
		   {
		   destroySemanticQueryWin();
		   initDefaultSearcbBox();
		   break;
		   }
		 default:
//		 onMouseClick();
		 //alert('default');
	}
  });
  }
  /**
   * 当鼠标发出点击动作时,判断鼠标点击动作所在的区域坐标
   */
  function onMouseClick(){
  	if($('#semantic-query-win').length>0){
  	 
  	 $('#semantic-query-win').mouseleave(function(e){
//  	 	 alert(1);
 destroySemanticQueryWin();
  		      initSearchBox();
  		      return;
//  	 	var iframeDoc=document.getElementById('content-iframe').contentWindow.document;
//  	    $(document.getElementById('content-iframe').contentWindow.document).mousedown(function(el){
//  	  	   var offset=$(el).offset();
//           if($('#semantic-query-win').length>0){
//           	var x=el.clientX+iframeDoc.body.scrollLeft-iframeDoc.body.clientLeft;
//           	var y=el.clientY+iframeDoc.body.scrollTop-iframeDoc.body.clientTop;
//            var top=y;
//            var left=x;
//  	        var winOffset=$('#semantic-query-win').offset();
//  	        var winHeight=$('#semantic-query-win').height();
//  	        var winTop=winOffset.top-25;
//  	        var winBottom=winOffset.top+winHeight;
//  	         var winLeft=winOffset.left;
//  	        var winRight=winOffset.left+250;
//  	        if((top<winTop || top>winBottom)||(left<winLeft ||left>winRight)){
//  		      destroySemanticQueryWin();
//  		      initSearchBox();
//  	         }
//           }
//  	    });
//  		$(window).mousedown(function(el){
  			var offset=$(el).offset();
           if($('#semantic-query-win').length>0){
           	var x=el.clientX+document.body.scrollLeft-document.body.clientLeft;
           	var y=el.clientY+document.body.scrollTop-document.body.clientTop;
//  	        var left=el.originalEvent.x||el.originalEvent.layerX||0;
//  	        var top=el.originalEvent.y||el.originalEvent.layerY||0;
//            var top=el.pageX;
//            var left=el.pageY;
//            var top=offset.top;
//            var left=offset.left;
            var top=y;
            var left=x;
//            alert(top+":"+left);
  	        //判断当前win的区域
  	        var winOffset=$('#semantic-query-win').offset();
  	        var winHeight=$('#semantic-query-win').height();
  	        var winTop=winOffset.top-25;
  	        var winBottom=winOffset.top+winHeight;
  	         var winLeft=winOffset.left;
  	        var winRight=winOffset.left+250;
//  	        alert(top+":"+winTop+":"+winBottom+":"+left+":"+winLeft+":"+winRight);
  	        if((top<winTop || top>winBottom)||(left<winLeft ||left>winRight)){
//  	        	alert('test');
  		      destroySemanticQueryWin();
  		      initSearchBox();
  	         }
           }
//  		});
  	 });
  	}
  	
  }
  /**
   * 初始化默认查询对话框:
   */
   function initDefaultSearcbBox(){
   	 $('#search-box').css({color:'gray','font-weight':'normal'});
   	 $('#search-box').attr('value',Monitor.config.defaultSearchKeyTip);
   }
  /**
   * 销毁查询结果提示窗口
   */
  function destroySemanticQueryWin(){
  	if($('#semantic-query-win').length>0){
  		Monitor.win.empty();
  		Monitor.win=null;
  		$('#semantic-query-win').remove();
  	}
  }
  function redirect2SearchResultPage(){
  	         var id=$('.on-select').first().attr('id');
  	         if(id){
  	           var text=$('.on-select').first().text();
  	           var href='';
  	           if(text && text.indexOf('http')===-1){
		   	    href=Base.config.path+'nodeServerAction.do?method=indexIFrame&node='+id;
  	           }else{
  	           	href=Base.config.path+'applicationSystemAction.do?method=graph&node='+id;
  	           }
  	           Base.Browser.openNewWin(href,'快速定位',800,600);
  	         }
  }
  function changeTabFocus(){
    $('#semantic-search-tip-results-ul li').each(function(e){
//	  $(this).css({
//	    'background-color':'white'
//	  });
      $(this).removeClass('on-select');
      $(this).removeClass('on-un-select');
      $(this).addClass('on-un-select');
	});
//	alert(seed);
//      alert(DEFAULT_MONITOR_SEMANTIC_SEED);
//	 $('#semantic-search-tip-results-ul li:nth-child('+DEFAULT_MONITOR_SEMANTIC_SEED+')').css({
//	      'background-color':'#D8E4F1'
//	  });
$('#semantic-search-tip-results-ul li:nth-child('+DEFAULT_MONITOR_SEMANTIC_SEED+')').removeClass('on-un-select');
$('#semantic-search-tip-results-ul li:nth-child('+DEFAULT_MONITOR_SEMANTIC_SEED+')').addClass('on-select');

//	var ip=$('#semantic-search-tip-results-table tr:nth-child('+seed+') td:first-child').text();
  }
  
  function initSearchBox(searchBox){
    var value=$(searchBox).attr('value');
	if(value && value===Monitor.config.defaultSearchKeyTip){
       $(searchBox).attr('value','');
	}
	if(!value || value==='' || value===null){
		$(searchBox).attr('value',Monitor.config.defaultSearchKeyTip);
	}
  }
  function focusWin(){
//	$('#semantic-query-win').css({border:'1px solid #009900'});
//    $('#semantic-search-tip-results-table tr:nth-child(2)').focus(function(e){
//	  $(this).css({
//	    'background-color':'gray'
//	  });
//	});
  }
  /**
   * 监听用户鼠标行为
   */
   function listenSemanticQueryResultMouseOver(){
   	$('#semantic-search-tip-results-ul li').mouseover(function(){
   		DEFAULT_MONITOR_SEMANTIC_SEED=$(this).index()+1;
        changeTabFocus();
   	});
   }
   /**
    * 当在选中的行上点击或双击时:
    */
    function listenClickOnSingleSemanticQueryResult(){
    	$('#semantic-search-tip-results-ul li').click(function(){
    		redirect2SearchResultPage();
    	});
    	$('#semantic-search-tip-results-ul li').dblclick(function(){
    		redirect2SearchResultPage();
    	});
    }
  /**
   * 用户输入后检索相关记录
   */
  function onKeyup(searchBox){
   var value=$(searchBox).attr('value');
   var vLength=value.length;
   var offset=$(searchBox).offset();
   if(!Monitor.win || Monitor.win===null){
   	//,containerCss:{'border-color':'#CC0000'}
   	 Monitor.win=new Win({id:'semantic-query-win',header:false,autoWidth:true,autoHeight:true});
   }
   if(vLength>2){
   	 DEFAULT_MONITOR_SEMANTIC_SEED=0;
     $.ajax({
       url:Base.config.path+'hardWareAction.do?method=semanticQuery',
       type:'post',
       dataType:'json',
       data:{
            key:value
        },
       success:function(data,status){
       	 Monitor.win.empty();
         var html=new StringBuffer();
         html.append('<div class="content" style="margin-left:0px;padding-left:0px;">');
         if(data!=null){
         var json=data.root;
         if(data.root.length>0){
		 maxStep=data.root.length-1;
         }
         if(json.length===1 && json[0].result==='NO-RESULT'){
         	html.append('<div class="content gray">没有符合的结果,数字/字母请以半角输入.多个检索条件,请使用空格分隔.</div>');
         }else{
         	html.append('<ul id="semantic-search-tip-results-ul" style="font:12px;margin-left:0px;margin-right:0px;vertical-align:center;">');
         for(var i=0;i<json.length;i++){
            var record=json[i];
            if(json.length===1 || i===0){
            	DEFAULT_MONITOR_SEMANTIC_SEED=1;
            	//margin-top:2px;margin-bottom:2px;
            	//margin-top:2px;margin-bottom:2px;
            	html.append('<li style="text-align:left;vertical-align:center;padding:none;height:17px;" class="on-select" id="'+record.id+'">');
            }else{
            	html.append('<li style="text-align:left;vertical-align:center;padding:none;height:17px;" id="'+record.id+'">');
            }
            html.append(record.result);
            html.append('</li>');
         }
          html.append('</ul>');
         }
        
         }else{
         	
         	html.append('没有符合条件的结果,多个检索条件,请使用空格分隔');
         }
         if(data.root.length>=10){
            html.append('<div class="content gray">此处省略记录若干...多个检索条件,请使用空格分隔</div>');
		 }
         if(data.root.length>=1){
         	html.append('<div class="content"><hr class="dotline"/></div>');
         }
         if(data.root.length>=1){
         	html.append('<div class="content gray"><span style="color:#F0C000;">提示:</span>"&uarr;,&darr;"选中结果后回车,或用鼠标选中点击,ESC退出.多个检索条件,请使用空格分隔.</div>');
         }
		 
         html.append('</div>');
        Monitor.win.addContent(html.toString());
        var length=data.root.length;
        var trueHeight=$('#'+Monitor.config.tipWinId).height();
        offset.top=offset.top-trueHeight-5;
        offset.left=offset.left-2;
        Monitor.win.show(offset,null);
        
//        alert($('#'+Monitor.config.tipWinId+' ul li:first-child').height());
        listenSemanticQueryResultMouseOver();
        listenClickOnSingleSemanticQueryResult();
        onMouseClick();
        }
    });
   }else{
//   	 var win=new Win({id:'semantic-query-win',header:false,width:268,autoHeight:true});
     Monitor.win.empty();
   	 var html=new StringBuffer();
   	 html.append('<div class="content gray">');
   	 html.append('至少输入3个有效字符,数字/字母请以半角输入.多个检索条件,请使用空格分隔.');
   	 html.append('</div>');
   	 Monitor.win.addContent(html.toString());
   	 var trueHeight=$('#'+Monitor.config.tipWinId).height();
     offset.top=offset.top-trueHeight-5;
     offset.left=offset.left-2;
     Monitor.win.show(offset,null);
   }
  }
  $('#search-button').click(function(){onKeyup(this);});
  $('#search-box').click(function(){initSearchBox(this);});
  $('#search-box').mouseleave(function(){if($(this).attr('value')===''){initSearchBox(this);}});
  $('#search-box-button').click(function(){
  	onKeyup($('#search-box'));
  });
  $('#search-box').keyup(function(e){
	  if(e.keyCode===40&&$('#semantic-query-win').length>0){
         focusWin(this);
	  }else{
	   if(e.keyCode!==40&&e.keyCode!==38&&e.keyCode!=13&&e.keyCode!==27&&e.keyCode!==108){
	   	 $(this).css({
  	    	color:'#3C78B5',
  		    'font-weight':'bold'
  	     });
	     onKeyup(this);
	   }else if ((e.keyCode===13||e.keyCode===108)&& $('#semantic-query-win').length===0){
	   	 if($('#search-box').attr('value')===Monitor.config.defaultSearchKeyTip){
	   	 	//如果是回车,同时search-box处于初始化状态
	   	 	$('#search-box').attr('value','');
	   	 }else{
	       onKeyup(this);
	   	 }
	     
	   }
	  }
	 });
}
};

/**
 * 取得一台设备的监控IP
 */
var HardWare={
	RUNTIME_HARDWARE_COMPARE_PREPARE_WIN_ID:'runtime_hardware_compare_win',
	getNodeServers:function(hardWareId){
	
	},
	tip:function(config,e){
		var id='';
		id=Base.Tools.id();
		var tipId=id+'_tip';
		var win=new Win({id:tipId,header:false,width:255,autoHeight:true});
        var html=new StringBuffer();
        html.append('<ul>');
       
        html.append('<li>');
		for(i=0;i<config.length;i++){
			var x=config[i];
			 var count=0;
			html.append('<li>');
          for(obj in x){
            html.append(obj);
            html.append(':');
			html.append(x[obj]);
          }
		html.append('</li>');
		}
        html.append('</ul>');
        win.addContent(html.toString());
		alert(html.toString());
        win.show($(e).offset(),null);
	},
	/**
	 * 设备运行时数据比对
	 * --ids:hardware id
	 */
	runtimeDataCompare:function(ids,type,e){
		HardWare.prepareDataForRuntimeDataCompare(ids,e);
		HardWare.compare(ids,'');
	},
	/**
	 *比对前准备初始数据
	 */
    prepareDataForRuntimeDataCompare:function(ids,e){
    	var html=new StringBuffer();
    	if($('#'+HardWare.RUNTIME_HARDWARE_COMPARE_PREPARE_WIN_ID)){
    		$('#'+HardWare.RUNTIME_HARDWARE_COMPARE_PREPARE_WIN_ID).remove();
    	}
        var win=new Win({id:HardWare.RUNTIME_HARDWARE_COMPARE_PREPARE_WIN_ID,autoWidth:true,autoHeight:true,title:'选择要比对的数据'});
        html.append('<form action="#" id="compare-form">');
        html.append('<ul>');
        html.append('<li><input type="radio" name="type" value="cpu"/>CPU</li>');
        html.append('<li><input type="radio" name="type" value="ram"/>内存</li>');
        html.append('<li><input type="radio"  name="type" value="ping"/>ping响应时间</li>');
        html.append('<li><input type="radio"  name="type" value="netconnect"/>网络连接数</li>');
        html.append('<li><input type="radio"  name="type" value="disk"/>磁盘</li>');
        html.append('<li><input type="radio"  name="type" value="network"/>网卡</li>');
        html.append('<li><input type="button" value="开始比对" id="compare-button"/>');
        html.append('</ul>');
        html.append('</form>');
        win.addContent(html.toString());
        var offset=$(e).offset();
        offset.top=offset.top+25;
        win.show(offset);
    },
    /**
     * do compare
     */
    compare:function(ids,type){
    	$('#compare-form').find('input[type="radio"]').click(function(){
    		var cType=$(this).val();
//    		alert(cType);
            //alert($('#disk-list').length);
    		var el=$(this);
    		if($('#disk-list').length>0){
    				$('#disk-list').empty();
    				$('#disk-list').remove();
    			}
    	    if($('#card-list').length>0){
    				$('#card-list').empty();
    				$('#card-list').remove();
    			}
    		if(cType==='disk'){
    			
    				$.ajax({
            		url:'hardWareAction.do?method=getDisksByHardWares&hardwareIds='+ids,
            		type:'post',
            		dataType:'json',
            		success:function(data,textStatus){
//            			var html=new StringBuffer();
                    var html=new StringBuffer();
    			    html.append('<li id="disk-list" style="margin-left:10px;margin-top:5px;margin-bottom:5px;">');
            			html.append('<table class="table-with-dashed-border">');
            			html.append('<tr style="background-color:#FFFFCE;font-weight:bold;">');
            			html.append('<td>');
            			html.append('服务器');
            			html.append('</td>');
            			html.append('<td>')
            			html.append('磁盘(s)');
            			html.append('</td>')
            			html.append('</tr>');
            			if(data.root.length>0){
            				for(var i=0;i<data.root.length;i++){
            					var record=data.root[i];
            					html.append('<tr>');
            					html.append('<td>');
            					html.append(record.name+'['+record.mainIp+']:');
            					html.append('</td>');
            					html.append('<td colspan="4">');
            					var list=record.diskList;
            					if(list.length>0){
            					    for(var count=0;count<list.length;count++){
            					       var r=list[count];
            					       html.append('<input type="checkbox" name="diskIds" value="'+r.did+'"  />'+r.dname);
            					    }
            					    
            					}else{
            						html.append('无监控磁盘');
            					}
            				   html.append('</td>');
            				   html.append('</tr>');
            				}
            			}
            			html.append('</table>');
//            			$('#monitor').empty().append(html.toString());	
                        html.append('</li>');
//            	        alert(html.toString());
                        $(el).parent().after(html.toString());
            		}
            	});
            	
    			
    		}else if(cType==='network'){
    			 var url='monitorDataLogWeekAction.do?method=getNetWorksByHardWares&hardwareIds='+ids;
    			 
			  	$.ajax({
            		url:url,
            		type:'post',
            		dataType:'json',
            		success:function(data,textStatus){
            			var html=new StringBuffer();
    			        html.append('<li id="card-list" style="margin-left:10px;margin-top:5px;margin-bottom:5px;">');
        
            			html.append('<table class="table-with-dashed-border">');
            			html.append('<tr style="background-color:#FFFFCE;font-weight:bold;">');
            			html.append('<td>');
            			html.append('服务器');
            			html.append('</td>');
            			html.append('<td>')
            			html.append('网卡(s)');
            			html.append('</td>')
            			html.append('</tr>');
            			if(data.root.length>0){
            				for(var i=0;i<data.root.length;i++){
            					var record=data.root[i];
            					html.append('<tr>');
            					html.append('<td>');
            					html.append(record.name+'['+record.mainIp+']：');
            					html.append('</td>');
            					html.append('<td colspan="4">');
            					var list=record.netList;
            					if(list.length>0){
            					    for(var count=0;count<list.length;count++){
            					       var r=list[count];
            					       html.append('<input type="checkbox" name="netIds" value="'+r.id+'"  />'+r.description);
            					    }
            					}
            				   html.append('</td>');
            				   html.append('</tr>');
            				}
            			}
            			html.append('</table>');
//            			$('#monitor').empty().append(html.toString());
            			html.append('</li>');
            	       $(el).parent().after(html.toString());
            			
            		}
            	});
            	
    		}
    	});
    	$('#compare-form input[type="button"]').click(function(){
    		var clickType='';
    	    clickType=$('#compare-form').find(':radio:checked').val();
    	    if(!clickType ||clickType==='' ||clickType===undefined){
            	 com.faceye.SingleCicerone.msg(null,'请选择要比对的数据类型,如"CPU"');
            	return;
            }
    	   
    	    var netIds='';
    	    var diskIds='';
    	    $('input[name="diskIds"]').each(function(data){
    	    	var id=$(this).attr('value');
    	    	if($(this).attr('checked')!==undefined){
    	    	 diskIds+=id;
    	    	 diskIds+=',';
    	    	}
    	    });
    	    $('input[name="netIds"]').each(function(data){
    	    	var id=$(this).attr('value');
    	    	if($(this).attr('checked')!==undefined){
    	    	netIds+=id;
    	    	netIds+=',';
    	    	}
    	    });
    	    var len=ids.split(',').length;
    	   
    	   var _type= clickType;
    	   if(_type==='disk'){
    	   	if(diskIds===''){
    	   		com.faceye.SingleCicerone.msg(null,'请选择要进行比对的磁盘.');
    	   		return;
    	   	}
    	   }
    	   if(_type==='network'){
    	   	 if(netIds===''){
    	   	 	com.faceye.SingleCicerone.msg(null,'请选择要进行比对的网卡');
    	   	 	return;
    	   	 }
    	   }
    	   
    	  // var url='hardWareAction.do?method=monitorItemCompare&hardwareIds='+ids;
    	  var url='hardWareAction.do?method=multiHardWareCompareMain&hardwareIds='+ids;
    	   url+='&monitorItemId='+_type+'&diskIdString='+diskIds+'&netIdString='+netIds;
//    	   alert(url);
    	   Base.Browser.openAllNewWin(url,'服务器运行数据比对','1000','1000','yes','yes');
    	   $('#'+HardWare.RUNTIME_HARDWARE_COMPARE_PREPARE_WIN_ID).empty().remove();
    	    
   	});
    },
     /**
	* 快速查询设备建议tip
	*/
	how2DoFastQueryTip:function(dom){
      
	  var html=new StringBuffer();
	  html.append('<b>如何快速查询设备</b><br/>');
	  html.append('1.资产编号查询请在查询字符串中包含<font color="red">"-"</font><br/>');
      html.append('2.IP查询请在查询字符串中包含<font color="red">"."</font>,或以分段IP(59.151),全IP(59.151.6.185)查询<br/>');
      html.append('3.序列号查询使用无"-"和"."的字符串进行查询<br/>');
	  var msg=new Msg({title:'如何快速查询设备?',isFadeOut:false,width:300,height:200,msg:html.toString()});
	  var offset=$(dom).offset();
	  offset={top:offset.top,left:offset.left-300};
	  msg.show(offset); 
	}
}; 
$(document).ready(function(){
		  
		});

//$(document.getElementById('content-iframe').document).ready();

