/*
 * 功能:股票的下拉提示 
 * 作者：李广猛 
 * E-MAIL:ligm@cssweb.com.cn
 */
//var req; // 定义变量，用来创建xmlHttpRequest对象
var inputText;	// 要生成Suggest提示的文本输入框
var suggestListContainer; // 下拉提示列表内容所被包含的DIV容器
var suggestListContentTable; // 下拉提示列表的内容展示Table
var contentBody; // 内容展示Table的<tbody></tbody>
var selItemIndex = -1; // Suggest下拉列表的当前选择项索引
var DEFAULT_SUGGEST_LIST_WIDTH = 158; // 下拉提示列表的默认宽度。当为0时，和文本输入框的宽度相同
var remoteUrl = ""; // 去后台获取数据的URL地址
var preValue = "";
var pageNo=1;
var defaultValue_="代码/名称/拼音";
var pageSize=10;
if(baseUrl=='undefined')
	var baseUrl="";
var  isIE  =   !! document.all;
function isChinaOrNumbOrLett( s ){// 判断是否是汉字、字母、数字组成
	var regu = "^[0-9a-zA-Z\u4e00-\u9fa5]+$"; 
	var re = new RegExp(regu); 
	if (re.test(s)) { 
		return true; 
	}else{ 
		return false; 
	} 
} 
// 创建XMLHttpRequest对象
/*
function createXMLHttpRequest() {
	if(window.XMLHttpRequest) { // Mozilla 浏览器
		req = new XMLHttpRequest();
	}
	else if (window.ActiveXObject) { // IE浏览器
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
}
*/
String.prototype.trim = function()
{
	var reExtraSpace = /^\s*(.*?)\s+$/;
	return this.replace(reExtraSpace,"$1");
}
//初始化数据
function init(){
	item_=0;
	pageNo=1;
	lastElement_=null;
}
var item_=0;// 存放刚才选择的元素
var lastElement_=null;
/**
 * 发送匹配请求函数（注：必须传入event对象，否则FireFox在获得keyCode时不兼容） 参数： evt 代表事件状态的event对象 url
 * 根据输入框的值，动态取数据的URL地址
 */
function getSuggestList_stock(evt) {

	var typex = $('select').value;
	if(inputText.value.trim().length==0){
		return ;
	}
	if(evt.keyCode==40||evt.keyCode==38){// 上下键选择
		var menuItems=contentBody.childNodes;
		if(evt.keyCode==40){
			if(item_<menuItems.length-1){
				item_++;
				//inputText.value=menuItems[item_].firstChild.firstChild.nodeValue.split(" ")[0];
			}else{
				doNextPage(typex);
				return;
			}
		}
		else if(evt.keyCode==38){
			if(item_>0){
				item_--;
				/*if(item_>=0)
					inputText.value=menuItems[item_].firstChild.firstChild.nodeValue.split(" ")[0];*/
			}
			else{
				doPrePage(typex);
				return;
			}
		}
		if(lastElement_){
			lastElement_.onmouseout();
		}
		menuItems[item_].onmouseover();
		lastElement_=menuItems[item_];
		return;
	}
	if(evt.keyCode==37||evt.keyCode==39){// 左右键选择
		if(evt.keyCode==37){
			doPrePage(typex);
		}
		if(evt.keyCode==39)
		{
			doNextPage(typex);
		}
		return;
	}
	if(evt.keyCode==13){ // 回车键（注：FireFox浏览器keyCode必须大写"C"）
		if(lastElement_){
			itemSelected(lastElement_);
		}
		clearSuggestList();
		inputText.blur();
		inputText.select();
		return;
	}
	init();
	buildHTML(typex,pageNo);
}
function doNextPage(typex){
	if(contentBody.childNodes.length==pageSize){
		pageNo++;
		item_=0;
		buildHTML(typex,pageNo);
	}
}
function doPrePage(typex){
	if(pageNo>1){
		pageNo--;
		item_=pageSize-1;
		buildHTML(typex,pageNo);
	}
}
function buildHTML(typex,pageNo){
	if (inputText.value.trim().length > 0) {
      	if(preValue != inputText.value){
      		var code_=inputText.value;
			selItemIndex = -1; // 如果输入框值变化，则初始化此变量，保证上、下键是从列表头开始选择
			if(code_!=defaultValue_&&!isChinaOrNumbOrLett(code_)){
				alert("输入非法!");
				inputText.value=inputText.value.substring(0,inputText.value.length-1);
				return;
			}
			if(inputText.value.indexOf('请输入')>=0 || inputText.value.indexOf('代码/名称/拼音')>=0){ 
				inputText.value='代码/名称/拼音';
			}
			else{
				$('popupDiv').style.display='';
			}
			createXMLHttpRequest();
		   	if(typex == "bond"){
				remoteUrl = baseUrl+"/servlet/codeSuggest?method=searchZQDMList&code_=" + encodeURIComponent(inputText.value)+"&pageNo_="+pageNo+"&typex="+typex;
			}else if(typex == "fund"){
				remoteUrl = baseUrl+"/servlet/codeSuggest?method=searchJJDMList&code_=" + encodeURIComponent(inputText.value)+"&pageNo_="+pageNo+"&typex="+typex;
			}else if(typex == "stock"){
				remoteUrl = baseUrl+"/servlet/codeSuggest?method=searchGPDMList&code_=" + encodeURIComponent(inputText.value)+"&pageNo_="+pageNo+"&typex="+typex;
			}
			XMLHttpReq.open("GET", remoteUrl, true);
			XMLHttpReq.onreadystatechange = processMatchResponse_stock;// 指定响应函数
			XMLHttpReq.send(null); // 发送请求
		}
	} else {
    	clearSuggestList();
	}
}
// 处理返回匹配信息函数
function processMatchResponse_stock() {
	if (XMLHttpReq.readyState == 4) { // 判断对象状态
    	if (XMLHttpReq.status == 200) { // 信息已经成功返回，开始处理信息
			createSuggestList();
			if(contentBody.childNodes.length>0){
				lastElement_=contentBody.childNodes[item_];
				if(lastElement_)
				lastElement_.onmouseover();
			}
        }else { // 页面不正常
            window.alert("您所请求的页面有异常。");
        }
    }
}

// 生成Suggest下拉列表
function createSuggestList() {
	clearSuggestList(); // 先清除先前的下拉列表
	var bonds;
	var size = 0;
	if(XMLHttpReq.responseXML==null){ // 当没有数据返回时，FireFox这里要特殊处理
		return;
	}else{
		bonds = XMLHttpReq.responseXML.getElementsByTagName("gpjj");
		if(XMLHttpReq.responseXML.getElementsByTagName("hidden").length>0)
			pageNo=XMLHttpReq.responseXML.getElementsByTagName("hidden")[0].firstChild.data;
		size = bonds.length;
		if(size==0)
			return;
	}
    renderContainer();
    var row, cell, txtNode;
    for (var i = 0; i < size; i++) {
        var nextNode = bonds[i].firstChild.data;
        row = document.createElement("tr");
        row.onmouseout = function() {this.style.backgroundColor ='#FFFAFA';};
        row.onmouseover = function() {this.style.backgroundColor ='#f4a460';};
        row.onmousedown = function() { itemSelected(this);};
        cell = document.createElement("td");
        txtNode = document.createTextNode(nextNode);
        cell.appendChild(txtNode);
        row.appendChild(cell);
        contentBody.appendChild(row);
    }
    
}

// 设置Suggest下拉列表的显示位置及显示样式
function renderContainer() {
	if(DEFAULT_SUGGEST_LIST_WIDTH == 0){
		suggestListContentTable.width = inputText.clientWidth;
	}else{
		suggestListContentTable.width = DEFAULT_SUGGEST_LIST_WIDTH;
    }

    var left = calculateOffset(inputText,"offsetLeft")-20;
    var top = calculateOffset(inputText,"offsetTop") + inputText.offsetHeight;
    suggestListContainer.style.width = suggestListContentTable.width;
    suggestListContainer.style.border = "black 1px solid";
    suggestListContainer.style.left = left +20 + "px";
    suggestListContainer.style.top = top + "px";
    suggestListContainer.style.width = suggestListContentTable.width;
}

/**
 * 计算相对于文本输入框的显示位置 参数： attr 要计算数值的属性名，'offsetLeft'、'offsetTop'等
 */
function calculateOffset(field,attr) {
	var offset = 0;
	while(field) {
		offset += field[attr]; 
		field = field.offsetParent;
	}
	return offset;
}

/**
 * 下拉列表某行被选中的动作 参数： row 被选中的下拉列表行
 */
function itemSelected(row) {
	inputText.value = row.firstChild.firstChild.nodeValue.split(" ")[0];
	preValue = inputText.value;
	// toF10(); //执行查询, 需要调用的页面实现此方法
	clearSuggestList();
}
    
// 清除Suggest下拉列表
function clearSuggestList(){
	suggestListContainer.style.displsy = "none";
	if(inputText.value==''){
		if($('select').value == "stock"){
			inputText.value=defaultValue_;
		}else if($('select').value == "fund"){
			inputText.value=defaultValue_;
		}else if($('select').value == "bond"){
			inputText.value=defaultValue_;
		}else if($('select').value == "help"){
			inputText.value=defaultValue_;
		}else if($('select').value == "caixun"){
			inputText.value=defaultValue_;
		}
		 
	}else{
		
		var ind = contentBody.childNodes.length;
	    for (var i = ind - 1; i >= 0 ; i=i-1) {
	        contentBody.removeChild(contentBody.childNodes[i]);
	    }
	   
	    suggestListContainer.style.border = "none";
	}
}
/**
 * 处理键盘按下动作 参数： evt event对象 functionName 键盘按下后需要执行的函数名
 */
function keyDownProcess(evt,functionName)
{
	if(evt.keyCode == 13)
	{
		// toF10(); //执行查询, 需要调用的页面实现此方法
		event.srcElement.select();
	}else{
		if(evt.keyCode == 38 || evt.keyCode == 40){
			selectChange(evt.keyCode);
		}
	}
}

/**
 * 按上、下方向键进行选择 参数： eventkey 键盘的key值
 */
function selectChange(eventkey){
	var size = contentBody.childNodes.length;
    if(size == null || size == 0)
        return;
        
    if(eventkey == 40){ // 向下键
    	if(selItemIndex == size - 1){ // 到达列表最底部，重新从顶部开始选择
    		selItemIndex = 0;
    	}else{
        	selItemIndex++;
        }
    }else if(eventkey == 38){ // 向上键
    	if(selItemIndex == 0 || selItemIndex == -1){ // 到达列表最顶部，重新从最底部开始选择
    		selItemIndex = size - 1;
    	}else{
        	selItemIndex--;
        }
    }
    
    for(var j=0; j<size; j++){
		contentBody.childNodes[j].style.backgroundColor = '#FFFAFA';
	}
	
    for(var i=0; i<size; i++){
		if(selItemIndex == -1){
			return;
		}
		if(i == selItemIndex){
            contentBody.childNodes[i].style.backgroundColor = '#f4a460';
            inputText.value = contentBody.childNodes[i].childNodes[0].innerHTML.split(" ")[0];
		}
    }
    preValue = inputText.value;
}

// 执行表单验证并查询
function toF10(){
	var type = $('select').value;
	var url = "";
	if(type == "bond" && inputText.value!=defaultValue_){
		if(inputText.value.trim().length==0){
			alert("请输入债券代码");
			return false;
		}
		if(inputText.value.match(/^[a-zA-Z0-9]*$/)==null){
			alert("债券代码只能包含字母和数字");
			return false;
		}
		
		url = "/qn_search/zq.jsp?gpdm="+inputText.value;
	}else if(type == "caixun" && inputText.value!="请输入财讯内容"){
		if(inputText.value.trim().length==0){
			alert("请输入搜索条件");
			return false;
		}
		url = "/qn_search/cxzl_ss.jsp?searchWord="+encodeURIComponent(inputText.value);
	}else if(type == "fund" && inputText.value!=defaultValue_){
		if(inputText.value.trim().length==0){
			alert("请输入基金代码");
			return false;
		}
		if(inputText.value.match(/^[0-9]\d*$/)==null){
			alert("基金代码只能包含数字");
			return false;
		}
		if(inputText.value.length !=6 ){
			alert("基金代码长度应该为6位");
			return false;
		}
		
		url = "/qn_search/jj.jsp?gpdm="+inputText.value;
	}else if(type == "stock" && inputText.value!=defaultValue_){
		if(inputText.value.trim().length==0){
			alert("请输入股票代码");
			return false;
		}
		if(inputText.value.match(/^[0-9]\d*$/)==null){
			alert("股票代码只能包含数字");
			return false;
		}
		if(inputText.value.length !=6 ){
			alert("股票代码长度应该为6位");
			return false;
		}
		
		url = "/qn_search/f10_all.jsp?gpdm="+encodeURIComponent(inputText.value);
	}else if(type=="help"){
		url = "/qn_search/help.jsp?keyWord="+encodeURIComponent(inputText.value);
	}else{
		alert("请输入搜索内容");
		return false;
	}
	if(url != '' ){
		window.open(url);
	}
}

// 我要报错
function wybc(){
	var url;
	var urlnew="";
	url=window.location.href;
	var urlcs=url.split("&");
	for(var i=0; i<urlcs.length; i++)
	{
		urlnew+=urlcs[i]+"$";
	}
	window.open('/admin/advice/wybc.jsp?source='+urlnew);
}
// et助手同步登录
function syn_wz_login(newUrl){
    window.location = newUrl;
}

// -->

