(function($){
	$.fn.menuModel2=function(setting)
	{
		var root =$(this);
		var tempMenus;
		var defaults = {
			model:1,
			parentYN:true,
			childYN:true,
			defaultLightMoveYN:true,
			target_obj:'#lnb',
			visibled:'',
			subVisibled:'',
			ssubVisibled:'',
			activeClass:'hover',
			showspeed:1000,
			hidespeed:0,
			imgOn:'_on.gif',
			imgOff:'.gif',
			showOps:{visibility:'visible'},
			hideOps:{visibility:'hidden'},
			hightLight:{level_1:0,level_1_obj:'',level_2:0,level_2_obj:'',level_3:0,level_3_obj:''}
		};
		setting = $.extend(defaults,setting||{});

		function initParent(menus){
			$.each(menus,function(i){
				this._type=1;
				this._id=i+1;
				this._parent=-1;
				if($('>ul>li>a',this.parentNode).size()>0){initSubMenu($('>ul>li>a',this.parentNode).get(),2,this._id)}
			});				
		}
		
		function initSubMenu(subMenus,level,parent_id){
			$.each(subMenus,function(i){
				this._type=level;
				this._id=i+1;
				this._parent=parent_id;
				if($('>ul>li>a',this.parentNode).size()>0){initSSubMenu($('>ul>li>a',this.parentNode).get(),3,this._id)}
			});			
		}

		function initSSubMenu(ssubMenus,level,parent_id){
			$.each(ssubMenus,function(i){
				this._type=level;
				this._id=i+1;
				this._parent=parent_id;
			})
		}

		function rplks(str,keywords,newkey) {
			var patt=new RegExp(eval("/"+keywords+"/g"));
			if(patt.exec(str)!= null){
				var str=str.replace(patt,newkey);
			}
			return str;
		}
		
		function replaceImg(aObj,imgOld,imgNew){
			if($('>img',aObj).length>0){
				$('>img',aObj).attr('src',rplks($('>img',aObj).attr('src'),imgOld,imgNew));
			}
		}

		function activeMenu(aObj){			
			if(setting.visibled&&setting.visibled._id!=aObj._parent){blurMenu(setting.visibled)}
			if(setting.subVisibled&&setting.subVisibled._parent!=aObj._id){blurMenu(setting.subVisibled)}
			
			$(aObj).addClass(setting.activeClass);

			if(setting.model==1){
				if(setting.parentYN){
					replaceImg(aObj,setting.imgOff,setting.imgOn)
				}
			}
			
			$('+ul',aObj).css(setting.showOps);
			
			setting.visibled=aObj;
		}

		function activeSubMenu(aObj){
			if(setting.subVisibled){blurMenu(setting.subVisibled)}
			
			$(aObj).addClass(setting.activeClass);
			if(setting.model==1){
				if(setting.childYN){
					replaceImg(aObj,setting.imgOff,setting.imgOn)
				}
			}			
			$('+ul',aObj).css(setting.showOps);
			setting.subVisibled=aObj;
		}

		function activeSSubMenu(aObj){
			if(setting.ssubVisibled){blurMenu(setting.ssubVisibled)}
			$(aObj).addClass(setting.activeClass);
			if(setting.model==1){
				if(setting.childYN){
					replaceImg(aObj,setting.imgOff,setting.imgOn)
				}
			}
			setting.ssubVisibled=aObj;
		}

		function blurMenu(aObj){
			$(aObj).removeClass(setting.activeClass);
			$('+ul',aObj).css(setting.hideOps);
			if(setting.model==1){replaceImg(aObj,setting.imgOn,setting.imgOff)}
		}
		function bindEvent(){
			var nondes =root[0].getElementsByTagName('a');
			
			$.each(root[0].getElementsByTagName('a'),function(i){
				switch(this._type){
					case 1:								
						this.onclick=function(){activeMenu(this)};						
						break;
					case 2:						
						this.onmouseover=function(){activeSubMenu(this)};
						this.onfocus=function(){activeSubMenu(this)};
						break;
					case 3:						
						this.onmouseover=function(){activeSSubMenu(this)};
						this.onfocus=function(){activeSSubMenu(this)};
						break;
					default:
						break;							
				}

				if(this._type==1&&this._id==setting.hightLight.level_1){
					setting.hightLight.level_1_obj=this;
				}else if(this._type==2&&this._parent==setting.hightLight.level_1&&this._id==setting.hightLight.level_2){
					setting.hightLight.level_2_obj=this;
				}else if(this._type==3&&this._parent==setting.hightLight.level_2&&this._id==setting.hightLight.level_3){
					setting.hightLight.level_3_obj=this;
				}
			});
		}

		function bindModel2Event(){
					var nondes =root[0].getElementsByTagName('a');
					
					$.each(root[0].getElementsByTagName('a'),function(i){
						if(this._type==1&&this._id==setting.hightLight.level_1){
							setting.hightLight.level_1_obj=this;
						}else if(this._type==2&&this._parent==setting.hightLight.level_1&&this._id==setting.hightLight.level_2){
							setting.hightLight.level_2_obj=this;
						}else if(this._type==3&&this._parent==setting.hightLight.level_2&&this._id==setting.hightLight.level_3){
							setting.hightLight.level_3_obj=this;
						}
					});
				}

		function setActiveMenu(){
			if(setting.hightLight.level_1){
				$.each(root[0].getElementsByTagName('a'),function(i){
					blurMenu(this);
				});
				if(setting.hightLight.level_1_obj){
					activeMenu(setting.hightLight.level_1_obj)
					if(setting.hightLight.level_2_obj){
						activeSubMenu(setting.hightLight.level_2_obj);
						if(setting.hightLight.level_3_obj){
							activeSSubMenu(setting.hightLight.level_3_obj)
						}
					}
				}
			}else{
				$.each(root[0].getElementsByTagName('a'),function(i){
					blurMenu(this);
				});
			}
		}
		
		function rootBlur(){
			$(setting.target_obj).hover(function(){},function(){
				if(setting.visibled){
					blurMenu(setting.visibled);
					if(setting.hightLight.level_1_obj){
						activeMenu(setting.hightLight.level_1_obj)
						if(setting.subVisibled){
							blurMenu(setting.subVisibled);
							if(setting.hightLight.level_2_obj){
								activeSubMenu(setting.hightLight.level_2_obj)
								if(setting.ssubVisibled){
									blurMenu(setting.ssubVisibled);
									activeSSubMenu(setting.hightLight.level_3_obj);
								}
							}

						}
					}
				}
			});
		}

		function initMenu(){			
			initParent($('>li>a',root).get());
			bindEvent();
			setActiveMenu();
			rootBlur();
		}
		
		function initModel2(){
			initParent($('>li>a',root).get());
			bindModel2Event();
			setActiveMenu();
			 rootBlur();
		}

// select model init model2 is hightLight
		switch(setting.model){
			case 1:
					initMenu();
					break;
			case 2:
					initModel2();
					break;
		}

	}	
})(jQuery)
