// JavaScript Document

/* *****************************************************************
    rsPrint.js
    version 2.0      Date: 6/10/2010
    By: Big Bear Studios
    
    rsPrint is used by the Ride Print Utility page to control which
    rides get printed. The controlling element is the class names
    'printYes' and 'printNo' for the surrounding 'div' element.
    The 'div' has the class of 'rideClass' set and is used for the
    common styling and the 'printYes' & 'printNo' are used to shade
    selected or unselected rides.
    
    The Ride Print Utility uses several external scripts, including
    this file, to operate. The following scripts must be loaded be
    for calling this script.
      Yahoo's - dom-min.js
      Yahoo's - yahoo-min.js
      core.js
    
    init function
      This functions adds the click event to toggle the class between
      'printYes' and 'printNo'. All rides are initially set to 
      'printYes'.
    
    printYes function
      The printYes function finds all div's with 'printNo' set and
      resets them to 'printYes'.
      
    printNo function
      The printNo functions finds all div's with 'printYes' set and
      resets them to 'printNo'.
    
   ***************************************************************** */

var printrides = 
{
	init: function()
	{
		cells = YAHOO.util.Dom.getElementsByClassName("printYes","div");
		//alert("rides with 'printYes' as a class: " + cells.length);
		var selAll = document.getElementById("selectAll");
		var selNone = document.getElementById("unselectAll");
		var wkendRides = document.getElementById("weekends");
		var wkdayRides = document.getElementById("weekdays");
		
		for(var i = 0; i<cells.length; i++)
		{
			// add click event to each div with a class of printYes
			cells[i].onclick = function()
			{
				//alert("Class: " + this.className);
				if (YAHOO.util.Dom.hasClass(this,'printYes'))
				{
					YAHOO.util.Dom.replaceClass(this,'printYes','printNo');
				}
				else if (YAHOO.util.Dom.hasClass(this,'printNo'))
				{
					YAHOO.util.Dom.replaceClass(this,'printNo','printYes');
				}
			}
		}
		Core.addEventListener(selAll,'click', printrides.printAll);
		Core.addEventListener(selNone,'click', printrides.printNone);
		Core.addEventListener(wkendRides,'click',printrides.printWkend);
		Core.addEventListener(wkdayRides,'click',printrides.printWeekDay);
	},
	
	printAll: function(event)
	{
    	cells = YAHOO.util.Dom.getElementsByClassName("printNo","div");
		//alert("div's with printNo set: " + cells.length);
		
		for (var i = 0; i<cells.length; i++)
		{
			YAHOO.util.Dom.replaceClass(cells[i], 'printNo', 'printYes')
		}
		Core.preventDefault(event);
	},
  
	printNone: function(event)
	{
    	cells = YAHOO.util.Dom.getElementsByClassName("printYes","div");
		//alert("div's with printNo set: " + cells.length);

		for (var i = 0; i<cells.length; i++)
		{
			YAHOO.util.Dom.replaceClass(cells[i], 'printYes', 'printNo')
		}
		Core.preventDefault(event);
	},
  
	printWkend: function(event)
	{
		cells = YAHOO.util.Dom.getElementsByClassName("rideClass","div");
		for (i=0; i<cells.length; i++)
		{
			curDiv = cells[i].childNodes;
			j = 0;
			found = false;
			do
			{
				if (curDiv[j].className == "dow")
				{
					found = true;
					dayOfWeek = curDiv[j].firstChild.nodeValue;
					if ((dayOfWeek == "0") || (dayOfWeek == "6"))
					{
						if (YAHOO.util.Dom.hasClass(cells[i], "printNo"))
						{
							YAHOO.util.Dom.replaceClass(cells[i], "printNo", "printYes");
						}
					}
					else
					{
						if (YAHOO.util.Dom.hasClass(cells[i],"printYes"))
						{
						  YAHOO.util.Dom.replaceClass(cells[i],"printYes","printNo");
						}
					}
				}
				else
				{
					++j;
				}
			}
			while(curDiv.length != j && !found)
		}
		Core.preventDefault(event);
	},
	
	printWeekDay: function(event)
	{
		cells = YAHOO.util.Dom.getElementsByClassName("rideClass","div");
		for (i=0; i<cells.length; i++)
		{
			curDiv = cells[i].childNodes;
			j = 0;
			found = false;
			do
			{
				if (curDiv[j].className == "dow")
				{
					found = true;
					dayOfWeek = curDiv[j].firstChild.nodeValue;
					if ((dayOfWeek > "0") && (dayOfWeek < "6"))
					{
						if (YAHOO.util.Dom.hasClass(cells[i], "printNo"))
						{
							YAHOO.util.Dom.replaceClass(cells[i], "printNo", "printYes");
						}
					}
					else
					{
						if (YAHOO.util.Dom.hasClass(cells[i],"printYes"))
						{
						  YAHOO.util.Dom.replaceClass(cells[i],"printYes","printNo");
						}
					}
				}
				else
				{
					++j;
				}
			}
			while(curDiv.length != j && !found)
		}
	}
}

Core.start(printrides);
