//**********************************************************************
//Name of File     : WASce.js
//Author           : Infosys
//Class Definition : This file contains the implementation of Javascript 
//                   navigation implementation through JQuery
//Create date      : 04/07/2009
//Modification log:
//Date(mm/dd/yyyy)   Author            Issue_ID         Description
//04/07/2009         Infosys                            Created file 
//***********************************************************************/


var $j = jQuery.noConflict();
$j.sce = {            
            addNavHover:    function(el){
                el.addClass('hover');
                if (document.getElementById("GlobalNavArr") != null)
                {
                    arrNav = document.getElementById("GlobalNavArr").value.split(";");
                    for (var i=0; i<arrNav.length; i++)
                    {   
                        if (el.hasClass(arrNav[i]))
                        {                    
                            el.addClass(arrNav[i] + 'Hover');
                        }
                    }
                }                                
            },
            removeNavHover: function(el){
                el.removeClass('hover');
                if (document.getElementById("GlobalNavArr") != null)
                {
                    arrNav = document.getElementById("GlobalNavArr").value.split(";");
                    for (var i=0; i<arrNav.length; i++)
                    {   
                        if (el.hasClass(arrNav[i]))
                        {                    
                            el.removeClass(arrNav[i] + 'Hover');
                        }
                    }
                }
            }
         }


 $j(function() { 
        var status = "first"; 
        var proceed = true;
    //same page linking
    ///////////////////
        function filterPath(string) {
            return string
                .replace(/^\//,'') 
                .replace(/(index|default).[a-zA-Z]{3,4}$/,'') 
                .replace(/\/$/,'');
        }    
      
        $j('a[href*=#]').each(function() {
            if ( filterPath(location.pathname) == filterPath(this.pathname)
            && location.hostname == this.hostname
            && this.hash.replace(/#/,'') ) {
                var $targetId = $j(this.hash), $targetAnchor = $j('[name=' + this.hash.slice(1) +']');
                var $target = $targetId.length ? $targetId : $targetAnchor.length ? $targetAnchor : false;
                if ($target) {
                    var targetOffset = $target.offset().top;
                    $j(this).click(function() {
                        $j('html, body').animate({scrollTop: targetOffset}, 400);

                    });
                }
            }
        });
    

        //Collapse Functionality
        ////////////////////////
        
            //create collapse anchors
            $j('#sidebar .sNav li.sNavMainLICollapsible .sNavMainSpan, #sidebar .sNav li.sNavSubLICollapsible .sNavSubSpan, #sidebar .sNav li.sNavThirdLICollapsible .sNavThirdSpan')
            //$j('#sidebar .sNav li.sNavMainLICollapsible .sNavMainSpan, #sidebar .sNav li.sNavSubLICollapsible .sNavSubSpan')
                .append('<a class="collapseAnchor" href="#1" title="Click to Expand Collapse Section"></a>');
            
            //hide non-current subnavs
                 //level 4
                $j('#sidebar .sNav li.sNavThirdLI')
                    .not('.sNavThirdLIActive')
                        .children('ul').hide();           
                        
                //level 3
                $j('#sidebar .sNav li.sNavSubLI')
                    .not('.sNavSubLIActive')
                        .children('ul').hide();
                //level 2
                $j('#sidebar .sNav li.sNavMainLI')
                    .not('.sNavMainLIActive')
                        .children('ul').hide();
        
            //add collapsing functionality       
            $j('#sidebar .sNav a.collapseAnchor')
                .click(function(e){
                    
                    var $span = $j(this).parent();
                    $span.siblings('ul').slideToggle('fast');
                    
                    var $li = $j($span.parent());                    
                    
                    if ($li.hasClass('sNavMainLICollapsible'))
                        $li.toggleClass('sNavMainLICollapsibleOpen');
                        
                    if ($li.hasClass('sNavMainLIActiveCollapsible'))
                        $li.toggleClass('sNavMainLIActiveCollapsibleOpen');
                        
                    if ($li.hasClass('sNavSubLICollapsible'))                    
                         $li.toggleClass('sNavSubLICollapsibleOpen');                             
                         
                        
                    if ($li.hasClass('sNavSubLIActiveCollapsible'))
                        $li.toggleClass('sNavSubLIActiveCollapsibleOpen');
                    
                    if ($li.hasClass('sNavThirdLICollapsible'))
                        $li.toggleClass('sNavThirdLICollapsibleOpen');
                        
                    if ($li.hasClass('sNavThirdLIActiveCollapsible'))
                        $li.toggleClass('sNavThirdLIActiveCollapsibleOpen');

                    e.stopPropagation();
                    return false;
                });
                
                
            /*$j('#sidebar .sNav li li li').mouseover(function(e){            
		    var $li = $j(this);                
		    if ($li.hasClass('sNavThirdLIExpand')){
			 if($li.children('ul:visible').size()==0){
			    $li.children('ul').slideToggle('fast');
			 }                                
		     }

		    if ($li.hasClass('sNavThirdLIActiveCollapsible')){
			if($li.children('ul:visible').size()==0){
			    $li.children('ul').slideToggle('fast');
			 }   
		     }
                e.stopPropagation();
                return false;
            });*/
           
            //collapse/expand all:
           $j('#sidebar .sNav1').after('<div  class="navExpander" ><ul><li><a href="#" id="ExpandAll" class="lnkExpandAll" alt=""></a></li><li class="last"><a href="#" id="CollapseAll" class="lnkCollapseAll" alt=""></a></li></ul></div>');
           
           if(document.getElementById("leftAreaID") != null)
           {
               var controlId = document.getElementById("leftAreaID").value;
           }
           
           /*if ((document.getElementById(controlId + "_ExpandAll") != null) && (document.getElementById(controlId + "_CollapseAll") != null))
           {*/
                if(document.getElementById('ExpandAll'))
                {
                    document.getElementById('ExpandAll').innerHTML= "+ Expand All";
                }
                if(document.getElementById('CollapseAll'))
                {
                    document.getElementById('CollapseAll').innerHTML= "- Collapse All";
                }    
           /*}          */
           
            $j('#sidebar .navExpander a.lnkExpandAll').click(function(e){
                $j('#sidebar .sNav ul').each(function(i){
                    var $li = $j(this).parent('li');
                    
                    if ($li.hasClass('sNavMainLICollapsible'))
                            $li.addClass('sNavMainLICollapsibleOpen');
                            
                        if ($li.hasClass('sNavMainLIActiveCollapsible'))
                            $li.addClass('sNavMainLIActiveCollapsibleOpen');
                            
                        if ($li.hasClass('sNavSubLICollapsible'))
                            $li.addClass('sNavSubLICollapsibleOpen');
                            
                        if ($li.hasClass('sNavSubLIActiveCollapsible'))
                            $li.addClass('sNavSubLIActiveCollapsibleOpen');
                            
                        if ($li.hasClass('sNavThirdLICollapsible'))
                            $li.addClass('sNavThirdLICollapsibleOpen');
                            
                        if ($li.hasClass('sNavThirdLIActiveCollapsible'))
                            $li.addClass('sNavThirdLIActiveCollapsibleOpen');
                            
                        $j(this).show('fast');    
                });
                e.stopPropagation();
                return false;
            });
        
        
            $j('#sidebar  .navExpander a.lnkCollapseAll').click(function(e){
                $j('#sidebar .sNav ul').each(function(i){
                    var $li = $j(this).parent('li');
                    
                    if ($li.hasClass('sNavMainLICollapsible'))
                            $li.removeClass('sNavMainLICollapsibleOpen');
                            
                        if ($li.hasClass('sNavMainLIActiveCollapsible'))
                            $li.removeClass('sNavMainLIActiveCollapsibleOpen');
                            
                        if ($li.hasClass('sNavSubLICollapsible'))
                            $li.removeClass('sNavSubLICollapsibleOpen');
                            
                        if ($li.hasClass('sNavSubLIActiveCollapsible'))
                            $li.removeClass('sNavSubLIActiveCollapsibleOpen');
                         
                        if ($li.hasClass('sNavThirdLICollapsible'))
                            $li.removeClass('sNavThirdLICollapsibleOpen');
                            
                        if ($li.hasClass('sNavThirdLIActiveCollapsible'))
                            $li.removeClass('sNavThirdLIActiveCollapsibleOpen');                            
                          
                        $j(this).hide('fast');    
                });
                e.stopPropagation();
                return false;
            });
                    
        //keyboard accessibility for menus
        //////////////////////////////////
       	    $j('#sidebar .sNav li.sNavFourthLI .sNavFourthSpan')             
	        .focus(function(){                
	            $j(this).addClass('sNavFourthSpanHover');	                 
	                })
	        .blur(function(){
	            $j(this).removeClass('sNavFourthSpanHover');
             });
             $j('#sidebar .sNav li.sNavThirdLI .sNavThirdSpan')             
                .focus(function(){                
                    $j(this).addClass('sNavThirdSpanHover');
                 
                })
                .blur(function(){
                    $j(this).removeClass('sNavThirdSpanHover');
                });
                
            $j('#sidebar .sNav li.sNavSubLI .sNavSubSpan')
                .focus(function()
                {
                    $j(this).addClass('sNavSubSpanHover');
                  
                })
                .blur(function()
                {
                    $j(this).removeClass('sNavSubSpanHover');
                });
                
            $j('#sidebar .sNav li.sNavMainLI .sNavMainSpan')
                .focus(function()
                {
                    $j(this).addClass('sNavMainSpanHover');
                  
                })
                .blur(function()
                {
                    $j(this).removeClass('sNavMainSpanHover');
                });    
                $j('.actionButton')
                    .hover(
                        function(){
                            $j(this).addClass('actionButtonHover');
                         
                        }, 
                        function(){
                            $j(this).removeClass('actionButtonHover');
                        }
                    )
                    .focus(
                        function(){
                            $j(this).addClass('actionButtonHover');
                        }
                     )
                     .blur(
                        function(){
                            $j(this).removeClass('actionButtonHover');
                        }
                     );
        
            $j('.nav ul.mNav li.mNavMainLI a')
    
            	.keydown(function(e){             	    
					var evt=(e)?e:(window.event)?window.event:null;	
					var browserName=navigator.appName;
					var IsbrowserIE = true;
					if (browserName=="Netscape"){		
						IsbrowserIE = false;
						//first element
						var l = evt.currentTarget.id.substring(0,1);
						//elements second
						var d = evt.currentTarget.id.substring(1,2);
						//elements except first
						var v = evt.currentTarget.id.substring(2);		
					}
					else if (browserName=="Microsoft Internet Explorer"){
						IsbrowserIE = true;
						//first element
						var l =window.event.srcElement.id.substring(0,1);
						//second element
						var d=window.event.srcElement.id.substring(1,2);
						//elements except first
						var v=window.event.srcElement.id.substring(2);
					}
					//code to stop multiple dropdowns and keyboard operation on mouseover
					if(status !="first"){
						if(status !="key"){
							if(status =="mouse"){				
								proceed = false;
								if(evt){
									var keynum=(evt.charCode)?evt.charCode:
										((evt.keyCode)?evt.keyCode:((evt.which)?evt.which:0));
									if(keynum == "39" ||keynum == "37" ||keynum == "40" ||keynum == "38" || keynum == "9"){
										if (evt.stopPropagation){			
													evt.stopPropagation();
													evt.preventDefault();
												}
										else{
											evt.cancelBubble = true;
											evt.returnValue = false;
										}							
										if(keynum == "9"){
											proceed = true;
											if(IsbrowserIE){
												document.body.focus();
	            								
											}
											else{
											
												evt.currentTarget.blur();								
											}								
										}
									}
								}				
							}
						}
					}
		
					if(evt ){
						if(proceed){
							var keynum=(evt.charCode)?evt.charCode:((evt.keyCode)?evt.keyCode:((evt.which)?evt.which:0));				
							if(keynum==40){
								//check if the event is fired from parent menu 
								//set focus on first sub menu of parent menu
								if(l=="L"){
									var FirstSubMenuItem =	"T"+d+"1";
									//if the first item exist set focus on it else do nothing
									if(document.getElementById(FirstSubMenuItem)){
										document.getElementById(FirstSubMenuItem).focus();						
									}
								}
								//if the event is fired from a sub menu
								//set focus on the next sub menu item			
								else{
									var nextItem= parseInt(v)+1;
									//check if the next item exists, if it exists set focus on it
									if (document.getElementById(l+d+nextItem)){				
										document.getElementById(l+d+nextItem).focus();				
									}
									//if the next item does not exist set focus on first item
									else{
										if(document.getElementById(l+d+1)){
											document.getElementById(l+d+1).focus();
										}
									}			
								}
							}
							else if(keynum==38){
								//if the event is fired from a sub menu item do this
								//else if the event is fired from a menu item
								//donot do anything
								if(l!="L"){
									var prevItem= parseInt(v)-1;
									//If prevItem exists set focus on it
									if (document.getElementById(l+d+prevItem)){				
										document.getElementById(l+d+prevItem).focus();
									}
									else{
									//if prev item doesnot exist set focus on the parent menu 
										var IDofMainMenu =  "L"+d; 			
										if(document.getElementById(IDofMainMenu)){
											document.getElementById(IDofMainMenu).focus();
										}
									}				
								}
								else{
									//if event is fired from the main menu
									//set focus on the last sub menu item			
									var i=1;
									//finding last menu item
									while(document.getElementById("T"+d+i)){
										i++;
									}
									var j = i-1;
									if(document.getElementById("T"+d+j)){
										document.getElementById("T"+d+j).focus();
									}					            
								}
							}
							else if(keynum==39){
								//if event is fired from a main menu set focus on 
								//next main menu
								if(l=="L"){
									var nextItem= parseInt(d)+1;
									//if next item exits then set focus on it
									if(document.getElementById(l+nextItem)){
										document.getElementById(l+nextItem).focus();
									}
									//if no more items exists set focus on first item
									else{
										document.getElementById("L"+"1").focus();
									}
								}
								//else if event is fired from a sub menu
								//set focus on next parent menu
								else{
									var IndexofNextMainMenu = parseInt(d)+1;
									//if next main menu exists set focus on it else
									if(document.getElementById("L"+IndexofNextMainMenu)){
										document.getElementById("L"+IndexofNextMainMenu).focus(); 
									}
									else{
										//set focus on the first main menu
										if(document.getElementById("L"+1)){
											document.getElementById("L"+1).focus();
										}
									}
								}
							}
							else if(keynum==37){
								//if event is fired from main menu
								//set focus on the prev main menu
								if(d=="L"){
									var prevItem= parseInt(v)-1;
									if(document.getElementById(l+d+prevItem)){
										document.getElementById(l+d+prevItem).focus();
									}
									//if no prev main menu exists set focus on last main menu
									else{
										document.getElementById("L"+"7").focus();
									}
								}
				            else{
				            //if current focus is on a sub menu
				            //get the index of the previous main menu and set focus
					            var IndexofNextMainMenu = parseInt(d)-1;
					            if(document.getElementById("L"+IndexofNextMainMenu)){
						            document.getElementById("L"+IndexofNextMainMenu).focus(); 
					            }
					            //if focus is on the sub menu of the first menu i.e. the
					            //prev main menu does not exist
					            //set focus on the last menu
					            else{
						            document.getElementById("L"+"7").focus();
					            }		
            					
				            }
			            }
            			
			            if(keynum == "40" || keynum == "38" || keynum == "39" || keynum == "37"){
				            if (evt.stopPropagation){			
					            evt.stopPropagation();
					            evt.preventDefault();
				            }
				            else{
					            evt.cancelBubble = true;
					            evt.returnValue = false;
				            }
			            }
				        proceed= true;
	                    status="key";					
		            }            		
	            }

            })

                .focus(function(){                
                    var $parent = $j(this).parents('li.mNavMainLI');                        
                    $j.sce.addNavHover($parent);             
                    $j(this).addClass('hover');
                    
                })   
                .blur(function(){
              
                    var $parent = $j(this).parents('li.mNavMainLI');
                    $j.sce.removeNavHover($parent);            
                    $j(this).removeClass('hover');
                })
                .click(function(){            
                    var $parent = $j(this).parents('li.mNavMainLI');
                    $j.sce.removeNavHover($parent); 
                    $j(this).removeClass('hover');           
                })
               
               .mouseover(function(e){
	                status="mouse";
	                var evt=(e)?e:(window.event)?window.event:null;
	                var browserName=navigator.appName;	
	                if (browserName=="Netscape"){ 
		                IsbrowserIE = false;
	                }
	                else if (browserName=="Microsoft Internet Explorer"){
		                IsbrowserIE = true;
	                }	
                    var $parent = $j(this).parents('li.mNavMainLI');
                    $j.sce.removeNavHover($parent.siblings());   
                })

                .mouseout(function(e){
                    status="first";
                    var evt=(e)?e:(window.event)?window.event:null;               
	                var browserName=navigator.appName;
	                if (browserName=="Netscape"){ 
                        IsbrowserIE = false;
                        //elements except first
                        var d = evt.currentTarget.id.substring(0,1);
                        //elements except first
                        var v = evt.currentTarget.id.substring(1);
                    }
                    if(document.getElementById(d+v)){
                    if(!IsbrowserIE){
                        document.getElementById(d+v).blur();
                        }
                    }

                });

   

            $j('.nav ul.mNav ')
            .mouseover(function(e){ 
            status="mouse";

            var evt=(e)?e:(window.event)?window.event:null;               
	            var browserName=navigator.appName;
	            if (browserName=="Netscape"){
                    var d = evt.currentTarget.id;
                }
            if (browserName=="Microsoft Internet Explorer"){
		            var d=window.event.srcElement.parentElement.parentElement.id;
		            if (d != null)
		                 d=window.event.srcElement.parentElement.parentElement.id.substring(0,1); 
                }
                if(d == "L")
                 {
                 window.event.srcElement.parentElement.parentElement.focus();
                 
                 }
            })
            .mouseout(function(e){ 
            status="first";
            });               
   
            if($j.browser.msie && $j.browser.version < 7)
            {              
                $j('.nav ul.mNav li.mNavMainLI')
                    .hover(
                        function(){
                            var $this = $j(this);
                            $j.sce.addNavHover($this); 
                        }, 
                        function() {
                            var $this = $j(this);
                            $j.sce.removeNavHover($this);                     
                        }
                    );
                    
                $j('.actionButton')
                    .hover(
                        function(){
                            $j(this).addClass('actionButtonHover');
                         
                        }, 
                        function(){
                            $j(this).removeClass('actionButtonHover');
                        }
                    )
                    .focus(
                        function(){
                            $j(this).addClass('actionButtonHover');
                        }
                     )
                     .blur(
                        function(){
                            $j(this).removeClass('actionButtonHover');
                        }
                     );
                
                $j('#sidebar .sNav li.sNavMainLI .sNavMainSpan')
                    .hover(                        
                        function()
                        {
                            $j(this).addClass('sNavMainSpanHover');
                         
                        },
                        function(){
                            $j(this).removeClass('sNavMainSpanHover');
                        }
                    );
                  $j('#sidebar .sNav li.sNavMainLI .sNavMainSpan a')
                  .focus(
                        function(){
                          
                           $j(this.parentElement).addClass('sNavMainSpanHover');
                         
                        }
                     ).blur(
                        function(){
                          
                           $j(this.parentElement).removeClass('sNavMainSpanHover');
                         
                        }
                     );
                 
                 
                $j('#sidebar .sNav li.sNavSubLI .sNavSubSpan')
                    .hover(                        
                        function(){
                            $j(this).addClass('sNavSubSpanHover');

                        },
                        function(){
                            $j(this).removeClass('sNavSubSpanHover');
                        }
                    );
                    
                 $j('#sidebar .sNav li.sNavSubLI .sNavSubSpan a')
                  .focus(
                        function(){
                         
                          $j(this.parentElement).addClass('sNavSubSpanHover');
                         
                        }
                     ).blur(
                        function(){
                          
                           $j(this.parentElement).removeClass('sNavSubSpanHover');
                         
                        }
                     );
                    
                $j('#sidebar .sNav li.sNavThirdLI .sNavThirdSpan')
                    .hover(                        
                        function(){
                            $j(this).addClass('sNavThirdSpanHover');
                           
                        },
                        function(){
                            $j(this).removeClass('sNavThirdSpanHover');
                        }
                    );
                    
                     $j('#sidebar .sNav li.sNavThirdLI .sNavThirdSpan a')
                     .focus(
                        function(){    
                            $j(this.parentElement).addClass('sNavThirdSpanHover');                                                  
                        }
                     ).blur(
                        function(){
                         
                           $j(this.parentElement).removeClass('sNavThirdSpanHover');
                         
                        }
                     );
                    
                    
                $j('#sidebar .sNav li.sNavFourthLI .sNavFourthSpan')
                    .hover(                        
                        function(){
                        $j(this).addClass('sNavFourthSpanHover');
                        
                        },
                        function(){
                        $j(this).removeClass('sNavFourthSpanHover');
                        }
                    );  
                    
                    
                     $j('#sidebar .sNav li.sNavFourthLI .sNavFourthSpan a')
                    .focus(
                        function(){
                        
                          $j(this.parentElement).addClass('sNavFourthSpanHover');
                         
                        }
                     ).blur(
                        function(){
                         
                           $j(this.parentElement).removeClass('sNavFourthSpanHover');
                         
                        }
                     );
                                                                
            }    
 });