var Void=function(){}
var sIFRInit = {
	v207: function(){
		sIFR.replaceElement('h3', named({
			sFlashSrc: '/assets/swf/helveticanueue-ul-sifr-2.0.7.swf',
			sColor: '#666666',
			wmode: 'transparent'
		}));
	},
	r436: function(){
		var helveticaNueueUl = { src: '/assets/swf/helveticanueue-ul-sifr-r436.swf' };
		sIFR.activate(helveticaNueueUl);
		sIFR.replace(helveticaNueueUl, {
		  selector: 'h3',
		  css: '.sIFR-root { color: #666666; font-size: 35px; letter-spacing: 3; }',
		  wmode: 'transparent'
		});
	}
};

sIFRInit.r436();

var Site = {
	Init: function() {
		UI.init();
		Site.InitNewsletter();
		Site.InitAccordion();
		Site.InitDate();
		Site.JsonForm.Init();
	},
	JsonForm: { 
		Init: function() {
			$$('.jsonForm').each( function(formEle){
				Site.JsonForm.SetValidation(formEle);
				Site.JsonForm.CalculateDays( formEle );
			});
		},
		SetValidation: function( formEle ) { 
			formEle.getElements('.buttonContainer input.button').each( function( buttonEle ) { 
				buttonEle.addEvent('click', function() { 
					var jsonFields = {};
					var fields = formEle.getElements('.field');
					var errorCount = 0;
					
					fields.each( function( fieldEle ) { 						
						var inputEles = fieldEle.getElements('input');
						inputEles.each( function( ele ) {
							if (ele.value.length > 0 || ele.getProperty('disabled') || fieldEle.hasClass('notRequired')) {
								if (ele.getProperty('name') == 'email') {
									var emailRegEx = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
									if (!emailRegEx.test(ele.value)) {
										fieldEle.addClass('error');
										errorCount++;
									} else {
										jsonFields[ele.name] = ele.value;
										fieldEle.removeClass('error');										
									}
								} else {
									jsonFields[ele.name] = ele.value;
									fieldEle.removeClass('error');
								}
							} else {
								fieldEle.addClass('error');
								errorCount++;
							}
						});

						var textEles = fieldEle.getElements('textarea');
						textEles.each( function( ele ) {
							if (ele.value.length > 0 || ele.getProperty('disabled') || fieldEle.hasClass('notRequired')) {
								jsonFields[ele.name] = ele.value;
								fieldEle.removeClass('error');
							} else {
								fieldEle.addClass('error');
								errorCount++;
							}
						});

						
						var selectEles = fieldEle.getElements('select');
						selectEles.each( function( ele ) {
							if (ele.selectedIndex > 0 || fieldEle.hasClass('notRequired')) {
								jsonFields[ele.name] = ele.value;
								fieldEle.removeClass('error');
							} else {
								fieldEle.addClass('error');
								errorCount++;
							}
						});
					});

					if( errorCount > 0 ) { 
						formEle.addClass('showErrorMessage');
					} else {
						formEle.removeClass('showErrorMessage');
						jsonFields["type"] = "reservation-request";
						formEle.getElements('.buttonContainer input.button')
							.setProperties({"disabled": "disabled", "value": "Please Wait..."});
						Site.SendJsonForm( jsonFields, formEle );
					}
					
				});
			});
		},
		CalculateDays: function( formEle ) {
			
		}
	},
	SendJsonForm: function( jsonObj, jsonForm ) {
		new Request({
			'headers': { 'Content-type': 'application/json' },
			'url': location.href,
			'method': 'post',
			'onComplete': function( jsonStr ) {
				var success = JSON.decode( jsonStr );
				if( success ) {
					jsonForm.addClass('formSubmittedSuccessfully');
				} else {
					jsonForm.addClass('formSubmittedErrored');
				}
			}
		}).send( "json=" + JSON.encode( jsonObj ) );
	},
	InitDate: function() {
		if ($('arrivalDate') && $('departureDate')) {
			var calendar1 = new vlaDatePicker('arrivalDate', {
				openWith: 'arriveTogglePicker',
				offset: {
					y: 20,
					x: -100
				},
				separateInput: {
					month: 'arriveMonth',
					day: 'arriveDay',
					year: 'arriveYear'
				}
			});
			var today = new Date();
			calendar1.pick({
				month: today.getMonth() + 1,
				day: today.getDate(),
				year: today.getFullYear()
			});
			
			var calendar2 = new vlaDatePicker('departureDate', {
				openWith: 'departTogglePicker',
				offset: {
					y: 20,
					x: -100
				},
				separateInput: {
					month: 'departMonth',
					day: 'departDay',
					year: 'departYear'
				}
			});
    
			var updateDayCount = function() {
				var one_day = 1000*60*60*24;
				var arriveDate = new Date( calendar1.__DATE.year, calendar1.__DATE.month - 1, calendar1.__DATE.day );
				var departDate = new Date( calendar2.__DATE.year, calendar2.__DATE.month - 1, calendar2.__DATE.day );
				var dayCount = ( departDate - arriveDate ) / one_day;
				
				var dayEle = $('nightCount')
				var daySpanEle = dayEle.getElement('span');
				var dayInputEle = dayEle.getElement('input');
				if (dayCount < 1) {
					dayEle.addClass('error');
					dayInputEle.value = "";
					daySpanEle.set('text', 'Please pick a valid range.')
				}
				else {
					dayEle.removeClass('error');
					dayInputEle.value = dayCount;
					daySpanEle.set('text', dayCount);
				}
				
			};
			
			calendar1.pickEvent = updateDayCount;
			calendar2.pickEvent = updateDayCount;
			
			var tomorrow = new Date( today.getFullYear(), today.getMonth(), today.getDate() + 1);
			calendar2.pick({
				month: tomorrow.getMonth() + 1,
				day: tomorrow.getDate(),
				year: tomorrow.getFullYear()
			});
		}
	},
	InitNewsletter: function() {
		var newsletterLink = $('newsletterSignUpLink');
		var newsletterEle = $('newsletterWindow');
		
		if( newsletterLink && newsletterEle ) {
			UI.initCloseButton( newsletterEle );
			newsletterLink.href = UI.settings.voidLink;
			newsletterLink.addEvent('click', function(){
				UI.fadeInElement( newsletterEle );
			});
		}
	},
	InitAccordion: function() {
		var accordionEles = $$('.accordion');
		accordionEles.each( function( ele ) {
			new Accordion('h4 a', 'div.panel', {
				opacity: false,
				onActive: function(toggler, element){
					toggler.addClass('active');
				},
			 
				onBackground: function(toggler, element){
					toggler.removeClass('active');
				},
				display: -1
			}, ele);
			
			ele.getElements('a').each( function( linkEle ) {
				linkEle.href = UI.settings.voidLink;
			});
		});
	},
	Settings : {
		Foundation: {
			VideoUrl: '?file=/assets/flv/rockhouse_foundation.flv&amp;image=/assets/flv/rockhouse_foundation.jpg',
			NewLibraryVideoUrl: '?file=/assets/flv/new_library_video.flv&amp;image=/assets/flv/new_library_video.jpg'
		},
		Hotel: {
			BRollVideoUrl: '?file=/assets/flv/rockhouse_broll.flv&amp;image=/assets/flv/rockhouse_broll.jpg',
			StyleeVideoUrl: '?file=/assets/flv/stylee_video.flv&amp;image=/assets/flv/stylee_video.jpg',
			RockhouseForeverVideoUrl: '?file=/assets/flv/rockhouse_forever.flv&amp;image=/assets/flv/rockhouse_forever.jpg'
		},
		Donate: {
			Redirect: 'https://secure.groundspring.org/dn/index.php?aid=14371'
		},
		FlvPlayer: '/assets/swf/flvplayer.swf'
	},
	ShowFoundationVideo: function() {
		var foundationVideo = new ObjectRewrite( Site.Settings.FlvPlayer + Site.Settings.Foundation.VideoUrl, 360, 260, 7);
		foundationVideo.prepForFlash();
		foundationVideo.write();
	},
	ShowBRollVideo: function() {
		var brollVideo = new ObjectRewrite( Site.Settings.FlvPlayer + Site.Settings.Hotel.BRollVideoUrl, 360, 260, 7);
		brollVideo.prepForFlash();
		brollVideo.write();
	},
	ShowStyleeVideo: function() {
		var styleeVideo = new ObjectRewrite( Site.Settings.FlvPlayer + Site.Settings.Hotel.StyleeVideoUrl, 360, 260, 7);
		styleeVideo.prepForFlash();
		styleeVideo.write();
	},
	ShowNewLibraryVideo: function() {
		var libraryVideo = new ObjectRewrite( Site.Settings.FlvPlayer + Site.Settings.Foundation.NewLibraryVideoUrl, 360, 260, 7);
		libraryVideo.prepForFlash();
		libraryVideo.write();
	},
	ShowRockhouseForeverVideo: function() {
		var rockhouseForever = new ObjectRewrite( Site.Settings.FlvPlayer + Site.Settings.Hotel.RockhouseForeverVideoUrl, 360, 260, 7);
		rockhouseForever.prepForFlash();
		rockhouseForever.write();
	},
	ShowSideImage: function( imagePath ) {
		if( $('sidePageImage') ) {
			if( Browser.hasFlash() ) {
				var MainVideo = new ObjectRewrite( imagePath + '/animated.swf', 194, 233, 7, "#ffffff", "transparent" );
				MainVideo.prepForFlash();
				MainVideo.write();
			}
		}
	}
};

window.addEvent('domready', Site.Init );

