﻿// JScript 文件
!function (bool){
//兼容FF一些方法
if (bool){
	window.constructor.prototype.__defineGetter__("event", function (){//兼容Event对象
		var o=arguments.callee;
		do{
			if (o.arguments[0] instanceof Event)return o.arguments[0];
		}while (o=o.caller);
		return null;
	});
}
}(/Firefox/.test(window.navigator.userAgent));
var GetValue=function(sid){return document.getElementById(sid);};
var CarInfo=null;	
var LoadState=2;  
var Class = {
  create : function() {
	return function() {
	  this.initialize.apply(this, arguments);
	}
  }
}
var RemoveIframeDelegate=function(control){
     //移除以前的iframe
     var iframeold=control.getElementsByTagName("iframe")[0];
     if(iframeold!=null)
     {
         control.removeChild(iframeold);
     }
}
var contexttext="";
var Delegate=Class.create(); 
Delegate.prototype={
	initialize:function(){
		this.event=new Array();			
	},		
	add:function(fun,obj){		    
		this.event[this.event.length]=function(){
		fun.apply(obj,arguments);			
		};			
	},
	exec:function(){		    
		for(var i=0;i<this.event.length;i++)
		{
			this.event[i].apply(null,arguments);
		}
	},
	del:function (num){
		if (num < this.event.length)
		{
			this.event.splice(num, 1);				
		}
	}
}
var SearchFrame=function(){}

SearchFrame.prototype={	   		      
   CheckInputEvent:new Delegate(),	         
   CheckInput:function(){		           	        	        
		var pro=this;
		this.CheckInputEvent.exec();	                       
		window.setTimeout(function(){pro.CheckInput()},200);
   }	  
}

var DealPriceInfo=function(){}
DealPriceInfo.prototype.DealInfo=function(PriceInfo,obj){
	var RetArr=new Array();
	if(PriceInfo==null||PriceInfo.length==0)
	{
		return RetArr;
	}
	 for(var i=0;i<PriceInfo.length;i++)
	 {
	    var isAd = (PriceInfo[i].KeyType == 4 || PriceInfo[i].KeyType == 5);
	    var right= "约 "+PriceInfo[i].pricecount+" 条车源";
	    if(PriceInfo[i].KeyType == 4){//Ad
	        right="赞助商链接";
	    }
	    else if(PriceInfo[i].KeyType == 5){//Dealer
	         right="查看详情";
	    }
		RetArr[i]="";
		RetArr[i]+="<div onmousemove=\"ShowObject.Move(this)\"  class=\"" + (isAd? "SearchBarAd":"SearchBar") + "\" onclick=\"ShowObject.FillInput(this); Search();\" id=\""+obj.SearchBarId+""+i+"\" KeyType=\"" +  PriceInfo[i].KeyType + "\">";
		RetArr[i]+="<li id=\""+obj.SearchBarLileftId+"_"+i+"\"  class=\"SearchBarLileft\">";
		RetArr[i]+=PriceInfo[i].name;
		RetArr[i]+="</li><li id=\""+obj.SearchBarLiRightId+"_"+i+"\"  class=\"SearchBarLiRight\"> "+ right + "</li></div>"
	 }
	return RetArr;
}


var ShowObject={
	ShowObjectId:"SearchDropDownListId",
	SearchBarId:"SearchBarId",
	SearchBarLileftId:"SearchBarLileftId",
	SearchBarLiRightId:"SearchBarLiRightId",	
	SearchbtId:"searchbt",    
	Info:null,
	DealMethod:new DealPriceInfo(),
	ConfirmEvent:new Delegate(),	    
	KeyCheck:function(){},
	State:function(){},
	FromObj:null,
	FillEvent:new Delegate(),
	tagArr:function(o,name){return o.getElementsByTagName(name)},
	FillInput:function(obj){
		var liObj=this.tagArr(GetValue(obj.id),'li');
		var inputObj=this.tagArr(GetValue(obj.id),'input');
		GetValue(this.FromObj.CheckTxtBoxId).value=liObj[0].innerHTML;
		this.FromObj.szCheckWord=GetValue(this.FromObj.CheckTxtBoxId).value;
		GetValue(this.ShowObjectId).style.display="none";
		this.FillEvent.exec();          
	},
	FillInputForkey:function(obj){
		var liObj=this.tagArr(GetValue(obj.id),'li');
		var inputObj=this.tagArr(GetValue(obj.id),'input');
		GetValue(this.FromObj.CheckTxtBoxId).value=liObj[0].innerHTML;
		this.FromObj.szCheckWord=GetValue(this.FromObj.CheckTxtBoxId).value; 
	},
	MoveThis:function(){
		var obj=GetValue(this.ShowObjectId);
		var keycode=event.keyCode;
		 switch(keycode)
		 {	         
		 case(38):	            
			if(obj.childNodes.length>0)
			{
				if(obj.style.display=="block")
				{
				    this.SetCss(obj.childNodes[this.curPos],"SearchBar","SearchBarAd");
					if(this.curPos>1)
					{this.curPos=this.curPos-1;}
					else
					{this.curPos=obj.childNodes.length-2;}
					var cobj=obj.childNodes[this.curPos];
					this.SetCss(cobj,"SearchBar2","SearchBar2Ad");
					this.FillInputForkey(cobj);
					GetValue(this.FromObj.CheckTxtBoxId).focus();
				}
				else
				{
					 obj.style.display="block";
					 GetValue(this.FromObj.CheckTxtBoxId).focus();
				}
				contexttext="";
			}
			break;
		 case(40):
			if(obj.childNodes.length>0)
			{
				if(obj.style.display=="block")
				{
					obj.style.display="block";
					this.SetCss(obj.childNodes[this.curPos],"SearchBar","SearchBarAd");
					if(this.curPos<obj.childNodes.length-2)
					{this.curPos=this.curPos+1;}
					else
					{this.curPos=1;}
					var cobj2=obj.childNodes[this.curPos];
					this.SetCss(cobj2,"SearchBar2","SearchBar2Ad");
					this.FillInputForkey(cobj2);
				}
				else
				{
					 obj.style.display="block";
					 GetValue(this.FromObj.CheckTxtBoxId).focus();
				}
				contexttext="";
			}
			break;
		 case(27):
			GetValue(this.ShowObjectId).style.display="none";
			break;
		 }	         
	},
	SetCss:function(CurrentObj,NormalCss,AdCss){
	    if(CurrentObj){
	        if(CurrentObj.getAttribute("KeyType") == "4" || CurrentObj.getAttribute("KeyType") == "5"){
		        CurrentObj.className=AdCss;
		    }
		    else{
		        CurrentObj.className=NormalCss;
		    }
		}
	},
	curPos:0,
	Move:function(CurrentObj){
		var obj1=GetValue(this.ShowObjectId);
		for(var i=0;i<obj1.childNodes.length;i++)
		{
			  if(obj1.childNodes[i]==CurrentObj)
			  {
				 this.curPos=i;
				 var liObj=this.tagArr(GetValue(this.SearchBarId+(i-1)),'li');
		         contexttext=liObj[0].innerHTML;
			  }
			  if(obj1.childNodes[i].getAttribute("KeyType") == "4" || obj1.childNodes[i].getAttribute("KeyType") == "5"){
			      if(obj1.childNodes[i].className=="SearchBar2Ad")
			      {
				     obj1.childNodes[i].className="SearchBarAd";
			      }	
			  }
			  else{
			      if(obj1.childNodes[i].className=="SearchBar2")
			      {
				     obj1.childNodes[i].className="SearchBar";
			      }	
			  }             
		 }
		 this.SetCss(obj1.childNodes[this.curPos],"SearchBar2","SearchBar2Ad");
	},	
	Show:function(){	       	       
	   var ShowArr=this.DealMethod.DealInfo(this.Info,this);
	   var strdiv="";
	   //有提示时，显示提示，无则隐藏
		if(ShowArr.length!=0)
		{ 
			 strdiv+="<div style=\"width:1px;height:1px;font-size:0px;display:none;\"></div>"
			 for(var i=0;i<ShowArr.length;i++)
			 {
				strdiv+=ShowArr[i];
			 }
			 //20090408添加滚动条是否可见属性
			 var width='99%';
			 if(ShowArr.length>this.FromObj.ScrollbarCount & this.FromObj.ScrollbarVisiable)
			 {
			 	GetValue(this.ShowObjectId).style.height=this.FromObj.MaxHeight+'px';
	    		GetValue(this.ShowObjectId).style.overflow='auto';
	    		width='95%';
       }
       else
       {
   		    GetValue(this.ShowObjectId).style.height='auto';
            GetValue(this.ShowObjectId).style.overflow='visible';
       }
	     GetValue(this.ShowObjectId).innerHTML=strdiv;
	     GetValue(this.ShowObjectId).style.display="block";
	     //宽度调整
	     if(this.FromObj.ScrollbarVisiable)
	     {
	         var arrList = GetValue(this.ShowObjectId).getElementsByTagName("div");
	         for(var i=0;i<arrList.length;i++)
    	     {
    		     arrList[i].style.width=width;
    	     }
 	    }
	  	    GetValue(this.ShowObjectId).innerHTML+="<div id='divUcarSuggestLogo' class=\"suggest_morec\"><div class=\"suggest_more_logo\"><a href=\"http://www.ucar.cn\" target=\"_blank\"><img src=\"http://search.ucar.cn/img/ucarlogo.gif\" alt=\"\" border=\"0\" /></a></div><div class=\"suggest_more_mid\"><a href=\"http://www.ucar.cn\" target=\"_blank\">更多二手车，就在优卡二手车网</a></div><div class=\"suggest_more_gb\" onclick=\"javascript:ShowObject.Close();\"><img src=\"http://search.ucar.cn/img/close.gif\" alt=\"关闭\" style=\"cursor:hand;\"/></div></div>";
			GetValue('divUcarSuggestLogo').style.width=width;
		    //20090511增加Iframe遮罩select元素
	         if(this.FromObj.IsHidenSelect)
	         {
	             var showdiv=GetValue(this.ShowObjectId);
	             var receptacle=showdiv.parentNode;
	             //移除以前的iframe
	             RemoveIframeDelegate(receptacle);
	             var iframe = document.createElement("iframe");
	             iframe.className="SearchDropDownListIframe";
	             iframe.setAttribute("id", "_ifSuggestSelect");
	             //iframe.style.top= GetValue(this.ShowObjectId).offsetTop;   
                 iframe.style.left= showdiv.offsetLeft; 
                 iframe.style.width= showdiv.offsetWidth;   
                 iframe.style.height= showdiv.offsetHeight; 
	             receptacle.insertBefore(iframe, showdiv);
	          }
		}
		else
		{
			GetValue(this.ShowObjectId).innerHTML=strdiv;
			GetValue(this.ShowObjectId).style.display="none";
			var receptacle=GetValue(this.ShowObjectId).parentNode;
            //移除以前的iframe
            RemoveIframeDelegate(receptacle);
		}
	},
	Close:function(){
	   GetValue(this.ShowObjectId).style.display='none';
	   var receptacle=GetValue(this.ShowObjectId).parentNode;
       //移除以前的iframe
       RemoveIframeDelegate(receptacle);
	},   
	toString:function(){}
}

var SearchFrameLogic=function(){
	var pro=this;
	//this.attachEvent(window,"onload",function(){pro.Load()})
	pro.Load();
}
SearchFrameLogic.prototype={
	attachEvent:function(o,name,fun){
		return document.all ? o.attachEvent(name,fun) : o.addEventListener(name.substr(2),fun,false);
	},
	Load:function(){	                 
		this.ShowDefault();
	},
	CheckTxtBoxId:"txtSearch",
	ShowEvent:new Delegate(),
	szCheckWord:"",
	szDefaultShowTxt:"请输入您想要找的车型",
	ObjResultShow:null,
	Info:null,
	MaxHeight:1000,
	ScrollbarVisiable:false,
	IsHidenSelect:false,
	ScrollbarCount:10,
	szUrl:"InputHandler.ashx?kw=@keyWord",
	ShowDefault:function(){
	   if(GetValue(this.CheckTxtBoxId)){GetValue(this.CheckTxtBoxId).value=this.szDefaultShowTxt;}
	},
	Check:function(){	    
	   var objInput=GetValue(this.CheckTxtBoxId);
		if(!objInput){return;}
		if(this.szCheckWord!=objInput.value){
			this.szCheckWord=objInput.value;
			this.ObjResultShow.curPos=0;           
		   if(this.szCheckWord!=null && this.szCheckWord!=""){              
				this.GetInfoFromServer();	                
			} 		
		}else{
			if(this.szCheckWord=="" || flgnull==true){
			   this.ObjResultShow.Close();
			}
		}
	},
	GetInfoFromServer:function(){	          
		var pro=this;
		this.loadJS.push(this.szUrl.replace(/@keyWord/g,escape(this.szCheckWord)).replace(/@temp/g,Math.random().toString())
		,'utf-8'
		,function(){
			pro.ObjResultShow.Info=CarInfo;
			pro.ObjResultShow.FromObj=pro;
			pro.ObjResultShow.Show();
			CarInfo=null;
		});
	},
	DealData:function(){
	}
	,loadJS:{
		lock : false, ranks : []
		, callback : function (startTime, callback) {
		//载入完成		
			callback && callback(new Date().valueOf() - startTime.valueOf()); //回调	
			this.luck = false, this.read(); //解锁，在次载入
		}
		, read : function () {
		//读取
			if (!this.luck && this.ranks.length) {
				var head = document.getElementsByTagName("head")[0];
				
				if (!head) {
					ranks.length = 0, ranks = null;
					throw new Error('HEAD不存在');
				}
				
				var wc = this, ranks = this.ranks.shift(), startTime = new Date, script = document.createElement('script');
				
				this.luck = true;
				
				script.onload = script.onreadystatechange = function () {
					if (script && script.readyState && script.readyState != 'loaded' && script.readyState != 'complete') return;
					
					script.onload = script.onreadystatechange = script.onerror = null, script.src = ''
						, script.parentNode.removeChild(script), script = null; //清理script标记
						
					wc.callback(startTime, ranks.callback), startTime = ranks = null;
				};
				
				script.charset = ranks.charset || 'gb2312';
				script.src = ranks.src;
				
				head.appendChild(script);
			}
		}
		, push : function (src, charset, callback) {
		//加入队列
			this.ranks.push({ 'src' : src, 'charset' : charset, 'callback' : callback });
			this.read();
		}
	}
}