/*
 *下面是菜单数据呈现、生成和控位的javascript代码
 **/
var mzt_menu_f=true;
var mzt_menu_arr_div=new Array();
var mzt_menu_arr_div_h=new Array();
var mzt_menu_arr_div_f=new Array();
var mzt_menu_flg=false;
var mzt_menu_root_img='mzt_menu_arrow.gif';
var mzt_menu_item_width=150;
var mzt_menu_is_v=true;/*设置为false为垂直*/
function mzt_menu_get_nodes_li(index){
    var arr_menu=mzt_menu_data[index]['node'];
    var r_html='';
    var curr_html='';
    var class_name='';
    var item=new Array();
    var c_i=1;
    var len=arr_menu.length();
    var root_html='';
    for(var i=0;i<len;i++){    	
        root_html='';
        class_name="class='";
        item=arr_menu.get(i);
        if(c_i==1){
            class_name+='li_item_first';
        }
        else if(c_i==len){
            class_name+='li_item_last';
        }
        else
        {
            class_name+='li_item';
        }
        if(item['node'].length()>0){
            class_name+=" li_item_root";
            //root_html="<img src='"+mzt_menu_root_img+"' />";
        }
        class_name+="'";
        curr_html="<li "+class_name+" name='mzt_menu_li_p"+item['parent_id']+"_item' id='mzt_menu_li_p"+item['parent_id']+"_item' onmouseover=\"mzt_menu_show_menu(this,"+item['id']+");mzt_menu_item_over(this);\" ><a href='"+item['url']+"'><span>";
        curr_html+=item['name'];
        curr_html+=(root_html+"</span></a></li>");
        r_html+=curr_html;
        c_i++;    	
    }
    return r_html;
}

/**
 * 获取多少个上级（父类）
 */
function mzt_menu_get_parent_count(index){
    var count=0;
    while(mzt_menu_data[index]['parent_id']!=0)
    {
        index=mzt_menu_data[index]['parent_id'];
        count++;
    }
    return count;
}

/*
 *获取该元素的相对坐标
 **/
function mzt_menu_get_point(menu,index){
    var arr_point=new Array();
    arr_point['x']=0;
    arr_point['y']=0;
    if(mzt_menu_is_v){
        if(menu.parentNode!=null&&menu.parentNode.id=='mzt_menu_ul_menu_root'){
            arr_point['x']=mzt_menu_get_element_left(menu);
            arr_point['y']=mzt_menu_get_element_top(menu)+menu.offsetHeight;
        }else{
            arr_point['x']=mzt_menu_get_element_left(menu)+mzt_menu_item_width-10;
            arr_point['y']=mzt_menu_get_element_top(menu)+menu.offsetHeight-20;
        }
    }else{
        if(menu.parentNode!=null&&menu.parentNode.id=='mzt_menu_ul_menu_root'){
            arr_point['x']=mzt_menu_get_element_left(menu)+mzt_menu_item_width-2;
            arr_point['y']=mzt_menu_get_element_top(menu)+5;
        }else{
            arr_point['x']=mzt_menu_get_element_left(menu)+mzt_menu_item_width-10;
            arr_point['y']=mzt_menu_get_element_top(menu)+5;
        }
    }
    return arr_point;
}

function mzt_menu_get_element_left(element){
    var actual_left=element.offsetLeft;
    var current=element.offsetParent;
    while(current!==null){
        actual_left+=current.offsetLeft;
        current=current.offsetParent;
    }
    return actual_left;
}

function mzt_menu_get_element_top(element){
    var actual_top=element.offsetTop;
    var current=element.offsetParent;
    while(current!==null){
        actual_top+=current.offsetTop;
        current=current.offsetParent;
    }
    return actual_top;
}

/**
 * 输出子菜单
 */
function mzt_menu_write_nodes(index,id){
    var div=document.getElementById(id);
    div.innerHTML="<ul class='ul_menu_item'>"+mzt_menu_get_nodes_li(index)+"</ul>";
}

function mzt_menu_add_event(elm,ev_type,fn,use_capture) {
    if (elm.addEventListener) {
        elm.addEventListener(ev_type, fn, use_capture);//DOM2.0
    }
    else if (elm.attachEvent) {
        elm.attachEvent('on' + ev_type, fn);//IE5+
    }
    elm['on' + ev_type] = fn;//DOM 0
}

/**
 * 呈现特效
 */
function mzt_menu_show_effect(div,index)
{
    if(!mzt_menu_arr_div_f[index]){
        if(mzt_menu_data[index]['parent_id']==0){
        	if(document.getElementById("mzt_menu_li_p"+mzt_menu_data[index]['id']+"_item")){
            var row_h=document.getElementById("mzt_menu_li_p"+mzt_menu_data[index]['id']+"_item").offsetHeight;
            mzt_menu_arr_div_h[index]=document.getElementsByName("mzt_menu_li_p"+mzt_menu_data[index]['id']+"_item").length*row_h;
            div.style.height="0px";
            setTimeout(function(){
                mzt_menu_shell_show_effect_root(div,index);
            },1);
        	}
        }else{
            div.style.width="0px";
            setTimeout(function(){
                mzt_menu_shell_show_effect_item(div,index);
            },1);
        }        
    }    
}

function mzt_menu_shell_show_effect_root(div,index)
{
    if(div.offsetHeight<mzt_menu_arr_div_h[index]){
        div.style.height=div.offsetHeight+5+"px";
        mzt_menu_arr_div_f[index]=true;
        setTimeout(function(){
            mzt_menu_shell_show_effect_root(div,index);
        },10);
    }else{
		div.style.height=(mzt_menu_arr_div_h[index]+3)+"px";
        mzt_menu_arr_div_f[index]=false;
    }   
}

function mzt_menu_shell_show_effect_item(div,index)
{
    if(div.offsetWidth<mzt_menu_item_width){
        div.style.width=div.offsetWidth+10+"px";
        mzt_menu_arr_div_f[index]=true;
        setTimeout(function(){
            mzt_menu_shell_show_effect_item(div,index);
        },10);
    }else{
        div.className='div_menu_sub auto_row';
        mzt_menu_arr_div_f[index]=false;
    }
}

/**
 * 显示菜单层
 */
function mzt_menu_show_menu(me,index){
    mzt_menu_hide_menu_sub(index);
    if(mzt_menu_data[index]['node'].length==0){

        return;
    }
    var last_i=mzt_menu_get_parent_count(index);
    if(last_i>=mzt_menu_arr_div.length)
    {
        var new_div= document.createElement("DIV");
        new_div.className="div_menu_sub";
        new_div.id="mzt_menu_div_menu_sub_"+last_i;
        mzt_menu_add_event(new_div,'mouseout',function(){
            mzt_menu_m_out();
        },false);
        mzt_menu_add_event(new_div,'mouseover',function(){
            mzt_menu_m_over();
        },false);
        mzt_menu_arr_div[last_i]=new_div;
        document.body.appendChild(new_div);
    }
    var point=new Array();
    point=mzt_menu_get_point(me,index);
    var div_menu_sub=mzt_menu_arr_div[last_i];
    div_menu_sub.className='div_menu_sub';
    mzt_menu_write_nodes(index,div_menu_sub.id);
    mzt_menu_show_effect(div_menu_sub,index);
    div_menu_sub.style.top=point['y']+"px";
    div_menu_sub.style.left=point['x']+"px";    
}

function mzt_menu_m_out()
{
    mzt_menu_flg=false;
    setTimeout(mzt_menu_shell_time_is_close, 100);
}

function mzt_menu_m_over()
{
    mzt_menu_flg=true;
}

function mzt_menu_shell_time_is_close()
{
    if(!mzt_menu_flg)
    {
        mzt_menu_all_menu_hide();
    }
}

function mzt_menu_hide_menu_sub(index)
{
    var start_i=mzt_menu_get_parent_count(index);
    var end_i=mzt_menu_arr_div.length;
    for(;start_i<end_i;start_i++)
    {
        document.getElementById(mzt_menu_arr_div[start_i].id).className='div_hide';
    }
}

function mzt_menu_all_menu_hide()
{
    for(var key in mzt_menu_arr_div)
    {
        document.getElementById(mzt_menu_arr_div[key].id).className='div_hide';
    }
    mzt_menu_reset_root_class_name();
}

/**
 * 输出根菜单
 */
function mzt_menu_write_root_menu()
{	
    var arr_menu=mzt_menu_root_data;
    var r_html='';
    var curr_html='';
    var class_name='';
    var item=new Array();
	var tmp_len=arr_menu.length;
    for(var i=0;i<tmp_len;i++){
        item=arr_menu[i];
        class_name='class=';
        class_name+=("'li_menu'");
        if (i==0) {class_name+=' id="first_menu"';}
        curr_html="<li "+class_name+" onmouseover=\"mzt_menu_show_menu(this,"+item['id']+");mzt_menu_root_over(this);\" onmouseout=\"mzt_menu_m_out()\" ><a href='"+item['url']+"' ><span>";
        curr_html+=item['name'];
        curr_html+="</span></a></li>";
        r_html+=curr_html;
    }
    document.write("<ul id='mzt_menu_ul_menu_root' class='ul_menu_root'>"+r_html+"</ul>");
}

/**
 * 获取菜单项的原始类名
 */
function mzt_menu_get_item_class_name(t)
{
    var class_name=t.className;
    var k_i=class_name.indexOf(' ');
    var m_class_name=class_name;
    if(k_i>0)
    {
        m_class_name=class_name.substr(0,k_i);
        if(class_name.indexOf('li_item_root')>0)
        {
            m_class_name+=' li_item_root';
        }
    }
    if(m_class_name.indexOf('span_c')!=-1){
        m_class_name='li_item_last';
    }
    return m_class_name;
}

function mzt_menu_reset_root_class_name()
{
	return;
    var menus=document.getElementById('mzt_menu_ul_menu_root').childNodes;
    var len=menus.length;
    for(var i=0;i<len;i++){
        if(menus[i].className!='li_menu_curr n'){
            menus[i].className='li_menu';
        }
    }
}

function mzt_menu_root_over(t)
{
	return;
    mzt_menu_reset_root_class_name();
    if(t.className=='li_menu_curr n')return;
    t.className='li_menu_curr';
}

function mzt_menu_item_over(t)
{
    var items=document.getElementsByName(t.id);
    var len=items.length;
    var m_class_name='';
    for(var i=0;i<len;i++){
        m_class_name=mzt_menu_get_item_class_name(items[i]);
        if(m_class_name.indexOf('nf')!=-1){
            m_class_name=m_class_name.replace('nf','li_item_first');
        }
        else if(m_class_name.indexOf('nl')!=-1){
            m_class_name=m_class_name.replace('nl','li_item_last');
        }
        items[i].className=m_class_name;
    }
    m_class_name=mzt_menu_get_item_class_name(t);
    if(m_class_name.indexOf('li_item_first')!=-1){
        m_class_name=m_class_name.replace('li_item_first', 'nf');
    }
    else if(m_class_name.indexOf('li_item_last')!=-1){
        m_class_name=m_class_name.replace('li_item_last', 'nl');
    }
    t.className=m_class_name+' span_c';
}

mzt_menu_write_root_menu();
