/* Xml Menu
 * Version 1.0
 * Author The-Di-Lab
 * URI: http://www.The-Di-Lab.com
 * Released with the No MIT License:
 * But it is totally Free :-)
 */


			(function($) {
				
				 $.fn.xmenu = function (options) {
				    var defaults = {
			                url: null,
			                open: "all",
			                init: "all",
			                effect:"slide"
			            }			                
			        var options =  $.extend(defaults, options); 
			                   
					function UlItem (paraLabel) {	
						   //v1.1
						   var eff = options.effect;
						   //v.1.1
						   
						   var ulDom =  document.createElement("ul");  						   
						   var liDom =  document.createElement("li");   
						   var aDom = document.createElement("a");						 
						   
							   $(ulDom).addClass("xmenu-ul");
							   $(liDom).addClass("xmenu-li xmenu-title");
							   $(aDom).addClass("xmenu-a xmenu-link-title");
							  							   
							   $(aDom).append(paraLabel);
							   $(liDom).append(aDom);						   
							   $(ulDom).append(liDom);					 
                              
                              $(liDom).click(function() {
                                       if ($(this).siblings().css("display")==="none") {
                                        
                                         //v1.1
                                            if(eff=="fade"){
                                                $(this).siblings().fadeIn();
                                            } else {
                                                $(this).siblings().slideDown();
                                            }
                                         //v.1.1    
                                             
                                             if(options.open==="single") {
		                                        $(this).parent().siblings().each(function(){     
		                                                    
		                                                      //v1.1 extra animation option
					                                            if(eff=="fade"){
					                                                $(this).children().not(".xmenu-title").fadeOut();
					                                            } else {
					                                                $(this).children().not(".xmenu-title").slideUp();
					                                            }
					                                         //v.1.1  extra animation option   
		                                        });
		                                     }
		                                     
                                       } else {
                                            
                                                            //v1.1 extra animation option
                                                                if(eff=="fade"){
                                                                    $(this).siblings().fadeOut();
                                                                } else {
                                                                    $(this).siblings().slideUp();
                                                                }
                                                             //v.1.1  extra animation option  
                                            
                                             if(options.open==="single") {
                                                $(this).parent().siblings().each(function(){     
                                                             //v1.1 extra animation option
                                                                if(eff=="fade"){
                                                                   $(this).children().not(".xmenu-title").fadeOut();
                                                                } else {
                                                                   $(this).children().not(".xmenu-title").slideUp();
                                                                }
                                                             //v.1.1   extra animation option
                                                });
                                             }                                       
                                       }
                              });
                           
                              var closeOthers = function() {
                                        $(liDom).parent().siblings().each(function(){     
                                                 if ($(this).children().not(".xmenu-title").css("display") === "none") {
                                                            //v1.1 extra animation option
                                                                if(eff=="fade"){
                                                                   $(this).children().not(".xmenu-title").fadeOut();
                                                                } else {
                                                                   $(this).children().not(".xmenu-title").slideUp();
                                                                }
                                                             //v.1.1 extra animation option
                                                 }
                                        });
                              };
						   
						   return ulDom;
					 }		
					 function ListItem(paraLabel,paraUrl,status) {
						   var liDom =  document.createElement("li");   
						   var aDom = document.createElement("a");
						   		
						       if(status==="close") {
                                 $(liDom).css("display","none");
                               } else {
                                 $(liDom).css("display","block");
                               }
						       
						   	   $(aDom).attr("href",paraUrl);
						   	   $(aDom).css("text-decoration","none");
						   	   $(aDom).attr("target","_blank");
						   
						       $(liDom).addClass("xmenu-li xmenu-item");
							   $(aDom).addClass("xmenu-a xmenu-link-item");
							   
							   $(aDom).append(paraLabel);
							   $(liDom).append(aDom);						   
						   
						   
						   return liDom;					 
					 }
					 return this.each(function(){ 	
					  									           
					         var o = options;
					         //some validation
					           if(o.url===null) {
		                            alert("opps, please specify xml file name.");
		                            return false;
		                        }
					         //application logic 				 	 
						     var thisObj = this;
						 	  								  
						 	 $.ajax({
					                 type: "GET",
					                 url: o.url,
					                 //dataType: "xml",
					                 dataType: ($.browser.msie) ? "text" : "xml",
					                 beforeSend: function() {
						 		 			$(thisObj).text("Loading .......");
						 		 			  	 
						 	 		 },
					                 success: function(data) {		
					                  		  
					                  		  //Using the right MIME type
					                  		     var xml;
											     if (typeof data == "string") {
											       xml = new ActiveXObject("Microsoft.XMLDOM");
											       xml.async = false;
											       xml.loadXML(data);
											     } else {
											       xml = data;
											     }
					                  		  //Using the right MIME type
					                  		  	  			
					                  		  	  			
						 	 			 	$(thisObj).empty();
					                        $(xml).find('group').each(function(i){					                    	 
					                    	  
					                    		 	
					                    	 var title = $(this).find("title").text();
					                    	 var ulItem =  UlItem(title);
					                    	 		 
					                    	 		  //default openning menu 
					                    	 		  if(o.init=="all") {
					                    	 		     var status="open";
					                    	 		  }else if(i==o.init) {
					                    	 		     var status="open";					                    	 		     
					                    	 		  } else {
					                    	 		     var status="close";
					                    	 		  }
					                    	 		  
					                    	 		  
					                    	 		
					                    	 	 $(this).find("link").each(function() {
					                    	 		 
					                    	 		 var href = $(this).attr("href");
					                    	 		 var label = $(this).text();
					                    	 		 var listItem =  ListItem(label,href,status);
					                    	 		 
					                    	 		 $(ulItem).append(listItem);
					                    	 	 }); //close each
					                    	 		
					                    	 	 $(thisObj).fadeIn().append(ulItem);					                    	
					                
					                     }); //close each
					                 },
					                 ajaxError: function() {
					                 		alert('5');
					                 }
					             });
							  							  
					 });
					 
					 
				 };
			})(jQuery);
