// created by evenzyh in 090601
var searchReq = createReq();
var selectIndex = -2;
var itemCount ;
var market = "";
var subidstr = "";

function createReq() {
	var httpReq=false;
	if (window.XMLHttpRequest) {
		
		
		httpReq = new XMLHttpRequest();
		//alert(selectbrowser);
		if (httpReq.overrideMimeType) {
			httpReq.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) {
     
                try {   
                    httpReq = new ActiveXObject('Msxml2.XMLHTTP'); 	
                } catch (e1) {  
					try{
                  	httpReq = new ActiveXObject('Microsoft.XMLHTTP'); 
					}catch(e2){
								}
                } 
	   
	}
	return httpReq;
}

function searchSuggest(e) {
	var keyCode;
	if (window.event) {
		keyCode = e.keyCode;
	} else if (e.which) {
		keyCode = e.which;
	}
	if (keyCode == '38' || keyCode == '40') 
	{// up and down
	
		if (itemCount >= 0)
			if (document.getElementById("search_suggest" + subidstr).style.display == "")
				changeSelect(keyCode);
		
			else
				showSearch();
	} else if (keyCode == '13') {// enter
		if (document.getElementById("search_suggest" + subidstr).style.display == "") {
			getSelectIndex();
			if (selectIndex >= 0) {
				setSearch(document.getElementById("suggest" + selectIndex).innerHTML);
			}
		} else {
			var theform = document.getElementById("stockinputform") ? document
					.getElementById("stockinputform") : document
					.getElementById("quote");
			if(theform==document.getElementById("stockinputform"))
			theform.submit();
		}
	} else {
		/*if (subid)
			subidstr = subid;
		else
			subidstr = '';*/
		init();
		var str = document.getElementById("IDStock" + subidstr).value;
		//alert(str);
		market = getMarket();
		if (str.length > 0) {
					searchReq.open("post", "../share/stock/search.php?market=" + market
							+ "&searchText=" + encodeURIComponent(str), true);
					searchReq.onreadystatechange = handleSearchSuggest;
					searchReq.send(null);
		}
	}
	
}

function handleSearchSuggest() {
	itemCount=-1;
	//alert(searchReq.readyState);
	//alert(searchReq.status);
	if (searchReq.readyState == 4) {
		
		if (searchReq.status == 200) {
			
			//alert("4 200");
			var suggestText = document.getElementById("search_suggest"
					+ subidstr);
			var sourceText = searchReq.responseText;
			sourceText = sourceText.split('|');
			if (sourceText.length > 1) {
				suggestText.style.display = "";
				suggestText.innerHTML = "";
				var suggestWide = 0;
				for ( var i = 0; i < sourceText.length-1; i += 2) {
					var s = '<div id="suggest' + i + '" 			 onmouseover="javascript:mouseover(this);"';
					s += ' onmouseout="javascript:mouseout(this);" ';
					s += ' onclick="javascript:setSearch(this.innerHTML);" ';
					s += ' class="suggest_link" text-align:right>';

					var str = sourceText[i] + '&nbsp;&nbsp;&nbsp;'
							+ sourceText[i + 1];
					if (suggestWide < LengthOf(str))
						suggestWide = LengthOf(str)+3;

					s += str + '</div>';
					suggestText.innerHTML += s;
					itemCount = i;
				}
				suggestText.style.width = suggestWide * 5 + 'px';
				suggestText.innerHTML += '<div class="closesearch" onclick="closeSearch();">close</div>';
				selectIndex = -2;
			} else {
				suggestText.style.display = "none";
			}
		}
	}
}

function mouseover(obj) {
	getSelectIndex();
	if (selectIndex >= 0 && selectIndex <= itemCount)
		suggestOut(document.getElementById("suggest" + selectIndex));
	suggestOver(obj);
	getSelectIndex();
}

function mouseout(obj) {
	suggestOut(obj);
	selectIndex = -1;

}

function getSelectIndex() {
	for ( var i = 0; i <= itemCount; i += 2) {
		if (document.getElementById("suggest" + i).className == 'suggest_link_over') {
			selectIndex = i;
			return;
		} else
			selectIndex = -2;
	}
}

function changeSelect(keyCode) {
	getSelectIndex();
	if (selectIndex >= 0 && selectIndex <= itemCount)
		suggestOut(document.getElementById("suggest" + selectIndex));

	if (keyCode == '38') {
		if (selectIndex <= 0)
			selectIndex = itemCount;
		else
			selectIndex -= 2;
	} else if (keyCode == '40') {
		if (selectIndex >= itemCount)
			selectIndex = 0;
		else
			selectIndex += 2;
	}
	suggestOver(document.getElementById("suggest" + selectIndex));
}

function LengthOf(strTemp) {
	var len = 0
	for ( var i = 0; i < strTemp.length; i++) {
		if (strTemp.charCodeAt(i) > 255) {
			len += 2
		} else {
			len += 1
		}
	}
	return len;
}

function suggestOver(div_value) {
	div_value.className = "suggest_link_over";
}

function suggestOut(div_value) {
	div_value.className = "suggest_link";
}

function setSearch(obj) {
	if (market != "HK" && market != "US") {
		setMarket(obj.split('&nbsp;&nbsp;&nbsp;')[0].substring(0, 2));
	}
	if (selectIndex==0){
		document.getElementById("IDStock" + subidstr).value = obj
			.split('&nbsp;&nbsp;&nbsp;')[0].substring(3);
		}else{
			document.getElementById("IDStock" + subidstr).value = obj
			.split('&nbsp;&nbsp;&nbsp;')[0].substring(2);
			}
	
	closeSearch();
	// document.getElementById("IDStock"+subidstr).focus();
}

function closeSearch() {
	document.getElementById("search_suggest" + subidstr).style.display = 'none';

}

function showSearch() {
	document.getElementById("search_suggest" + subidstr).style.display = '';
}

function outOfSuggest() {
	if(itemCount>=0)
		{
		if (selectIndex < 0)
			selectIndex = 0;
		if (selectIndex >= 0 && selectIndex <= itemCount)
			setSearch(document.getElementById("suggest" + selectIndex).innerHTML);
		else
			closeSearch();
	  }
}
function getMarket() {
	var obj;
	obj = document.getElementsByName("market" + subidstr);// radio check
	if (obj != null) {
		var i;
		for (i = 0; i < obj.length; i++) {
			if (obj[i].checked) {// selected
				return obj[i].value;
			}
		}
	}
	obj = document.getElementById("market" + subidstr);// select option
	if (obj != null) {
		if (obj.options)
			return obj.options[obj.selectedIndex].value;

	}
}
function setMarket($mark) {// only use for sz000001
	var obj;
	obj = document.getElementsByName("market" + subidstr);// radio check
	if (obj != null) {
		var i;
		for (i = 0; i < obj.length; i++) {
			if (obj[i].checked) {// selected
				obj[i].value = $mark;
			}
		}
	}
	obj = document.getElementById("market" + subidstr);// select option
	if (obj != null) {
		if (obj.options)
			obj.options[obj.selectedIndex].value = $mark;

	}
}

function init() {
	var searchinput = document.getElementById("IDStock" + subidstr);
	var w = searchinput.offsetWidth;
	var h = searchinput.offsetHeight;
	var t = searchinput.offsetTop;
	var l = searchinput.offsetLeft;
	var d = document.getElementById("search_suggest" + subidstr);
	d.style.border = "1px solid #000";
	d.style.background = "#FFFFFF";
	d.style.position = "absolute";
	d.style.left = l + "px";
	d.style.top = (t + h) + "px";
}

function searchCommit(){
	outOfSuggest();
	document.getElementById("stockinputform").submit();
}
function deleteStockByIDPortfolio(IDPortfolio){
	var url = "portfolio_delete_action.php?IDPortfolio="+IDPortfolio;
	window.location = url;
}

function categorySelect(Category) {
		var url = '?IDCategory='+Category.options[Category.selectedIndex].value;
		window.location = url;
}

function categoryAdd() {
	var name = document.getElementById("CategoryName");
	var functionCategoryAdd = function() {
	var url = "category_add_action.php?name="+encodeURI( name.value);
	window.location = url;
	};

	if (name.value == '') {
		alert('请输入分类名!');
		return;
	}
	var pattern = /^[a-zA-Z0-9]\w+$/;
	if(pattern.test(name)){
		if(name.value.length >10){
			alert('分类名最多为10个中文字符!');
			return;
		}
	}
	else if(name.value.length >20){
		alert('分类名最多为20个英文字符!');
		return;
	}
	var Category = document.getElementById("Category");
	for(var i=0;i<Category.options.length;i++){
		if(Category.options[i].text == name.value.replace(/(^[\s]*)|([\s]*$)/g, "")) {
			alert('你的分类组已有该分类名!');
			return ;
		}
	}
	functionCategoryAdd();
}

function categoryDelete(num) {
	var cid = document.getElementById("Category");
	var functionCategoryDelete = function() {
		var url = "category_delete_action.php";
		window.location = url;
	};
	if(num > 0){
			alert("该投资组合还有股票!");
		}
	else {
		functionCategoryDelete();
	}
}

function categoryRename() {
	var cid = document.getElementById("Category");
    var name = document.getElementById("CategoryName");
	for(var i=0;i<cid.options.length;i++)
	{
		if(cid.options[i].text == name.value.replace(/(^[\s]*)|([\s]*$)/g, "")) {
			alert('你的分类组已有该分类名!');
			return ;
		}
	}
	var name = document.getElementById("CategoryName");
	var pattern = /^[a-zA-Z0-9]\w+$/;
	if(pattern.test(name)){
		if(name.value.length > 10){
			alert('分类名最多为10个中文字符!');
			return;
		}
	}
	else if(name.value.length >20){
		alert('分类名最多为20个英文字符!');
		return;
	}
	if(name.value == ""){
		name.value = cid.options[cid.selectedIndex].text;
	}
	else{
		var url = 'category_rename_action.php?name='+encodeURI(name.value);
		window.location = url;
	}
}
function checkdform(form){
	if(form.sid.value == ""){
	    alert("代码不能为空!");
	    return false;
    }
	return true;
}

//转换器，将列的字段类型转换为可以排序的类型：String,int,float
function convert(sValue, sDataType) {
	switch(sDataType) {
		case "int":
			return parseInt(sValue);
		case "float":
			return parseFloat(sValue);
		case "date":
			return new Date(Date.parse(sValue));
		default:
			return sValue.toString();
	}
}

//排序函数产生器，iCol表示列索引，sDataType表示该列的数据类型
function generateCompareTRs(iCol, sDataType)
{
	return  function compareTRs(oTR1, oTR2)
	{
		var vValue1=0;
		var vValue2=0;
		vValue1 = convert(oTR1.cells[iCol].innerText, sDataType);
		vValue2 = convert(oTR2.cells[iCol].innerText, sDataType);
		//alert(oTR1.cells[iCol].innerText);
		if (vValue1 < vValue2) {
			return -1;
		} else if (vValue1 > vValue2) {
			return 1;
		} else {
			return 0;
		}
	};
}

//排序方法
function sortTable(sTableID, iCol, sDataType) {
	
	var oTable = document.getElementById(sTableID);
	var oTBody = oTable.tBodies[0];
	
	var colDataRows = oTBody.rows;
	var aTRs = new Array;
	
	//将所有列放入数组
	for (var i=0; i < colDataRows.length; i++) {
		aTRs[i] = colDataRows[i];
	}
	 
	//判断最后一次排序的列是否与现在要进行排序的列相同，是的话，直接使用reverse()逆序
	if (oTable.sortCol == iCol) {
		aTRs.reverse();
	} else {
		//使用数组的sort方法，传进排序函数
		aTRs.sort(generateCompareTRs(iCol, sDataType));
	}

	var oFragment = document.createDocumentFragment();
	for (var i=0; i < aTRs.length; i++) {
		oFragment.appendChild(aTRs[i]);
	}

	oTBody.appendChild(oFragment);
	//记录最后一次排序的列索引
	oTable.sortCol = iCol;
}
