All pastes #536104 Raw Edit

denague22

public text v1 · immutable
·published 2007-06-04 08:35 UTC
rendered paste body
import mx.controls.DateChooser;
import mx.utils.Delegate;
import mx.styles.CSSStyleDeclaration;

class Calander extends MovieClip
{
	
	private var dcCalander:DateChooser;
	private var rURL:String="calander.asp?date=";
	private var xml:XML;
	private var checkArray:Object;
	private var scope:MovieClip;
	
	private var dcListener:Object ;
	private var sObject:Object;
	
	private var loadedID:Number;
	
	
	
	private  function pad(str,n)
	{
		var l = Math.floor(str).toString().length;
		if (l < n) 
		{
			for (var i = 0; i < (n - l); i++) 
			{
				str = "0" + str;
			}
		}
		return str;		
	}

	
	 
	 private function onLoad()
	{
		scope=this;
		var _this:Calander=this;
		
		
		xml=new XML();
		xml.ignoreWhite=true;
		xml.onLoad=function()
		{
			_this.setArray()
						
		}
		
		xml.sendAndLoad(rURL,xml)	
		

	}
	
	private function Checkloaded(evt_obj:Object)
	{
		
		var _this:Calander=this;
		_this.sObject=evt_obj;	
		_this.FormatDates(_this.sObject);		
	}
	
	
	
	
	private function setArray()
	{		
		var _this:Calander=this;
		checkArray=new Object();
		
		var nodes=xml.firstChild.childNodes;
				
		for(var i=0;i<nodes.length;i++)
		{		
			var date=nodes[i].childNodes[0].attributes["date"]
			var url=nodes[i].childNodes[0].childNodes[0].nodeValue
			checkArray[date]=[]
			checkArray[date].url=url;
		}
     		
		
			//Clears styles
		   _global.styles=new Object();
		
    	_this.scope.createClassObject(mx.controls.DateChooser,"dc",_this.scope.getNextHighestDepth(),{_x:23.4,_y:30.0})
		_this.dcCalander=_this.scope.dc;
	
		//Set up listeners for event changes to redraw formats and check if date is present
		_this.dcListener= new Object();
		_this.dcListener.change = Delegate.create(this,_this.CheckDate);
		_this.dcListener.scroll=Delegate.create(this,_this.FormatDates);
		_this.dcListener.load=Delegate.create(this,_this.Checkloaded);
		
		// Add listener object to date chooser.
		_this.dcCalander.addEventListener("change", _this.dcListener);
		_this.dcCalander.addEventListener("scroll",_this.dcListener);
	    _this.dcCalander.addEventListener("load",_this.dcListener.load);
		
		// Dispatch event so it can redraw Calander, Flash bug:@
		_this.dcCalander.dispatchEvent({type: "scroll", detail: "nextMonth"});
		
	}
	/*******************************************************
	* @param year		Year value of selected_date
	* @param month		Month value of selected_date
	* @param day		Day value of selected_date
	* @param date		string of all the above values
	* *****************************************************/
	
	private function CheckDate(evt_obj)
	{
		var _this:Calander=this;
		// Get selected item as a Date 
		var thisDate:Date = new Date(evt_obj.target.selectedDate);
		
		// Might have to change it to getUTC depending on how your db is storing the values
		var year:Number=
						thisDate.getFullYear()
		var month:Number=
						_this.pad(thisDate.getMonth()+1,2);
		var day:Number=
						_this.pad(thisDate.getDate(),2);
		var date:String=
						//year +"-"+month +"-"+ day
						  day +"-"+month +"-"+ year
	trace(date);
	
			if(_this.checkArray[date])
			{
				_this.scope.txtEvents.text=_this.checkArray[date].url;
				getURL(_this.checkArray[date].url,"_self");
		
			};
	}
	/*******************************************************
	* @param CurrMonth		Gets the Current Month on display
	* @param yearMonth		String of displayed month
	* ****************************************************/
	private function FormatDates(evt_obj)
	{
		
		var _this:Calander=this;
		var CurrMonth=evt_obj.target["tfList"]["dateDisplay"].text
		
		var yearMonth:String=new String();
		yearMonth=this.getMonthIndex(CurrMonth);
		
		
		var dates=evt_obj.target["dateGrid"]["tfList"];
	
		for(var i =0;i<=6;i++)
		{
			for(var q=0;q<=6;q++)
			{	
				//Get the array idea for each cell block
				var label=dates["dayBlock"+i+"label"+q];
				//See if it is a number if so continue
				if(Number(label.text))
				{	
					//Reset data to the defaults
					label.setStyle("color",0x000000);
					label.setStyle("fontWeight","none");
									
					var day:String=this.pad(label.text,2)
					// If value is in checkArray then bold
					if(_this.checkArray[yearMonth+day].url!= undefined)
					{		
						//Set the style of the dates if inside the array
						label.setStyle("fontWeight","bold");
						label.setStyle("color",0xFF0000);
					
					}
				
				}
			}
		}
		
				
	}
	
	private function getMonthIndex(month:String)
	{
		
		var _this:Calander=this;
		// Parse out DisplayYear
		var year:String=new String();
		year=month.substring(month.indexOf(" ")+1,month.length);
		
		//Parse out DisplayMonth
		month=month.substring(0,month.indexOf(" "));
		
		var index:Number;
		// Get Month names
		var monthArr:Array=new Array()
		monthArr=_this.dcCalander.monthNames;
		
		// Loop through array to search for the index of the display month
		for (var i = 0; i < monthArr.length; i++) 
		{
			if(monthArr[i]==month){
				index=i+1;			
			}
		}
		// Format string for checkArray lookup
		return (year +"-"+_this.pad(index,2)+"-")
	}
}