$PWT.Class.create
(
	{
		$namespace:	'$DMSBT',
		$name:		'Application'
	}
)
(
	{
		marquee:		null,
		search:			null,
		lightscreen:	null,
		loader:			null,
		loaderBack:		null,
		init:			function()
		{
			//this.initNav();
			//this.initScrollHandler();
			(function()
			{
				this.search	=new $DMSBT.Search();
				//this.marquee=new $DMSBT.Marquee
//				(
//					{
//						renderTo:	'marquee',
//						items:
//						[
//							{
//								type:			'image',
//								url:			'http://dmsbt.com/images/assert_large.jpg',
//								link:			'http://www.dmsbt.com',
//								title:			'Asset Tracking',
//								description:	'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.'
//							},
//							{
//								type:			'image',
//								url:			'http://dmsbt.com/images/storelocator_large.jpg',
//								link:			'http://www.dmsbt.com',
//								title:			'Store Locator',
//								description:	'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.'
//							},
//							{
//								type:			'image',
//								url:			'http://dmsbt.com/images/mapframe.jpg',
//								link:			'http://www.dmsbt.com',
//								title:			'Mapframe',
//								description:	'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.'
//							}
//						]
//					}
//				);
				
			}.bind(this)).defer(200);
		},
		initNav: function()
		{
			$('div.accordion',this.container).accordion
			(
				{
					collapsible:	true,
					active:			false,
					icons:
					{
						header:			'ui-icon ui-icon-triangle-1-w',
						headerSelected:	'ui-icon ui-icon-triangle-1-s'
					},
					changestart:	function(event,ui)
					{
						this.nav_collapseItem({target:ui.oldHeader});
						if (ui.newHeader.css('width')!='314px')
						{
							ui.newHeader.gx({left:'-314px',width:'314px'},200);
						}
//						ui.oldContent.gx({left:'0px',width:'0px'},200);
						ui.newContent.gx({left:'-314px',width:'344px'},200);
					}.bind(this)//,
//					change: function(event,ui)
//					{
//						
//					}
				}
			);
			$('#nav-secondary h1').mouseover(this.nav_expandItem.bind(this));
			$('#nav-secondary h1').mouseout(this.nav_collapseItem.bind(this));
		},
		initScrollHandler: function()
		{
			$(document).scroll
			(
				function(event)
				{
					$('#nav-secondary').gx({top:(document.documentElement.scrollTop+50)+'px'},200);
				}
			);
		},
		showLightscreen: function()
		{
			this.getLightscreen().fadeIn(500);
			return this;
		},
		hideLightscreen: function()
		{
			this.getLightscreen().fadeOut(500);
			return this;
		},
		getLightscreen: function()
		{
			if (Object.isNull(this.lightscreen))
			{
				var	body=$(document.body),
					id	=$PWT.util.id();
				if ($.support.boxModel)
				{
					body.append
					(
						[
							'<div id="'+id+'"',
							' style="display:none;background-color:#000;position:fixed;top:0px;left:0px;z-index:1000;width:100%;height:100%;filter:alpha(opacity=60);opacity:0.6;"',
							' onclick="void(0);">',
							this.IEOnTopFix(id),
							'&nbsp;</div>'
						].join('')
					);
					this.lightscreen=$('#'+id);
				}
				else
				{
					body.append
					(
						[
							'<div id="'+id+'"',
							' style="display:none;background-color:#000;position:absolute;top:0px;left:0px;z-index:1000;width:'+body.innerWidth()+'px;height:'+body.innerHeight()+'px;filter:alpha(opacity=60);opacity:0.6;"',
							' onclick="void(0);">',
								this.IEOnTopFix(id),
							'&nbsp;</div>'
						].join('')
					);
					this.lightscreen=$('#'+id);
					$(window).resize
					(
						function()
						{
							this.lightscreen.width(body.innerWidth())
											.height(body.innerHeight());
						}.bind(this)
					);
					$(document).scroll
					(
						function()
						{
							this.lightscreen.css
							(
								{
									top:	document.documentElement.scrollTop+'px',
									left:	document.documentElement.scrollLeft+'px'
								}
							);
						}.bind(this)
					);
				}
			}
			return this.lightscreen;
		},
		showLoader: function(title,message)
		{
			if (!title)		title	='Loading, please wait...';
			if (!message)	message	='';
			var loader=this.getLoader();
			$('.title',loader[0]).html('<h2>'+title+'</h2>');
			$('.message',loader[0]).html(message);
			//Hide the elements. They were only initially shown so they could be correctly centered.
			loader[0].hide().fadeIn(500);
			loader[1].hide().fadeIn(500);
			return this;
		},
		hideLoader: function()
		{
			var loader=this.getLoader();
			loader[0].fadeOut(500);
			loader[1].fadeOut(500);
			return this;
		},
		getLoader: function()
		{
			if (Object.isNull(this.loader))
			{
				var	body=$(document.body),
					id	=$PWT.util.id();
				body.append
				(
					[
						'<div id="'+id+'_a" class="loader box-border"',
						' onclick="void(0);"><div class="title"></div><img src="/sites/all/themes/dmsbt/images/loader1.gif" /><div class="message"></div>',
						this.IEOnTopFix(id+'_a'),
						'&nbsp;</div>',
						'<div id="'+id+'_b" class="loader back"',
						' style="background-color:#FFF;filter:alpha(opacity=60);opacity:0.6;"',
						' onclick="void(0);">',
						this.IEOnTopFix(id+'_b'),
						'&nbsp;</div>'
					].join('')
				);
				this.loader		=$('#'+id+'_a');
				this.loaderBack	=$('#'+id+'_b');
				if (!$.support.boxModel)
				{
					$(document).scroll
					(
						function()
						{
							this.centerElement(this.loader);
							this.centerElement(this.loaderBack);
							this.loader		.css({top:(document.documentElement.scrollTop+200)+'px'});
							this.loaderBack	.css({top:(document.documentElement.scrollTop+200)+'px'});
						}.bind(this)
					);
				}
			}
			$(window).resize
			(
				function()
				{
					this.centerElement(this.loader);
					this.centerElement(this.loaderBack);
				}.bind(this)
			);
			this.centerElement(this.loader);
			this.centerElement(this.loaderBack);
			return [this.loader,this.loaderBack];
		},
		centerElement: function(element)
		{
			element=$(element);
			var	innerContent	=document.body,
				innerWidth		=innerContent.offsetWidth,
				elementWidth	=element[0].offsetWidth;
			element.css
			(
				{
					left:	((innerWidth/2)-(elementWidth/2))+'px'
				}
			);
		},
		nav_expandItem: function(event)
		{
			var target=$(event.target);
			if ($(event.target).hasClass('ui-icon'))
			{
				target=target.parent('h1');
			}
			target.gx('pause');
			if (target.css('left')!='-314px');
			{
				target.gx({left:'-314px',width:'314px'},200);
			}
		},
		nav_collapseItem: function(event)
		{
			var target=$(event.target);
			if ($(event.target).hasClass('ui-icon'))
			{
				target=target.parent('h1');
			}
			if (!target.hasClass('ui-state-active'))
			{
				target.gx('pause');
				if (target.css('left')!='0px');
				{
					target.gx({left:'0px',width:'0px'},200);
				}
			}
		},
		IEOnTopFix: function(id)
		{
			return [
				'<iframe id="'+id+'_iframe" style="display:block:z-index:-1;filter:alpha(opacity=0);opacity:0;left:0px;top:0px;width:100%;height:100%;position:absolute;" ',
				'tabindex="0" ',
				'frameborder="0" ',
				'src="javascript:false;"',
				'></iframe>'
			].join('');
		}
	}
);
$(document).ready
(
	function()
	{
		window.application=new $DMSBT.Application();
	}
);
