/*
* 导航通用js
*/
//获取触发事件的对象
function topGetTarget(evt){
var t = evt.target || evt.srcElement;
try{
while(t && 3 == t.nodeType){
t = t.parentNode;
}
}catch(e){}
return t;
}
//添加绑定事件
function topAddEvent(el,evt,fn){
if(el.addEventListener){
el.addEventListener(evt,fn,false);
}else if(el.attachEvent){
el.attachEvent("on"+evt,fn);
}
}
//根据id获取html对象
function topGet(el,root){
if(!el){
return;
};
if (el && (el.nodeType || el.item)) {// 如果已经是 HTMLElement,那么就直接返回
return el;
}else{
var rt = root || document;
return rt.getElementById(el) ? rt.getElementById(el) : null;
}
}
//根据tab名获取html对象
function topGetByTag(tag,root){
return (topGet(root)|| document).getElementsByTagName(tag);
}
//添加class名
function topAddClass(el,cName){
var el = topGet(el);
if (!el || el.nodeType != 1) {
return;
};
el.className = [el.className,cName].join(' ');
}
//删除class名
function topRemoveClass(el,cName){
var el = topGet(el);
if (!el || el.nodeType != 1 || !cName) {
return false;
};
el.className = el.className.replace(cName, ' ');
}
//获取父级某个tag名的对象
function topGetParentByTag(el,tName){
var rootNode = el.ownerDocument;
var el = topGet(el).parentNode;
while(el!=rootNode && el.tagName != tName){
el = el.parentNode;
}
return el;
}
//获取第一个节点
function topGetFirst(el){
function _topGetNext(el){
do{
el = topGet(el).nextSibling;
}while(el && el.nodeType != 1);
return el;
}
el = topGet(el).firstChild;
return el && el.nodeType != 1 ? _topGetNext(el):el;
}
//显示顶部隐藏的内容
function topShowMore(){
try{
var e = arguments[0] || window.event;
var DL = topGetParentByTag(topGetTarget(e),'DL');
var DD = topGetByTag('dd',DL)[0];
if(!topGetFirst(DD)){
var sId = DL.id.toString();
var nId = sId.substring(sId.length-2,sId.length);
if(topGet('topContainer_'+nId) && topGet('topContainer_'+nId).innerHTML){
//判断是否存在对应的container内容，如果内容不存在直接退出
DD.innerHTML = topGet('topContainer_'+nId).innerHTML;
}else{
return;
}
}
DD.style.display = "block";
topAddClass(topGetByTag('dt',DL)[0],'on');
}catch(e){
return;
}
}
//隐藏顶部显示的内容
function topCloseMore(){
var e = arguments[0] || window.event;
var DL = topGetParentByTag(topGetTarget(e),'DL');
topGetByTag('dd',DL)[0].style.display = "none";
topRemoveClass(topGetByTag('dt',DL)[0],'on');
}
//点击搜索框去掉灰色提示
function inputChangeIn(){
var sI = topGetTarget(arguments[0] || window.event);
if(sI.value.substring(0,3) == '请输入'){
sI.value = '';
sI.style.color = '#000000';
}
}
//suggest
var SB_menuItemArray = new Array();
var SB_menuItemSelectIndex = -1;
var SB_isMenuShow = false;
var SB_m_pageSize = 10;
var SB_m_page = 1;
var sg_cache = new Object();
var SB_objInput = null;
var SB_ctrlObj = null;
var SB_ctrlMenuID = null;
var SB_timeDelay = 50;
var SB_keyword = null;
var SB_lastRequestTime=new Date().getTime() - SB_timeDelay;
var SB_doneSign=true;
var SB_G_ctrlObj = null;
var SB_G_ctrlMenuID = null;
var SB_Previous = null;
var SB_getInfor = "SB_getInfor";
function SB_canDoSign(){
var lastRequestTime_tmp = new Date().getTime();
if(lastRequestTime_tmp - SB_lastRequestTime > SB_timeDelay){
return true;
}else{
return false;
}
}
function SB_doTime_OnKeyUp(){
if(SB_ctrlObj != null && SB_ctrlMenuID != null && SB_doneSign){
var ctrlObj = SB_ctrlObj;
ctrlMenuID = SB_ctrlMenuID;
SB_ctrlObj	= null;
SB_ctrlMenuID = null;
SB_LoadMenuItemArray(ctrlObj, ctrlMenuID, true);
}
}
function SB_ShowMenu(ctrlObj, ctrlMenuID, show){
SB_objInput = ctrlObj;
var menu = document.getElementById(ctrlMenuID);
var ifrm = document.getElementById(ctrlMenuID + "_IFRAME");
if(show){
var btn = ctrlObj;
if(btn){
var x = btn.offsetLeft;
var y = btn.offsetTop;
menu.style.left = 4+"px";
menu.style.top = 24+"px";
}
menu.style.display = "block";
SB_isMenuShow = true;
var widthX = ctrlObj.offsetWidth
var heightX = menu.offsetHeight
menu.style.width = widthX - 2 + "px"
ifrm.style.width = widthX - 4 + "px"
ifrm.style.height = heightX - 2 + "px"
ifrm.style.top = menu.style.top;
ifrm.style.left = menu.style.left;
ifrm.style.display = "block";
try{
if(ctrlObj.getAttribute('showtracelog')&&ctrlObj.getAttribute('showtracelog')!=''){
aliclick(document, "?searchtrace=" + ctrlObj.getAttribute('showtracelog'));
}
}catch(e) {}
}else{
menu.style.display = "none";
ifrm.style.display = "none";
SB_isMenuShow = false;
SB_lastRequestTime -= SB_timeDelay;
}
}
function SB_OnDropDown(ctrlObj, ctrlMenuID){
SB_LoadMenuItemArray(ctrlObj, ctrlMenuID);
ctrlObj.focus();
}
function SB_OnBlur(ctrlObj, ctrlMenuID, event){
SB_ShowMenu(ctrlObj, ctrlMenuID, false);
SB_doneSign = false;
}
function SB_OnKeyDown(ctrlObj, ctrlMenuID, event){
if( event.keyCode == 24){
return false;
}else{
return true;
}
}
function SB_OnKeyUp(ctrlObj, ctrlMenuID, event){
if(navigator.userAgent.indexOf('Opera') >= 0){
return;
}
if (navigator.userAgent.indexOf("Firefox")>=0 ||document.readyState == "complete"||(event.keyCode == 13 && document.readyState == "loading")) {
var returnValue = false;
switch (event.keyCode) {
case 38: // UP
if (document.getElementById(ctrlMenuID).style.display == "block") {
SB_SetMenuItemSelectIndex("OFFSET", -1);
SB_RebuildMenuSelection(ctrlObj, ctrlMenuID);
SB_SelectMenuItem(ctrlObj, ctrlMenuID, 0);
}
break;
case 40: // DOWN
if (document.getElementById(ctrlMenuID).style.display == "block") {
SB_SetMenuItemSelectIndex("OFFSET", 1);
SB_RebuildMenuSelection(ctrlObj, ctrlMenuID);
SB_SelectMenuItem(ctrlObj, ctrlMenuID, 0);
}
break;
case 13: // Enter
SB_ShowMenu(ctrlObj, ctrlMenuID, false);
return;
case 24: // ESC
SB_ShowMenu(ctrlObj, ctrlMenuID, false);
break;
default:
SB_doneSign = true;
SB_LoadMenuItemArray(ctrlObj, ctrlMenuID);
returnValue = true;
break;
}
}
return returnValue;
}
function SB_SelectMenuItem(ctrlObj, ctrlMenuID,isSubmit){
var menu = document.getElementById(ctrlMenuID);
var menuItemList = menu.childNodes;
for (var i = 0; i < menuItemList.length; i++) {
if (i == SB_menuItemSelectIndex) {
ctrlObj.value = menu.childNodes[i].firstChild.innerHTML;
break;
}
}
if (isSubmit == 1) {
SB_SelectSubmit(ctrlObj, ctrlMenuID)
}
}
function SB_SelectSubmit(ctrlObj,ctrlMenuID){
if (ctrlObj.value != "") {
try {
SB_SuggestCallBack();
}
catch(e) {}
try {
if(ctrlObj.getAttribute('selecttracelog')&&ctrlObj.getAttribute('selecttracelog')!=''){
aliclick(document, "?searchtrace=" + ctrlObj.getAttribute('selecttracelog'));
}
}
catch (e) {}
SB_ShowMenu(SB_objInput, ctrlMenuID, false);
return false;
}
}
function SB_SetMenuItemSelectIndex(action, index){
if (action == "SET") {
SB_menuItemSelectIndex = index;
}
if (action == "OFFSET") {
SB_menuItemSelectIndex += index;
}
if (SB_menuItemSelectIndex < 0) {
SB_menuItemSelectIndex = SB_menuItemArray.length - 1;
}
if (SB_menuItemArray == null || SB_menuItemSelectIndex >= SB_menuItemArray.length) {
SB_menuItemSelectIndex = 0;
}
}
function SB_RebuildMenu(ctrlObj, ctrlMenuID){
var html = "";
var start = 0;
var isContent = 0;
if (SB_m_page <= 0) {
SB_m_page = 1;
}
var maxPage = parseInt((SB_menuItemArray.length + SB_m_pageSize - 1)/SB_m_pageSize);
if (SB_m_page > maxPage) {
SB_m_page = maxPage;
}
start = (SB_m_page - 1)* SB_m_pageSize;
for(var i= start; i<SB_menuItemArray.length && i < start + SB_m_pageSize; i++){
if (SB_menuItemArray[i][0].length <= 20) {
html += "<div";
html += " onmousedown=\"SB_SelectMenuItem(SB_objInput,'" + ctrlMenuID + "',1);\"";
html += " onMouseOver=\"SB_SetMenuItemSelectIndex('SET', " + i + "); SB_RebuildMenuSelection(this,'" + ctrlMenuID + "');\"";
html += " onBlur=\"return SB_ShowMenu(SB_objInput,'" + ctrlMenuID + "', true);\"";
html += " style=\"font-size:13px;padding:0 3px;\"><span style=\"float:left;\">";
html += SB_menuItemArray[i][0];
html += "</span><span style=\"float:right;font-size:12px;color:#009933;\">约 <span style=\"font-family:Arial; font-size:11px;\">" + formatDNum(formatSNum(SB_menuItemArray[i][1])) + "</span> 结果</span>";
html += "</div>";
isContent = isContent + 1;
}
}
html += "<div style='clear:both;height:1px;overflow:hidden;'></div>";
html += "<div style=\"float:right; color:#003CC8; text-decoration:underline; padding-right:5px;\">关闭</div>";
document.getElementById(ctrlMenuID).innerHTML = html;
SB_menuItemSelectIndex = -1;
return isContent;
}
function SB_RebuildMenuSelection(ctrlObj, ctrlMenuID){
var menu = document.getElementById(ctrlMenuID);
var menuItemList = menu.childNodes;
for(var i=0; i< menuItemList.length; i++){
if(i == SB_menuItemSelectIndex){
menuItemList[i].className = "MB_MenuSelectedItem";
}else{
menuItemList[i].className = "";
}
}
}
function SB_LoadMenuItemArray(ctrlObj, ctrlMenuID, timeDelay){
var v =ctrlObj.value;;
if(v ==""){
SB_ShowMenu(ctrlObj, ctrlMenuID, false);
return;
}
if( v.length >12){
SB_ShowMenu(ctrlObj, ctrlMenuID, false);
return;
}
if(!SB_canDoSign() || !SB_doneSign){
if(!timeDelay){
SB_ctrlObj = ctrlObj;
SB_ctrlMenuID = ctrlMenuID;
setTimeout("SB_doTime_OnKeyUp()", SB_timeDelay);
}
return;
}
SB_doneSign = false;
SB_menuItemArray = ""
if (typeof(sg_cache[v]) != 'undefined') {
SB_menuItemArray = sg_cache[v];
}
if(typeof(SB_menuItemArray) =="undefined" || SB_menuItemArray == ""){
SB_menuItemArray = null;
if(SB_Previous != v){
SB_LoadIt(ctrlObj, ctrlMenuID,v);
SB_Previous = v;
}else{
return;
}
}else if(SB_menuItemArray && SB_menuItemArray.length > 0){
showMenuNeeded = true;
var isShow = SB_RebuildMenu(SB_G_ctrlObj, SB_G_ctrlMenuID);
if (isShow > 0) {
SB_ShowMenu(SB_G_ctrlObj, SB_G_ctrlMenuID, true);
SB_Previous = v;
SB_doneSign = true;
}else{
SB_ShowMenu(SB_G_ctrlObj, SB_G_ctrlMenuID, false);
}
}
SB_lastRequestTime=new Date().getTime();
}
function SB_LoadIt(ctrlObj, ctrlMenuID, v){
if(ctrlObj == null || ctrlMenuID == null){
return;
}
SB_loadContent(ctrlObj, ctrlMenuID, v);
}
function SB_loadContent(ctrlObj, ctrlMenuID, keyword){
SB_G_ctrlObj = ctrlObj;
SB_G_ctrlMenuID = ctrlMenuID;
var str='http://suggest.china.alibaba.com/bin/suggest?type=saleoffer&q='+keyword;
SB_keyword = keyword;
if(navigator.userAgent.indexOf("Firefox") <= 0) {
if(!document.getElementById(SB_getInfor)) {
var s = document.createElement('SCRIPT');
s.src = str;
s.setAttribute("id", SB_getInfor);
document.body.appendChild(s);
}else {
document.getElementById(SB_getInfor).src = str;
}
}else{
var s=document.createElement('SCRIPT');
s.src=str;
document.body.appendChild(s);
}
}
function _roll_back_(){
if (SB_G_ctrlObj == null || SB_G_ctrlMenuID == null) {
return;
}
SB_onLoadCompleted();
}
function SB_onLoadCompleted(){
var showMenuNeeded = false;
if(_suggest_result_.result && _suggest_result_.result.length >0){
SB_menuItemArray = _suggest_result_.result;
if(SB_menuItemArray && SB_menuItemArray.length > 0){
showMenuNeeded = true;
sg_cache[SB_keyword] = SB_menuItemArray;
_suggest_result_.result = null;
}
}
if(showMenuNeeded){
var isShow = SB_RebuildMenu(SB_G_ctrlObj, SB_G_ctrlMenuID);
if (isShow > 0) {
SB_ShowMenu(SB_G_ctrlObj, SB_G_ctrlMenuID, true);
}else{
SB_ShowMenu(SB_G_ctrlObj, SB_G_ctrlMenuID, false);
}
}else{
SB_ShowMenu(SB_G_ctrlObj, SB_G_ctrlMenuID, false);
}
SB_doneSign = true;
SB_lastRequestTime=new Date().getTime();
}
function formatDNum(originalNum){
var str_originalNum = originalNum.toString();
var str_finalNum = " ";
var counter = 0;
var i;
for(i=str_originalNum.length-1;i>=0;i--){
str_finalNum = str_originalNum.charAt(i) +  str_finalNum;
counter++;
if(counter==3){
counter = 0;
if(i!=0){
str_finalNum = ","+str_finalNum;
}
}
}
return str_finalNum;
}
function formatSNum(originalNum){
var str_originalNum = originalNum.toString();
var str_finalNum =  Math.floor(originalNum/Math.pow(10,(str_originalNum.length-3)))*Math.pow(10,(str_originalNum.length-3));
return str_finalNum;
}
function SB_list_getLeft(obj){
var le = obj.offsetLeft;
while(obj=obj.offsetParent){
le+=obj.offsetLeft;
}
return le;
}
function SB_SuggestCallBack() {
try{
document.getElementById("search_submit").click();
}catch(e) {}
}
//初始化
function showTopNav(){
var obj = [topGet('top_t1'),topGet('top_t2'),topGet('top_t3'),topGet('top_t7'),topGet('top_t8')];
for(var i=0;i<obj.length;i++){
topAddEvent(obj[i],'mouseover',topShowMore);
topAddEvent(obj[i],'mouseout',topCloseMore);
}
}
function initAutoComplete(){
topAddEvent(topGet('search_input'),'blur',topBlur);
topAddEvent(topGet('search_input'),'keydown',topKeyDown);
topAddEvent(topGet('search_input'),'keyup',topKeyUp);
}
function topBlur(){
var e = arguments[0] || window.event;
SB_OnBlur(topGet('search_input'),'Banner_Menu', e);
}
function topKeyDown(){
var e = arguments[0] || window.event;
SB_OnKeyDown(topGet('search_input'),'Banner_Menu', e);
}
function topKeyUp(){
var e = arguments[0] || window.event;
SB_OnKeyUp(topGet('search_input'),'Banner_Menu', e);
}
function preventDefault(evt) {
if (evt.preventDefault) {
evt.preventDefault();
} else {
evt.returnValue = false;
}
}
