function sortArrayHtoL(a, b) { return b - a} 
function sortArrayLtoH(a, b) { return a - b} 

		
		function controller( buttonPressed )
		{   
			  formArray = document.getElementsByName("addToCartForm");
			  		  
			  if( formArray != null )	
			  { 
				  if( buttonPressed.match(/^date/) != null   )
					{    
                       rearrangeDom1( buttonPressed, formArray );
					} 
				  if( buttonPressed.match(/^HtoL|^LtoH/) != null   )
					{    
                       rearrangeDom1( buttonPressed, formArray );
					}     
				  if( buttonPressed.match(/^priority/) != null )
		            { 
		               rearrangeDom2( buttonPressed, formArray );             
		            }
				  if( buttonPressed.match(/^all|^purchased|^unpurchased/) != null )
		            { 
		               adjustDisplay( buttonPressed, formArray );             
		            }            
		
			  }	
		         
		}	
		
    	function rearrangeDom1( buttonPressed, formArray )//For date and price sorts.
    	{   
    		   var sortedValuesArray = new Array();
    		   var attributeName = buttonPressed.match(/^HtoL|^LtoH/) != null ? "price" : buttonPressed.match(/^date/) != null ? "dateAdded":"";
			 
			   if(	buttonPressed.match(/^date/) != null )	
			   {   
				   for( i=0; i<formArray.length;i++ )
				   {   
				      sortedValuesArray[i] = formArray[i].getAttribute(attributeName);
			       }
			       sortedValuesArray.sort(sortArrayHtoL);
			   }
			   if(	buttonPressed.match(/^HtoL/) != null )	
			   {   
				   for( i=0; i<formArray.length;i++ )
				   {
				       sortedValuesArray[i] = formArray[i].getAttribute(attributeName).replace(/\,/,"");
				   }  
				   sortedValuesArray.sort(sortArrayHtoL);
			   }
			   else if( buttonPressed.match(/^LtoH/) != null )
			   {	
				   for( i=0; i<formArray.length;i++ )
				   {			   
				     sortedValuesArray[i] = formArray[i].getAttribute(attributeName).replace(/\,/,"");
				   }
				   sortedValuesArray.sort(sortArrayLtoH);
			   }

			   counter= sortedValuesArray.length;
			   
			   
			   for( x=0; x < counter;x++ )
			   {   
				   for( i=0; i<counter;i++ )
				   { 
	                    if( ( buttonPressed.match(/^HtoL|^LtoH/) != null) ? formArray[i].getAttribute(attributeName).replace(/\,/,"") == sortedValuesArray[x] : formArray[i].getAttribute(attributeName) == sortedValuesArray[x] )
	                    {  
	                        var clone = formArray[i].cloneNode(true);
	                        document.getElementById(document.getElementById("wlallin")? "wlallin":"wlnoSort").appendChild(clone);
	                        formArray[i].setAttribute( attributeName, '0' );
	                        break;
	                    }
				   }
				   
			   }
			   
			   for(i = 0;i<formArray.length;)
			   {
                 
                 if( formArray[i].getAttribute(attributeName) == '0')
				 {  
				    formArray[i].parentNode.removeChild(formArray[i]);
				 }
                 else i++;  
			   }

			   var draggers = document.getElementsByName("wlsortdrag");
               for(i = 0;i<draggers.length;i++)
               {
                    draggers[i].style.display = "none";
               }    
    	}

    	function rearrangeDom2( buttonPressed, formArray )//For priority sort.
    	{      
    		  var wlnewlyAdded    = new Array();
		      var wlallin         = new Array();
		      var endOfGuestWishl = new Array(); 
		      var wlnoSort        = new Array();
		      var counter1=0;
		      for( i=0; i<formArray.length; i++)
		      {
                 counter1 = Number(formArray[i].getAttribute("priority")) > counter1 ? Number(formArray[i].getAttribute("priority")) : counter1;
		      }
		      counter1++;
		      
			          
		      var counter2 = formArray.length;
			  
		      for( i=0; i<counter1;i++   )
              {     
                for( x=0; x< counter2; x++  )  
                {     
	                if( formArray[x].getAttribute("priority") == i )
                    {   
                      var clone = formArray[x].cloneNode(true); 
                  
	                  if( buttonPressed=="priorityOwner" )
                      {          
                         if(i==0)
                         { 
                        	 wlnewlyAdded[wlnewlyAdded.length]= clone;
                        	 
                                            	 
	                     }
                         else
                         { 
                             
                        	 wlallin[wlallin.length] = clone;
	                     }      
                      }

                      if( buttonPressed=="priorityGuest" )  
                      {	 
                    	 if(i==0)
	                         { endOfGuestWishl[endOfGuestWishl.length] = clone;}
	                         else
	                         { wlnoSort[wlnoSort.length]= clone;} 
                      }
                         formArray[x].setAttribute("priority", "-1");
                      	
                   }
                        
                    	
                 }//End inner for
	                 
	           }//End outer for
                 
			   for(i = 0;i<formArray.length;)
			   {
                 
                 if( formArray[i].getAttribute("priority") == "-1")
				 {   
					  formArray[i].parentNode.removeChild(formArray[i]);
				 }
                 else i++;  
			   }
	           if( buttonPressed=="priorityOwner" )
	           {    
	        	   //alert("if statement");
				   for( y=0;y<wlnewlyAdded.length;y++)
					   document.getElementById( "wlnewlyAdded").appendChild(wlnewlyAdded[y]);
				   for( y=0,x=0;y<wlallin.length;y++)
					   {   
					     if(wlallin[y].style.display == "block") 
					     {
					    	 wlallin[y].getElementsByTagName("p")[0].innerHTML = x + 1;
					    	 x++;
					     }
					       wlallin[y].setAttribute("priority", y +1 ); 
						   document.getElementById( "wlallin").appendChild(wlallin[y]);
					       
					   }
				      
	           }	   
			   if( buttonPressed=="priorityGuest" )
			   {
				   for( y=0;y<wlnoSort.length;y++)
				       document.getElementById( "wlnoSort").appendChild(wlnoSort[y]);
				   for( y=0;y<endOfGuestWishl.length;y++)
					   document.getElementById( "wlnoSort").appendChild(endOfGuestWishl[y]);
			   }
			   
			   var draggers = document.getElementsByName("wlsortdrag");
               for(i = 0;i<draggers.length;i++)
               {
                  draggers[i].style.display = "block";
               }
                         
    	}//End rearrangeDom2

    	function adjustDisplay( buttonPressed, formArray )				
    	{
           var formArrayLength = formArray.length;	
           if(buttonPressed=="all")
           { 
               for( i=0;i<formArray.length;i++)
            	   formArray[i].style.display = "block";
               if(document.getElementById("priority").checked==true)
               {
                  rearrangeDom3( "0|1", formArray);     
               } 
               $("#wlallin").sortable("enable");
               $("#wlallin").sortable({
           		start: function(){$(".ajaxLayerCloseLink").click()},
           		stop: sortItems,
           		handle: ".wlsortdrag"
           	   });
           	   
               DWRHelper.adjustWishlistTotal(document.getElementById("listId").value , "all", function(data){ dwr.util.setValue("wishListTotal", data, {escapeHtml:false});});
        	   
           }
           else if(buttonPressed=="purchased")       
           {   
               var beginOfList = new Array();
               var endOfList = new Array();
        	   for( i=0;i<formArray.length;i++)  
               {  
                   if (formArray[i].getAttribute("status") == 0)
       	               formArray[i].style.display = "none";
                   else formArray[i].style.display = "block";   
               }
               if(document.getElementById("priority").checked==true)
               {
                  rearrangeDom3( "1", formArray);     
               }
               $("#wlallin").sortable("disable");
               DWRHelper.adjustWishlistTotal(document.getElementById("listId").value, "purchased", function(data){ dwr.util.setValue("wishListTotal", data, {escapeHtml:false});  });        
           } 
       	   else if(buttonPressed=="unpurchased")       
           { 
	      	   for( i=0;i<formArray.length;i++)  
	           { 
	               if (formArray[i].getAttribute("status") == 0)
	     	           formArray[i].style.display = "block";
	               else formArray[i].style.display = "none";  
	           }
	      	 if(document.getElementById("priority").checked==true)
             {	            
                rearrangeDom3( "0", formArray);     
             }
	      	$("#wlallin").sortable("disable");
	      	DWRHelper.adjustWishlistTotal(document.getElementById("listId").value, "unpurchased", function(data){ dwr.util.setValue("wishListTotal", data, {escapeHtml:false}); }); 
           }
        }

        function rearrangeDom3( status, formArray )//For rearranging only when clicking all, purchased, or unpurchased while priority is also checked.
        {     
        	  var zeroPriority        = new Array();
		      var aboveZeroPriority   = new Array();
		      
        	  var counter1=0;
		      for( i=0; i<formArray.length; i++)
		      {
                 counter1 = Number(formArray[i].getAttribute("priority")) > counter1 ? Number(formArray[i].getAttribute("priority")) : counter1;
		      }
		      counter1++;
		      var counter2 = formArray.length;			  
		      for( i=0; i<counter1;i++   )
              {     
	              for( x=0; x< counter2; x++  )  
	              {     
		              if( (formArray[x].getAttribute("priority") == i) && (formArray[x].getAttribute("status").match(status)!=null) )
	                  {   
	                    var clone = formArray[x].cloneNode(true); 
	                
		                   if(i==0)
	                       { 
		                	   
		                	   zeroPriority[zeroPriority.length]= clone;
		                   }
	                       else
	                       { 	                           
	                    	   aboveZeroPriority[aboveZeroPriority.length] = clone;
		                   }
		                   formArray[x].setAttribute("priority", "-1");      
	                  }
	              }//End inner for
               }//End outer for

              
               //Combine both arrays here
               var allShownForms = new Array();
               allShownForms = allShownForms.concat(aboveZeroPriority, zeroPriority);
               var priority = 1; 
               for( y=0;y<allShownForms.length;y++)
               {
                  if( allShownForms[y].getAttribute("priority") > 0 )
                  {
                      allShownForms[y].getElementsByTagName("p")[0].innerHTML = priority;
	                  document.getElementById( "wlallin").appendChild(allShownForms[y]);
	                  priority++;
                  }     
                  if( allShownForms[y].getAttribute("priority") == 0 ) 	       
                  {	   
					if( status.match(/^0$|^1$/)!=null )    
					{  
					   allShownForms[y].getElementsByTagName("p")[0].innerHTML = priority;
					   var divElement = allShownForms[y].getElementsByTagName("div")[0];
					   divElement.setAttribute( "class", divElement.getAttribute("class").replace( /wlunsorted/, "wlsorted") );	
					   document.getElementById( "wlallin").appendChild(allShownForms[y]);
                       priority++;
					}
					else
					{
						allShownForms[y].getElementsByTagName("p")[0].innerHTML = "drag to prioritize";
						var divElement = allShownForms[y].getElementsByTagName("div")[0];
						divElement.setAttribute( "class", divElement.getAttribute("class").replace( /wlsorted/, "wlunsorted") );	
						document.getElementById( "wlnewlyAdded").appendChild(allShownForms[y]);
					}
                  }
               }  		   
                
               for(i = 0;i<formArray.length;)
			   {
                 if( formArray[i].getAttribute("priority") == "-1")
				 {   
					  formArray[i].parentNode.removeChild(formArray[i]);
				 }
                 else i++;  
			   }     
          }//End rearrangeDom3 function.    
