var Our365 = {
	/*
	 * start() - this is where it all begins
	 */
    start: function() {
		UI.init();
		Our365.initPhotoPicker();
		Our365.initGallery();
		//Our365.initAlertToggle();
		Our365.initNewsletters();
		Our365.initAccordion();
		Our365.initWebNurseryNewbornPortraitsSearch();
		Our365.initSignIn(); 
		Our365.initFamilyList();
		Our365.initBabySwitcher();
		Our365.initPostReplyButton();
		Our365.initShippingAndHandling();
		Our365.initCountryChangeDropDown();
		Our365.initSelectAlls();
		Our365.initBorderChooser();
		Our365.initRegistrationPage();
		Our365.initPager();
		Our365.initChildDateEntry();
		Our365.initDatePickers();
		Our365.initPhotoEnlarge();
		Our365.initReportAbuse();
		Our365.initDatePicker();
		Our365.initShowSettings();
		Our365.initDeleteComment();
		Our365.initSharePage();
		Our365.initDisableRightClick();
		Our365.checkUserLogin();

		var ButtonImageSprite = new Image();
		ButtonImageSprite.src = "/App_Themes/Default/img/dialog_buttons_sprite.gif";
    },
    initDisableRightClick: function() {
        var disables = $$(".disableRightClick");
        disables.each(function(item) { 
            DisableRightClick();
        });
        
    },
    initSharePage: function() {
		try { 
			var shareLinkEle = $(Our365.settings.sharePage.buttonId);
			var sharePageEle = $$(Our365.settings.sharePage.sharePageCssSelector);
			if( shareLinkEle && sharePageEle ) {
				sharePageEle = sharePageEle[0];
				UI.initCloseButton( sharePageEle );
				shareLinkEle.href = UI.settings.voidLink;
				shareLinkEle.addEvent('click', function(){ 
					UI.fadeInElement( sharePageEle );
				});
				if( sharePageEle.hasClass( Our365.settings.sharePage.triggerSharePage ) ) {
					shareLinkEle.fireEvent('click');
				};
			}
		} catch( e ) { }
    },
    initDeleteComment: function() {
		var deleteCommentEles = $$(Our365.settings.familyBook.commentDeleteButton);
		deleteCommentEles.each(function(ele){ 
			ele.href = UI.settings.voidLink;
			ele.addEvent('click', function() { 
				var containerEle = $(ele.getAttribute(Our365.settings.familyBook.commentContainerId));	
				
				UI.showMessage({
					'title': 'You are about to delete a comment',
					'message': 'Are you sure?'
				}, {
					'yes': function() {
						UI.fadeOutAndRemove( containerEle );
						setTimeout( function() { 
							var deleteAjax = new Ajax( Our365.settings.familyBook.deleteAjaxUrl(), {
								method: 'post',
								onComplete: function() { 
									UI.showMessage( {
										'title': "Comment Deleted",
										'message': "This comment has been deleted successfully."
									}, {
										'ok': Void
									});
								}
							});
							
							deleteAjax.request('entryId=' + containerEle.getAttribute('entryId') + '&commentId=' + containerEle.getAttribute('commentId') );
						}, 500 );
					},
					'no': Void
				});
			});
		});
    },
    initShowSettings: function() {
		var showSettings = $$(Our365.settings.gallery.settingsButtonCssSelector);
		var settingsContainer = $$(Our365.settings.gallery.settingsContainerCssSelector);
		showSettings.each(function(ele,index){ 
			UI.initCloseButton( settingsContainer[index] );
			ele.href = UI.settings.voidLink;
			ele.addEvent('click', function() {
				UI.fadeInElement( settingsContainer[index] );
			});
		});
    },
    /*initLoadWindow: function() { 
		var loadEles = $$(Our365.settings.window.triggerLoadWindow);
		loadEles.each(function(ele){ 
			ele.url = ele.href;
			ele.href = UI.settings.voidLink;
			ele.addEvent('click',function(){ 
				UI.showLoadingWindow(this.getAttribute(Our365.settings.window.loadingWindowMessageAttribute), function(){ 
					location.href = ele.url;
				});
			});
		});
    },*/
	showConfirm: function( title, message, PostBackClientHyperlink) { 
		UI.showMessage({
			'title': title,
			'message': message
		}, {
			'yes': function() {
			    setTimeout("__doPostBack('" + PostBackClientHyperlink + "','');", 1);
			},
			'no': Void
		});
	},
	
	/*
    initConfirmDelete: function() {
		var confirmEles = $$(Our365.settings.window.confirmDeleteCssSelector);
		confirmEles.each(function(ele){ 
			ele.url = ele.href;
			ele.href = UI.settings.voidLink;
			ele.addEvent('click', function() {
				UI.showMessage({
					'title': ele.title,
					'message': ele.getAttribute(Our365.settings.window.confirmMessageAttribute)
				}, {
					'yes': function() {
						if( ele.url.contains('javascript:') ) {
							var jsStr = ele.url.replace("javascript:","");
							jsStr = jsStr.replace(/%20/g, " ");
							alert("evaling:" + jsStr );
							eval( jsStr );
						} else {
							location.href = ele.url;
						}
					},
					'no': Void
				});
			});
		});
    },
    */
    initDatePicker: function() {
		var datePickerEles = $$(Our365.settings.datePicker.containerCssSelector);
		datePickerEles.each(function(ele) { 
			var inputEle = ele.getElement('input.calendarButton');
			inputEle.addEvent('click',function(e) {		
				var e = new Event(e);
				e.stopPropagation();
				e.stop();
				
				var monthEle = ele.getElement(Our365.settings.datePicker.monthCssSelector);
				var dayEle = ele.getElement(Our365.settings.datePicker.dayCssSelector);
				var yearEle = ele.getElement(Our365.settings.datePicker.yearCssSelector);		
				var dateStr = dayEle.value + "/" + monthEle.value + "/" + yearEle.value;
				
				new Calendar(this, dateStr, function(date){
					monthEle.selectIndexFromValue( date.month );
					dayEle.selectIndexFromValue( date.day );
					yearEle.selectIndexFromValue( date.year );
				});
			});
		});
    },
    initReportAbuse: function() {
		var reportEles = $$(Our365.settings.community.reportAbuseSelector);
		reportEles.each( function(ele){ 
			ele.url = ele.href;
			ele.href = UI.settings.voidLink;
			ele.addEvent('click', function() { 
				UI.showMessage({
					'title': 'Report Abuse',
					'message': 'Report abuse only if you have seen something inappropriate, illegal, or potentially damaging to the our365 community.<br /><br />Are you sure you want to continue?'
				}, {
					'yes': function(e) {
						var e = new Event(e);
						e.stopPropagation();
						e.stop();
						location.href = ele.url;
					},
					'no': Void
				});
			});
		});
    },
    
    initPhotoEnlarge: function() {
        
		photoEles = $$(Our365.settings.photoEnlarger.photoLinkEles);
	    	    
        var removeElement = function() {
            this.remove();
        };
		
		photoEles.each(function(ele){
		    if( ele.href != UI.settings.voidLink ) {
			    ele.ImageUrl = ele.href;
			    ele.href = UI.settings.voidLink;
			}
			ele.removeEvents('click');
			ele.addEvent('click', function() {
			    this.theImage = new Element('div', { 'class': 'enlargedPhoto positionHidden' }).adopt(
					enlargedInner = new Element( 'div', { 
						'class': 'enlargedInner clearfix'
					}).adopt(
						new Element( 'a', {
							'class': 'close',
							'href': UI.settings.voidLink,
							'events': {
							    'click': function() { 
							        UI.fadeOutElement(ele.theImage, function() {
							            removeElement.bind( ele.theImage )();
							        });
							    }
							}
							//}).adopt( new Element( 'img', { 'src': '/App_Themes/Default/img/icon_photo_picker_close_grn.gif' } ) ),
						}).adopt( new Element( 'img', { 'src': '/App_Themes/Default/img/icon_photo_picker_close_bl.gif' } ) ),
						
						iHateIE = new Element( 'img', {
							'events': { 
								'load': function() {
									$(document.body).adopt(ele.theImage);
									enlargedInner.setStyle( 'width', this.getSize().size.x );
									UI.fadeInElement(ele.theImage);
								},
								'click': function() {
									UI.fadeOutElement(ele.theImage,function() {
									    removeElement.bind( ele.theImage )();
									});
								}
							}			
						})
					)
				);
				
				// you need to set the src last otherwise onload will not get fired (IE6 bug only) 
				iHateIE.src = ele.ImageUrl;
				

				UI.initCloseButton( ele.theImage );
			});
		});
    },
    initDatePickers: function() {
		//console.log('initDatePickers');
        var DateRanges = new Array();
        DateRanges[0] = 31;
        DateRanges[1] = 28;
        DateRanges[2] = 31;
        DateRanges[3] = 30;
        DateRanges[4] = 31;
        DateRanges[5] = 30;
        DateRanges[6] = 31;
        DateRanges[7] = 31;
        DateRanges[8] = 30;
        DateRanges[9] = 31;
        DateRanges[10] = 30;
        DateRanges[11] = 31;
        
        var calcLeapYear = function(numberOfDaysInMonth, year) {
            dayToAdd = 0;
            if(numberOfDaysInMonth == 28) {
                if(year % 4 != 0 || year % 100 == 0) {
                    if(year % 400 == 0) {
                        dayToAdd = 1;
                    }else {
                        dayToAdd = 0;
                    }
                }else {
                   dayToAdd = 1;
                }
            }
            numberOfDaysInMonth += dayToAdd;
            return numberOfDaysInMonth;
        }
        
        var DatePickerMonthDropDownLists = $$("select.DatePickerMonthDropDownList");
        DatePickerMonthDropDownLists.each(function(monthDropDown){
             monthDropDown.DatePickerDayDropDownList = $ES("select.DatePickerDayDropDownList", monthDropDown.getParent())[0];
             monthDropDown.DatePickerYearDropDownList = $ES("select.DatePickerYearDropDownList", monthDropDown.getParent())[0];
             var CalcDropDownValues = function() {
                var numberOfDays = calcLeapYear(DateRanges[(monthDropDown.value - 1)], parseInt(monthDropDown.DatePickerYearDropDownList.value));
                var currentDay = monthDropDown.DatePickerDayDropDownList.value;
                monthDropDown.DatePickerDayDropDownList.empty();
                if(numberOfDays <= currentDay) {
                    currentDay = numberOfDays;
                }
                
                for(var i=0;i<numberOfDays+1;i++) {
                    if(i == 0 ) {
                        if( monthDropDown.DatePickerDayDropDownList.hasClass("showAllDaysOption") ) {
                            monthDropDown.DatePickerDayDropDownList.adopt(new Element("option", {'value': 0, 'selected': 'selected'}).setText('All'));
                        }
                    } else if(i == currentDay) {
                        monthDropDown.DatePickerDayDropDownList.adopt(new Element("option", {'value': i, 'selected': 'selected'}).setText(i));
                    }else {
                        monthDropDown.DatePickerDayDropDownList.adopt(new Element("option", {'value': i}).setText(i));
                    }
                    
                }
             }
             CalcDropDownValues();
             monthDropDown.addEvent('change', function(){
                CalcDropDownValues();
             });
             monthDropDown.DatePickerYearDropDownList.addEvent('change', function(){
                CalcDropDownValues();
             });
        });
    },
    initPager: function() {
        var PagerSelectBoxs = $$("div.paginator select.PagerSelectBox");
        PagerSelectBoxs.each(function(selectBox){
            selectBox.addEvent('change', function() {
                var pageNumberToForwardTo = selectBox.value;
                if(window.location.href.contains("page=")) {
                    var beginingOfUrl = window.location.href.substring(0, window.location.href.indexOf("page=")+5);
                    window.location = (beginingOfUrl + pageNumberToForwardTo);
                }else {
                    window.location = (window.location.href + "&page=" + pageNumberToForwardTo);
                }
            });
        });
    },
    initBorderChooser: function() {
        var borderContainer = $$(Our365.settings.borderChooser.container)[0];
        if( borderContainer ) {
            //borderContainer = borderContainer;
            var borderDetailContainer = borderContainer.getElement(Our365.settings.borderChooser.borderDetail);
            var borderSapId = borderDetailContainer.getElement(Our365.settings.borderChooser.borderSapId);
            var mainBorderDisplayName = borderDetailContainer.getElement(Our365.settings.borderChooser.borderDisplayName);
            var selectButton = borderContainer.getElement(Our365.settings.borderChooser.selectButton);
            var borderPopup = borderContainer.getElement(Our365.settings.borderChooser.borderPopUpContainer);
            var radioYes = borderContainer.getElement(Our365.settings.borderChooser.radioButtonYes);
            var radioNo = borderContainer.getElement(Our365.settings.borderChooser.radioButtonNo);
            var borderDisplaySpan = borderContainer.getElement(Our365.settings.borderChooser.borderDisplaySpan);
            
            radioYes.checked = false;
            radioYes.addEvent('click',function(){
                borderDetailContainer.removeClass(UI.settings.hiddenClass);
            });
            
            radioNo.checked = false;
            radioNo.addEvent('click',function(){
                borderDetailContainer.addClass(UI.settings.hiddenClass);
            });
            
            UI.initCloseButton( borderPopup );
            
            selectButton.href = UI.settings.voidLink;
            selectButton.addEvent( 'click', function() {
				UI.fadeInElement( borderPopup );
			});
			
			var borderEles = borderPopup.getElements(Our365.settings.borderChooser.borderChoiceContainer);
			borderEles.each(function(item){
			    var sapId = item.getElement(Our365.settings.borderChooser.borderSapId);
			    var borderDisplayName = item.getElement(Our365.settings.borderChooser.borderDisplayName);
			    var selectEle = item.getElements(Our365.settings.borderChooser.selectBorderAction);
			    selectEle.each(function(ele){
			        ele.href = UI.settings.voidLink;
			        ele.addEvent('click', function(){
			            UI.fadeOutElement( borderPopup );
			            borderDisplaySpan.setText( borderDisplayName.value );
			            borderSapId.value = sapId.value;
			            mainBorderDisplayName.value = borderDisplayName.value;
			        });
			    });
			});
        }
    },
	initAccordion: function() {
		var accordions = $$('.accordionStyle');
		accordions.each( function(item) {
			UI.initAccordion( item, "tr.collapsable", "div.forAccordion" ); 
		});
		
		//var accordion = $('accordion');
		//UI.initAccordion( accordion, "tr.toggler input", "div.showblock" );
	},
	initSelectAlls: function() {
	    Our365.settings.selectAllElements.each(function(item){ 
	         $$(item).each(function(theItem){
	            UI.initSelectAll( theItem );
	        });
	    });
	},
	initCountryChangeDropDown: function() {
	   
		try { 
		    
			var FamilyCountryDropDown = $$(Our365.settings.CountryChange.FamilyCountryDropDown);
			var HospitalCountryDropDown = $$(Our365.settings.CountryChange.HospitalCountryDropDown)[0];
			var FamilyStateDropDown = $$(Our365.settings.CountryChange.FamilyStateDropDown)[0];
			var HospitalStateDropDown = $$(Our365.settings.CountryChange.HospitalStateDropDown)[0];
			var CAHospitalStateDropDown = $$(Our365.settings.CountryChange.CAHospitalStateDropDown)[0];
			var CAFamilyStateDropDown = $$(Our365.settings.CountryChange.CAFamilyStateDropDown)[0];
			
			FamilyCountryDropDown.addEvent('click', function() { 
			    if(this.value == "CA") {
			        CAFamilyStateDropDown.removeClass("hidden");
			        FamilyStateDropDown.addClass("hidden");
			    }else {
			        CAFamilyStateDropDown.addClass("hidden");
			        FamilyStateDropDown.removeClass("hidden");
			    }
	        });

			if( HospitalCountryDropDown && HospitalStateDropDown ) {
			    HospitalCountryDropDown.addEvent('change', function() {
			        if(HospitalCountryDropDown.value == "CA") {
			            CAHospitalStateDropDown.removeClass("hidden");
			            HospitalStateDropDown.addClass("hidden");
			        }else {
			            CAHospitalStateDropDown.addClass("hidden");
			            HospitalStateDropDown.removeClass("hidden");
			        }
			    });
		    }
		} catch( e ) {
			debug.log( Our365.errorMessages.galleryGeneric( e ) );
		}
	},
	/*
	 * initGallery() - initialize the photo gallery
	 * for now this only init's the select all checkbox.
	 */
	initGallery: function() {
		try { 
			var galleryContainer = $$(Our365.settings.gallery.containerId)[0];
			if( galleryContainer ) {
				UI.initSelectAll(galleryContainer);
			}
		} catch( e ) {
			debug.log( Our365.errorMessages.galleryGeneric( e ) );
		}
	},
	initShippingAndHandling: function() {
	    /*
	    fadeShippingLink: 'fadeShippingLink',
		    fadeShippingBox: 'fadeShippingBox',
		    closeLink: '#fadeShippingBox a.close',
		    closeButton: '#fadeShippingBox input.close'
	    */
	    var fadeShippingLink = $(Our365.settings.shippingAndHandling.fadeShippingLink);
	    if(!fadeShippingLink) {return;}
	    var fadeShippingBox = $(Our365.settings.shippingAndHandling.fadeShippingBox);
	    fadeShippingLink.addEvent('click', function() {
	        UI.fadeInElement(fadeShippingBox);
	    }.bind(this));
	    UI.initCloseButton(fadeShippingBox);
	},
	/*
	 * initPhotoPicker() - initialize the photo picker tool
	 */
    initPhotoPicker: function() {
		var showPickerEles = $$(Our365.settings.photoPicker.showPhotoPicker);
		var removePhotoEle = $$(Our365.settings.photoPicker.removePhotoFromPicker);
		
		showPickerEles.each(function(item,index){
		    
			var photoPickerEle = $( item.getAttribute("photoPickerEle") ); 
			var findParentPhotoWebControl = item.getAttribute("findParentPhotoWebControl");
			
			var refreshPickerEles = photoPickerEle.getElements(Our365.settings.photoPicker.refreshPhotoPicker); //added for drop down refreshes
			var photoCollectionEle = photoPickerEle.getElement(Our365.settings.photoPicker.collectionId);
			var noPhotoSelectedDefault = photoPickerEle.getElement(Our365.settings.photoPicker.noPhotoSelectedDefault);
			var hfElePhotoIds = photoPickerEle.getElement(Our365.settings.photoPicker.selectedPhotosHidEle); //added to store selected values
			//var hfEleSingleSelect = photoPickerEle.getElement(Our365.settings.photoPicker.singleSelectFlagHidEle);
			var clientElementToUpdate = $(photoPickerEle.getElement(Our365.settings.photoPicker.imgIdToUpdateHidEle).value);
			var hfEleCausesPostback = photoPickerEle.getElement(Our365.settings.photoPicker.causesPostBackFlagHidEle).value;
			var hfEleShowGalleries = photoPickerEle.getElement(Our365.settings.photoPicker.showGalleryFlagHidEle).value;
			var addPhotoEle = photoPickerEle.getElement(Our365.settings.photoPicker.addPhotosId); // addPhotos
			var galleryTitleEle = photoPickerEle.getElement(Our365.settings.photoPicker.galleryTitle);
			var galleryListEle = photoPickerEle.getElement(Our365.settings.photoPicker.galleryList);
			var galleryDateEle = photoPickerEle.getElement(Our365.settings.photoPicker.galleryDate);
			var sortByEle = photoPickerEle.getElement(Our365.settings.photoPicker.sortByEle);
			var sortOrderEle = photoPickerEle.getElement(Our365.settings.photoPicker.sortOrderEle);
			//var pickerSelectAllEle = photoPickerEle.getElement(Our365.settings.photoPicker.pickerSelectAll);
			
			if( removePhotoEle[index] ) {
				removePhotoEle[index].addEvent( 'click', function() { 
					hfElePhotoIds.value = '';
					showPickerEles[index].removeClass(UI.settings.hiddenClass);
					var removeImage = new Element('img', { 'src': noPhotoSelectedDefault.value });
					removeImage.addEvent( 'load', function() {
						clientElementToUpdate.src = noPhotoSelectedDefault.value;
					});
					clientElementToUpdate.src = noPhotoSelectedDefault.value;
					this.addClass(UI.settings.hiddenClass);
				});
			}
			
			UI.initCloseButton(photoPickerEle);
			
			/*if( hfEleSingleSelect.value == 'on' ) {
				pickerSelectAllEle.setStyle('visibility', 'hidden');
			}*/
			
			if( hfEleShowGalleries == 'off' ) {
				galleryListEle.setStyle( 'visibility', 'hidden' );
			}
			if(findParentPhotoWebControl == "true") {
			    if( clientElementToUpdate ) { 
				    var goBackEle = clientElementToUpdate.getParent();
				    if( goBackEle.getTag() == "a" ) {
					    goBackEle.href = UI.settings.voidLink;
					    goBackEle.addEvent('click', function() {
						    item.fireEvent('click');
					    });
				    }
			    }
			}
			var clickPhotoCallBack = function(e) { 
				var buttonToClick = photoPickerEle.getElement(Our365.settings.photoPicker.addButtonCssSelector);
				buttonToClick.fireEvent('click', [e] );
				if( hfEleCausesPostback == "on" ) { 
				    //alert(buttonToClick.href);
					location.href = buttonToClick.href;
				}
			}
			
			var showPhotoPickerLoading = function() {
				photoCollectionEle.empty();
				if( photoPickerEle.hasClass( UI.settings.hiddenClass ) ) { 
					UI.fadeInElement( photoPickerEle );
				}
				photoPickerEle.addClass(Our365.settings.photoPicker.loadingCssClass);
			}
			
			/*
		     * addPhotosToCollection() 
		     */
			var addPhotosToCollection = function(request) {
				photoPickerEle.removeClass(Our365.settings.photoPicker.loadingCssClass);
				photoCollectionEle.empty();
				UI.initSelectAll( photoPickerEle, false );
				var mainRequest = Our365.stripDotNetJsonCrap(request);				
				var photoEles = Json.evaluate(mainRequest);
				
				if( photoEles.length == 0 ) { 
				    photoCollectionEle.adopt( new Element( 'p', { 
				           'class': 'noImages'
				    }).setText("this album has no photos") );
				}
				photoEles.each( function(item,index){
					photoCollectionEle.adopt( HTMLFactory.createPhotoItem(item, clickPhotoCallBack) );	
				});
				
				//galleryTitleEle.setText( "Viewing: " + galleryListEle.options[galleryListEle.selectedIndex].text );
				
				if( photoPickerEle.hasClass(UI.settings.hiddenClass) ) {
					UI.fadeInElement(photoPickerEle);
				}
			};
			
			try {
				var myAjax = new Ajax( Our365.settings.photoPicker.ajaxURL, { 
					method: 'post',
					onComplete: addPhotosToCollection,
					onRequest: showPhotoPickerLoading,
					onFailure: function() {
						UI.fadeOutElement(photoPickerEle, function(){ 
							UI.showMessage( 
								{
								'title': 'Whoops!',
								'message': 'You don\'t have any galleries yet. Would you like to create one now?'
								}, { 
									'yes': function(e) {
										var e = new Event(e);
										e.stopPropagation();
										e.stop();
										location.href = "/Moments/photos/CreateGallery.aspx";
									},
									'no': Void 
								} 
							);
						}, true);
					}
				} );
				
				item.addEvent( 'click', function() { 
					myAjax.request('gallId=' + galleryListEle.value + '&sortBy=&ascDesc=');
				});
				
				item.href = UI.settings.voidLink;
			
		        //added for DropDown Refreshes
				refreshPickerEles.each(function(ddlEle) {
					ddlEle.addEvent( 'change', function() {
						myAjax.request('gallId=' + galleryListEle.value + '&sortBy=' + sortByEle.value + '&ascDesc=' + sortOrderEle.value);
					});
				});
									
			} catch( e ) {
				debug.log( Our365.errorMessages.photoPicker(e) );
			};

			var addPhotoEle; var checkedImgUrl;
			
			/*depending on whether we need this to cause postback				
			if (hfEleCausesPostback == "off")	{	
			    
			//} else {
			 //   addPhotoEle = photoPickerEle('input', Our365.settings.photoPicker.addPhotosId);
			}
			*/
			if( photoPickerEle && photoCollectionEle && addPhotoEle && refreshPickerEles ) {
				UI.initCloseButton(photoPickerEle);
				UI.initSelectAll(photoPickerEle);
				
				// add button
				try {
					//addPhotoEle.href = UI.settings.voidLink;
					addPhotoEle.addEvent( 'click', function(e) {
						UI.fadeOutElement(photoPickerEle);
						
						item.addClass(UI.settings.hiddenClass);
	                    removePhotoEle[index].removeClass(UI.settings.hiddenClass);

						// selectedEles is an array that will contain all the items that were checked (returns the input[value] by default.
						// refer to UI.getCheckedItems for more information on customizing the array
						//var selectedEles = UI.getCheckedItems( photoPickerEle, 'div.photoContainer' );
						
						//if( selectedEles.length == 0 ) { return; }
						
						//save the selected PhotoIds to hidden field
						
						if( hfElePhotoIds ) {             
							if( e ) {
							    var newE = new Event(e);
							    var currentTarget = newE.target;
							    if( currentTarget.getTag() == "img" ) {
							        currentTarget = currentTarget.getParent();
							        if( currentTarget.getTag() != "a" ) {
							            //alert( "[CRITICAL] FIND ADAM. THIS BUG IS STILL A PROBLEM!!!" );
							        }
							    }  
								hfElePhotoIds.value = currentTarget.getAttribute("guiID")
							} else {
								//alert("[CRITICAL] I was supposed to know what you clicked but I don't. Please report this bug.");
							}
						}// else {
						//    debug.log( '[INFO] i have ' + selectedEles.length + ' photo items that the user picked, i am not doing anything with it though...' );
						//}

						//Update the client-side image element			    
	                    if( hfEleCausesPostback == "off" )	{
	                        //if( hfEleSingleSelect.value == "on" ) {
								if( clientElementToUpdate ) {
	                            
									var newE = new Event(e);
									var imgEle = newE.target;
									if( imgEle.getTag() == "a" ) {
										imgEle = imgEle.getElement('img');
									}
									
									var newImage = new Element('img', {
										'src': imgEle.src,
										'events': { 
											'load': function() {
												clientElementToUpdate.src = this.src;
											}
										}
									});
									
									clientElementToUpdate.src = newImage.src;									
									
									return false;
								}                            
	                        //} 
	                    } else {
	                        
							if( window.ie ) {
							    var buttonToClick = photoPickerEle.getElement(Our365.settings.photoPicker.addButtonCssSelector);
							    var postBackArgs = buttonToClick.href.substring(buttonToClick.href.indexOf("'") + 1);
							    postBackArgs = postBackArgs.substring(0, postBackArgs.indexOf("'"));
							    setTimeout("__doPostBack('" + postBackArgs + "','');", 1);
								
							}
	                    }
					});
	
				} catch( e ) {	}
			};
		});
    },
    initWebNurseryNewbornPortraitsSearch: function() {
        
        var NewbornPortraitsSearchTable = $(Our365.settings.WebNursery.NewbornPortraitsSearchTableId);
        var highlightableRows = $$(Our365.settings.WebNursery.highlightableRow);
        if(NewbornPortraitsSearchTable && highlightableRows) {
            
            DisableRightClick();
            highlightableRows.each( function(Row) {
				var RowMouseOver = function() {
				    this.addClass("selected");
				}
               Row.addEvent('mouseover', WebNurseryNewbornPortraitsSearchItemMouseOver);
               Row.addEvent('mouseout', WebNurseryNewbornPortraitsSearchItemMouseOut);
               
                var getBirthByIdCallBack = function(request) {
				    var JsonBirth = Json.evaluate(this.stripDotNetJsonCrap(request));
				    if(JsonBirth.IsPasswordRequired) {
				        var authentBox = HTMLFactory.createNewbornPortraitsAuthentication({'id': JsonBirth.BirthId});
				        authentBox.injectAfter(Row);
				        var authentBoxSubmitButton = $("submitButton"+JsonBirth.BirthId);
				        Our365.settings.webNurseryNewbornPortraitsSearch.formButton = authentBoxSubmitButton;
				        var passwordField = $("input"+JsonBirth.BirthId);
				        var mothersnameField = $("mothersinput"+JsonBirth.BirthId);
			            authentBoxSubmitButton.addEvent('click', function(){
				            var previousError = $ES("span", authentBoxSubmitButton.getParent())[0];
				            if(!previousError) {
                                var errorMessage = new Element("span", {'class': 'error'});
                                errorMessage.innerHTML = " &nbsp;&nbsp;Checking, Please wait";
                                errorMessage.injectAfter(authentBoxSubmitButton);
                            }else {
                                previousError.innerHTML=" &nbsp;&nbsp;Checking, Please wait";
                            }
                            
				            var password = passwordField.value;
				            var mothersname = mothersnameField.value;
				            var ajaxURL = Our365.settings.WebNursery.baseAjaxURL;
                            var BirthId = JsonBirth.BirthId
                            var myAjax = new Ajax(ajaxURL, {
                                method: 'post',
					            onComplete: getBirthByIdWithPasswordCallBack
				            } );
				            myAjax.request('birthId='+ BirthId + '&guestPassword=' + password + '&mothersName=' + mothersname);
				        });
				            var getBirthByIdWithPasswordCallBack = function(request) {
                                var newJson = Json.evaluate(this.stripDotNetJsonCrap(request));
                                
                                if(newJson.IsAuthenticated && newJson.IsValidMothersName) {
                                    window.location = GetWebNurseryRedirectRoot() + "?BirthId="+newJson.BirthId;
                                }else if(newJson.IsAuthenticated && !newJson.IsValidMothersName) {
                                    var previousError = $ES("span", authentBoxSubmitButton.getParent())[0];
                                    if(!previousError) {
                                        var errorMessage = new Element("span", {'class': 'error'});
                                        errorMessage.innerHTML = " &nbsp;&nbsp;Invalid Last Name";
                                        errorMessage.injectAfter(authentBoxSubmitButton);
                                    }else {
                                        previousError.innerHTML=" &nbsp;&nbsp;Invalid Last Name";
                                    }
                                }else if(!newJson.IsAuthenticated && newJson.IsValidMothersName) {
                                    var previousError = $ES("span", authentBoxSubmitButton.getParent())[0];
                                    if(!previousError) {
                                        var errorMessage = new Element("span", {'class': 'error'});
                                        errorMessage.innerHTML = " &nbsp;&nbsp;Invalid Password";
                                        errorMessage.injectAfter(authentBoxSubmitButton);
                                    }else {
                                        previousError.innerHTML=" &nbsp;&nbsp;Invalid Password";
                                    }
                                }else if(!newJson.IsAuthenticated && !newJson.IsValidMothersName) {
                                    var previousError = $ES("span", authentBoxSubmitButton.getParent())[0];
                                    if(!previousError) {
                                        var errorMessage = new Element("span", {'class': 'error'});
                                        errorMessage.innerHTML = " &nbsp;&nbsp;Invalid Password and Last Name";
                                        errorMessage.injectAfter(authentBoxSubmitButton);
                                    }else {
                                        previousError.innerHTML=" &nbsp;&nbsp;Invalid Password and Last Name";
                                    }
                                }
				            }.bind(this);
				    }else {
				        var BabyIntroduction = HTMLFactory.createNewbornPortraitsBabyIntroduction({'id': JsonBirth.BirthId, 'Birth': JsonBirth, 'IsLoggedIn' : JsonBirth.IsLoggedIn, 'IsAssociated' : JsonBirth.IsAssociated});
				        if( $defined( Our365.settings.webNurseryNewbornPortraitsSearch.active ) ) {
							Our365.settings.webNurseryNewbornPortraitsSearch.active.fireEvent('click');
						}
				        Our365.settings.webNurseryNewbornPortraitsSearch.active = Row;
				        BabyIntroduction.injectAfter(Row);
				    }
				    
			    }.bind(this);
				
                Row.addEvent( 'click', function() {
                    if( Row.hasClass('redirectToBaby') ) {
                        location.href = Row.getElement('a').href;
                    } else {
                        if(!Row.AlreadyOpen || Row.AlreadyOpen == false) {
                            Row.addClass("selected");
                            Row.AlreadyOpen = true;
                            var ajaxURL = Our365.settings.WebNursery.baseAjaxURL;
                            var BirthId = Row.getAttribute("rel");
                            var myAjax = new Ajax(ajaxURL, {
                                method: 'post',
					            onComplete: getBirthByIdCallBack
				            } );
				            myAjax.request('birthId='+ BirthId + '&guestPassword=&mothersName=');
				        }else {
				            Row.removeClass("selected");
                            var newRowEle = $(Row.getAttribute("rel"));
                            var newRow = $(Row.getAttribute("rel"));
                            if( newRow ) {
							    newRow.remove();
						    }
                            if( Our365.settings.webNurseryNewbornPortraitsSearch.active ) {
							    Our365.settings.webNurseryNewbornPortraitsSearch.active = null;
						    }
                            Row.AlreadyOpen = false;
				        }
				    }
				    return false;
                }.bind(this));
                
            }.bind(this));
        }
    },
    initPostReplyButton: function() {
        var ReplyButton = $(Our365.settings.PostReplyButton.ReplyButtonId);
        if(!ReplyButton){return;}
        var ReplyBox = $(Our365.settings.PostReplyButton.ReplyBoxId);
        //UI.addShowHideFunctionality(ReplyButton, ReplyBox, "hidden");
        ReplyButton.onclick = function() {
	        if(ReplyBox.hasClass("hidden"))
	        {
	            ReplyBox.removeClass("hidden");
	        }
	        else
	        {
	            ReplyBox.addClass("hidden");
	        }
	    };
    },
    initBabySwitcher: function() {
         /*
                     var image = $(featureImgEle);
		    var parentEle = image.getParent();
		    parentEle.setStyle('height', image.getStyle('height'));
            var newImage = new Element("img", {'id': featureImgEle});
            newImage.src = url;
            newImage.addEvent( 'load', function() {
				image.replaceWith(newImage);
				isWaiting = false;
			});
                    */
        var thumbnails = $$(Our365.settings.BabySwitcher.Thumbnails);
        thumbnails.each(function(thumbnail) {
            thumbnail.addEvent('click', function(){
               var hasId = true;
                var MainBabyImage = $(Our365.settings.BabySwitcher.MainBabyImageId);
                if(!MainBabyImage) {
                    hasId = false;
                    var MainBabyImage = $$(Our365.settings.BabySwitcher.MainImageParentId)[0];
                    if(!MainBabyImage) {return;}
                    MainBabyImage.hasRel = true;
                }
                
                var clickedImage = $ES("img", thumbnail)[0];
                if( MainBabyImage.src != clickedImage.src ) { 
                    if(!MainBabyImage.hasRel) {
                        var newImage = new Element('img' );
					    
					    if( hasId ) {
					        newImage.id = Our365.settings.BabySwitcher.MainBabyImageId
					    }
					    if(clickedImage.width>clickedImage.height)
					    {
					       
					       newImage.setStyle( 'width', '325px' );
					        newImage.setStyle( 'height', '225px' );
					       /* old method
					         newImage.setStyle( 'width', '345px' );
					        newImage.setStyle( 'height', '242px' );*/

					    }
					    else
					    {
					        newImage.setStyle( 'width', '214px' );
						    newImage.setStyle( 'height', '300px' );
						    /*second method
						            newImage.setStyle( 'width', '196px' );
						    newImage.setStyle( 'height', '280px' );*/
					    }
					    
					    newImage.src = clickedImage.src;
					    
					    
					    if( window.ie ) { 
					        MainBabyImage.replaceWith(newImage);
							newImage.addEvent('load',function(){
								MainBabyImage.src = newImage.src;
							});
						} else {
							MainBabyImage.replaceWith(newImage);
						}
						/*
					    if(clickedImage.width>clickedImage.height)
					    {
					        newImage.width = clickedImage.width *5;
					        newImage.height = clickedImage.height*5;
					    }
					    else
					    {
					        newImage.width = clickedImage.width *7;
					        newImage.height = clickedImage.height*7;
					    }
					    */
					}else {
					    var newImage = new Element('img', {
					        //'width': '405',
					        //'height': '306',
					        'class': 'main'
					    });
					    newImage.src = thumbnail.getAttribute("rel");
					    
					    if( window.ie ) { 
							newImage.addEvent('load',function(){
								MainBabyImage.replaceWith(newImage);
							});
						} else {
							MainBabyImage.replaceWith(newImage);
						}
					    
					}
					
				}
            }.bind(this));
        }.bind(this));
    },
    
    initSignIn:function() {
		var signInEle = $$(Our365.settings.signIn.container)[0];
		var showEles = $$(Our365.settings.signIn.showSignIn);
		if( showEles && signInEle ) {
			UI.initCloseButton( signInEle );
			showEles.each(function(ele){
				ele.addEvent('click', function() {
					UI.fadeInElement( signInEle, function(){
						signInEle.getElement('input').focus();	
					});
					return true;
				});
				ele.href = UI.settings.voidLink;
			});
			if( signInEle.hasClass(Our365.settings.signIn.triggerSignIn) ) {
				UI.fadeInElement( signInEle, function() { 
					signInEle.getElement('input').focus();
				});
			}
		}
    },
    initFamilyList:function() {      
		var familyListEle = $(Our365.settings.familyList.containerIdPublic);
		var showEles = $$(Our365.settings.familyList.showFamilyList);				 				
        if(familyListEle == null)
		{
           familyListEle = $(Our365.settings.familyList.containerIdMyCart);
		}	      
		if(familyListEle == null)
		{
           familyListEle = $(Our365.settings.familyList.containerIdCommunity);
		}	  
		//alert(familyListEle);                               
		if( showEles && familyListEle ) {			
			UI.initCloseButton( familyListEle ); 
			showEles.each(function(ele){
				ele.addEvent('click', function() {
					//if( familyListEle.hasClass( UI.settings.hiddenClass ) ){
						UI.fadeInElement( familyListEle );
					//} else {
						//UI.fadeOutElement( familyListEle );
					//}
				});
				ele.href = UI.settings.voidLink;
			});		
		}    
    },
	initRegistrationPage: function() {
	    
	    var PhotoIdSearchContainerCheckBox = $$("span.PhotoIdSearchContainerCheckBox input")[0];
	    if(PhotoIdSearchContainerCheckBox) {
	        PhotoIdSearchContainerCheckBox.addEvent('click', function() {
	            var PhotoIdSearchContainer = $$("div.PhotoIdSearchContainer")[0];
	            if(PhotoIdSearchContainer) {
	                if(PhotoIdSearchContainerCheckBox.checked) {
	                    PhotoIdSearchContainer.removeClass("hidden");
	                }else if(!PhotoIdSearchContainer.hasClass("hidden")) {
	                    PhotoIdSearchContainer.addClass("hidden");
	                }
	            }
	        });
	    }
	    var PhotoIdSearchButton = $("PhotoIdSearchButton");
	    if(PhotoIdSearchButton) {
	        PhotoIdSearchButton.href = UI.settings.voidLink;
	        PhotoIdSearchButton.addEvent('click', function() {
	            var photoId = $$("input.photoId")[0].value;
	            var photoIdPassword = $$("input.photoIdPassword")[0].value;
    	        
	            var getValidatePhotoIdAndPasswordCallBack = function(request) {
                    var newJson = Json.evaluate(Our365.stripDotNetJsonCrap(request));
                    
                    var errorMessage = $('photoIdMessage');
                    if(!errorMessage) {
                       errorMessage  = new Element("span", {'id': 'photoIdMessage','class': 'error'});
                    }
                    if(newJson.ValidPassword) {
                        errorMessage.setText("OK!");
                        var FirstNameTB = $$("input.FirstNameTB")[0];
                        var LastNameTB = $$("input.LastNameTB")[0];
                        var CityTB = $$("input.CityTB")[0];
                        var Address1TB = $$("input.Address1TB")[0];
                        var Address2TB = $$("input.Address2TB")[0];
                        var ZipTB = $$("input.ZipTB")[0];
                        var ConfirmEmailTB = $$("input.ConfirmEmailTB")[0];
                        var EmailTB = $$("input.EmailTB")[0];
                        var StateDropDown = $$("select.StateDropDown")[0];
                        var CountryDropDown = $$("select.CountryDropDown")[0];
                        var SapCustomerId = $$("input.SapCustomerId")[0];
                        FirstNameTB.value = newJson.Parent.FirstName;
                        LastNameTB.value = newJson.Parent.LastName;
                        EmailTB.value = ConfirmEmailTB.value = newJson.Parent.Email;
                        CityTB.value = newJson.Parent.Address.City;
                        Address1TB.value = newJson.Parent.Address.AddressLine1;
                        Address2TB.value = newJson.Parent.Address.AddressLine2;
                        ZipTB.value = newJson.Parent.Address.ZipCode;
                        SapCustomerId.value = newJson.Parent.SapCustomerId;
                        for(var i=0;i<StateDropDown.options.length;i++) {
                            if(StateDropDown.options[i].value == newJson.Parent.Address.State)
                            {
                                StateDropDown.options[i].selected = "selected";
                                break;
                            }
                        }
                        for(var i=0;i<CountryDropDown.options.length;i++) {
                            if(CountryDropDown.options[i].value == newJson.Parent.Address.Country)
                            {
                                CountryDropDown.options[i].selected = "selected";
                                break;
                            }
                        }
                    }else if(newJson.ValidPassword == false && newJson.ValidPhotoId == true)  {
                        errorMessage.setText("Please enter a valid password or photo ID.");
                    }else if(newJson.ValidPassword == false && newJson.ValidPhotoId == false)  {
                        errorMessage.setText("Please enter a valid password or photo ID."); 
                    }
                    
                    errorMessage.injectAfter(PhotoIdSearchButton);
                }.bind(this);
	            var myAjax = new Ajax(Our365.settings.Registration.baseAjaxUrl, {
                    method: 'post',
	                onComplete: getValidatePhotoIdAndPasswordCallBack
                });
                myAjax.request('photoId='+ photoId + '&password=' + photoIdPassword);
            
                
	        });
	    }
	    //var NewsletterContainer =  $$("div.NewsletterContainer")[0];
	    var ExpectingCheckBox = $$("span.ExpectingCheckBox input")[0];
	    
	    if(ExpectingCheckBox) {
	        ExpectingCheckBox.addEvent('click', function() {
	            var ExpectingContainer = $$("div.ExpectingContainer")[0];
	            if(!ExpectingContainer) {return;}
	            if(ExpectingCheckBox.checked) {
	                ExpectingContainer.removeClass("hidden");
//	                if(NewsletterContainer) {
//	                    NewsletterContainer.removeClass("hidden");
//	                }
	            }else if(!ExpectingContainer.hasClass("hidden")) {
	                ExpectingContainer.addClass("hidden");
//	                if(NewsletterContainer) {
//	                    NewsletterContainer.addClass("hidden");
//	                }
	            }
	        });
	    }
	    var ParentRadioButton = $$("span.ParentRadioButton input")[0];
	    var GrandparentRadioButton = $$("span.GrandparentRadioButton input")[0];
	    var OtherRadioButton = $$("span.OtherRadioButton input")[0];
	    
	    if(ParentRadioButton) {
	        ParentRadioButton.addEvent('click', function() {
	            var ChildrenContainer = $$("div.ChildrenContainer")[0];
	            if(!ChildrenContainer) {return;}
	            if(ParentRadioButton.checked) {
	                ChildrenContainer.removeClass("hidden");
	            }else if(!ChildrenContainer.hasClass("hidden")) {
	                ChildrenContainer.addClass("hidden");
	            }
	        });
	    }
	    if(GrandparentRadioButton) {
	        if(GrandparentRadioButton.checked) {
	            var ChildrenContainer = $$("div.ChildrenContainer")[0];
	            ChildrenContainer.addClass("hidden");
	        }
	        GrandparentRadioButton.addEvent('click', function() {
	            var ChildrenContainer = $$("div.ChildrenContainer")[0];
	            if(!ChildrenContainer) {return;}
	            ChildrenContainer.addClass("hidden");
	        });
	    }
	    if(OtherRadioButton) {
	        if(OtherRadioButton.checked) {
	            var ChildrenContainer = $$("div.ChildrenContainer")[0];
	            ChildrenContainer.addClass("hidden");
	        }
	        OtherRadioButton.addEvent('click', function() {
	            var ChildrenContainer = $$("div.ChildrenContainer")[0];
	            if(!ChildrenContainer) {return;}
	            ChildrenContainer.addClass("hidden");
	        });
	    }
	    var ChildrenDropDownList = $$("select.ChildrenDropDownList")[0];
	    if(ChildrenDropDownList) {
	        if(ChildrenDropDownList.value != 0) {
	            var ChildrenTable = $$("div.ChildrenTable")[0];
	            var Rows = $$("#CurrentNumberOfChildrenTable tr.ChildrenTableRow");
                for(var i=0;i<Rows.length;i++) {
                    if(i <= (ChildrenDropDownList.value-1)) {
                        Rows[i].removeClass("hidden");
                    }else {
                        Rows[i].addClass("hidden");
                    }
                }
                ChildrenTable.removeClass("hidden");
	        }
	        ChildrenDropDownList.addEvent('change', function() {
	            var ChildrenTable = $$("div.ChildrenTable")[0];
	            if(ChildrenDropDownList.value != 0) {
	                var Rows = $$("#CurrentNumberOfChildrenTable tr.ChildrenTableRow");
	                for(var i=0;i<Rows.length;i++) {
	                    if(i <= (ChildrenDropDownList.value-1)) {
	                        Rows[i].removeClass("hidden");
	                    }else {
	                        Rows[i].addClass("hidden");
	                    }
	                }
	                ChildrenTable.removeClass("hidden");
	            }else {
	                ChildrenTable.addClass("hidden");
	            }
	        });
	    }
	    var MainNewsletterCheckBox = $$("span.MainNewsletterCheckBox input")[0];
	    var NewsletterACheckBox = $$("span.NewsletterACheckBox input")[0];
	    var NewsletterBCheckBox = $$("span.NewsletterBCheckBox input")[0];
	    var NewsletterCCheckBox = $$("span.NewsletterCCheckBox input")[0];
	    //var 
	    if(MainNewsletterCheckBox) {
	        MainNewsletterCheckBox.addEvent('click', function() {
	            if(!MainNewsletterCheckBox.checked) {
	                NewsletterACheckBox.checked = NewsletterBCheckBox.checked = NewsletterCCheckBox.checked = false;
	            }
	        });
	        NewsletterACheckBox.addEvent('click', function() {
	            if(!NewsletterACheckBox.checked && !NewsletterBCheckBox.checked && !NewsletterCCheckBox.checked) {
	                MainNewsletterCheckBox.checked = false;
	            }else {
	                MainNewsletterCheckBox.checked = true;
	            }
	        });
	        NewsletterBCheckBox.addEvent('click', function() {
	            if(!NewsletterACheckBox.checked && !NewsletterBCheckBox.checked && !NewsletterCCheckBox.checked) {
	                MainNewsletterCheckBox.checked = false;
	            }else {
	                MainNewsletterCheckBox.checked = true;
	            }
	        });
	        NewsletterCCheckBox.addEvent('click', function() {
	            if(!NewsletterACheckBox.checked && !NewsletterBCheckBox.checked && !NewsletterCCheckBox.checked) {
	                MainNewsletterCheckBox.checked = false;
	            }else {
	                MainNewsletterCheckBox.checked = true;
	            }
	        });
	    }
	},
	initNewsletters: function() {
		try { 
			var newsletterContainer = $(Our365.settings.newsletters.containerId);
			if( newsletterContainer ) {
				UI.initSelectAll(newsletterContainer);
			}
		} catch( e ) {
			debug.log( Our365.errorMessages.galleryGeneric( e ) );
		}
	},

	initAlertToggle: function() {
		var toggleEles = $$(Our365.settings.familyAlerts.alertTitle);
		var allEles = $$(Our365.settings.familyAlerts.alertContent);
		if (allEles && toggleEles) {
			allEles.each(function(item,index){ 
				var mySlide = new Fx.Slide(item);
				
				toggleEles[index].addEvent('click', function(e){
					e = new Event(e);
					mySlide.toggle();
					e.stop();
				});
			});
		}
	},
	initChildDateEntry: function() {
		var dateSelects = $$('.ChildrenTableRow select');
		var dateRows = $$('#CurrentNumberOfChildrenTable .ChildrenTableRow');

		dateRows.each(function( row ) {
			var selectedYear = row.getElement(Our365.settings.datePicker.yearCssSelector);
			var selectedMonth = row.getElement(Our365.settings.datePicker.monthCssSelector);
			var selectedDay = row.getElement(Our365.settings.datePicker.dayCssSelector);
			var eleSurprise = row.getElement('.surprise');

			var thisDate = new Date();
			thisDate.setFullYear(selectedYear.value,selectedMonth.value-1,selectedDay.value);
			var today = new Date();
			
			if ( thisDate > today ) {
				if( eleSurprise.hasClass('hidden') ) {
					eleSurprise.removeClass('hidden');
				}
			} else {
				if( !eleSurprise.hasClass('hidden') ) {
					eleSurprise.addClass('hidden');
				}
			}
		});
		
		//set the onchange event for the selects
		dateSelects.each(function(ele) {
			ele.addEvent('change', function() {
				showSurprise(this);
				processDate();
			});
		});
		
		var showSurprise = function(ele) {
			var parentTD = $(ele).getParent().getParent();
			var selectedYear = parentTD.getElement(Our365.settings.datePicker.yearCssSelector);
			var selectedMonth = parentTD.getElement(Our365.settings.datePicker.monthCssSelector);
			var selectedDay = parentTD.getElement(Our365.settings.datePicker.dayCssSelector);
			var eleSurprise = parentTD.getParent().getParent().getElement('.surprise');
			
			var thisDate = new Date();
			thisDate.setFullYear(selectedYear.value,selectedMonth.value-1,selectedDay.value);
			var today = new Date();
			
			if ( thisDate > today ) {
				if( eleSurprise.hasClass('hidden') ) {
					eleSurprise.removeClass('hidden');
				}
			} else {
				if( !eleSurprise.hasClass('hidden') ) {
					eleSurprise.addClass('hidden');
				}
			}
		}
			
		var processDate = function() {
			var childDates = [];
			
			//get all date values, put in array
			dateRows.each(function( row, i ) {
				var yearEle = row.getElement(Our365.settings.datePicker.yearCssSelector);
				var monthEle = row.getElement(Our365.settings.datePicker.monthCssSelector);
				var dayEle = row.getElement(Our365.settings.datePicker.dayCssSelector);
				
				childDates[i] = { 'month': parseInt(monthEle.value), 'day': parseInt(dayEle.value), 'year': parseInt(yearEle.value) };
			});

			//compare years, get youngest
			if ( childDates.length > 1 ) {
				var childDatesSorted = childDates.sort( sortByYear );
				//console.log(childDatesSorted);
				var youngest = childDatesSorted[0];
			} else {
				var youngest = childDates[0];
			}
	
			if ( $('babyNewsletters') ) {
				//update the newsletter fields
				var NewsLetterRow = $$('.registrationOptionsForm')[0];
		
				var tailoredCheckboxMom = NewsLetterRow.getElement('.NewsletterACheckBox input');
				var tailoredYear = NewsLetterRow.getElement(Our365.settings.datePicker.yearCssSelector);
				var tailoredMonth = NewsLetterRow.getElement(Our365.settings.datePicker.monthCssSelector);
				var tailoredDay = NewsLetterRow.getElement(Our365.settings.datePicker.dayCssSelector);
		
				tailoredCheckboxMom.checked = 'true';
				tailoredYear.value = youngest.year;
				tailoredMonth.value = youngest.month;
				tailoredDay.value = youngest.day;
			}
		}

		//date sorting
		var sortByYear = function( a, b ) {
		    var x = a.year;
		    var y = b.year;
		    return ((x > y) ? -1 : ((x < y) ? 1 : sortByMonth(a, b)));
		}
		var sortByMonth = function( a, b ) {
		    var x = a.month;
		    var y = b.month;
		    return ((x > y) ? -1 : ((x < y) ? 1 : sortByDay(a, b)));
		}
		var sortByDay = function( a, b ) {
		    var x = a.day;
		    var y = b.day;
		    return ((x > y) ? -1 : ((x < y) ? 1 : 0));
		}

	},
	checkUserLogin: function() {
		var userNameInput = $$('.checkUser')[0];
		var highlightDIV = $$('.userUpdate')[0];
		var keyupHandler = function() {
			if ( this.value.indexOf('@') > -1 ) {
				highlightDIV.addClass('errHighlight');
			}
		}

		userNameInput.addEvent('keyup', keyupHandler );
		userNameInput.addEvent('change', keyupHandler );
	},
	/*
	 * constants
	 */
	settings: {
		sharePage: {
			buttonId: 'sharePageButton',
			sharePageCssSelector: '.shareBabyWindow',
			triggerSharePage: 'triggerSharePage'
		},
		familyBook: {
			commentContainerId: 'commentId',
			commentDeleteButton: '.deleteEntry',
			deleteAjaxUrl: function() { return Our365.settings.ourMoments.baseAjaxUrl + '/DeleteFamilyBookComment' }
		},
		ourMoments: {
			baseAjaxUrl: '/WebServices/OurMoments.asmx'
		},
		window: { 
			confirmDeleteCssSelector: '.ConfirmDelete',
			// triggerLoadWindow: '.triggerLoadWindow',
			loadingWindowMessageAttribute: 'loadingMessage',
			confirmMessageAttribute: 'confirmMessage'
		},
		datePicker: { 
			containerCssSelector: '.triggerDatePicker',
			monthCssSelector: 'select.DatePickerMonthDropDownList',
			dayCssSelector: 'select.DatePickerDayDropDownList',
			yearCssSelector: 'select.DatePickerYearDropDownList'
		},
		community: {
			reportAbuseSelector: '.reportAbuse a'
		},
		photoEnlarger : { 
			photoLinkEles: '.enlargePhotoLink'
		},
		familyAlerts: {
			alertTitle: 'dt.alertTitle',
			alertContent: 'dd.alertContent'
		}, 
	    photoPicker: {
			loadingCssClass: 'photoPickerLoading',
			collectionId: '.photoCollection',
			container: 'photoPickerContainer',
			showPhotoPicker: 'a.showPhotoPicker',
			removePhotoFromPicker: 'a.removePhotoForPicker',
			addPhotosId: '.addPhotos',
			pickerSelectAll: '.pickerSelectAll',
			addButtonCssSelector: '.clickAction',
			//ajaxURL: '/Development/html/jsonObjects/photoPicker.xml',
			//ajaxURL: '/Moments/Photos/PhotoPickerSvc.aspx',
			ajaxURL: '/WebServices/PhotoPickerSvc.asmx/GetGalleryPhotos',
			refreshPhotoPicker: 'select.refreshDDL',
			selectedPhotosHidEle: 'input.photosSelected',
			singleSelectFlagHidEle: 'input.singleSelect',
			imgIdToUpdateHidEle: 'input.clientElementToUpdate',
			causesPostBackFlagHidEle: 'input.causesPostBack',
			showGalleryFlagHidEle: 'input.noGallery',
			noPhotoSelectedDefault: 'input.noPhotoSelectedDefault',
			galleryTitle: 'h3.galleryTitle',
			galleryDate: 'h4.galleryDate',
			sortByEle: 'select.sortBy',
			sortOrderEle: 'select.sortOrder',
			galleryList: 'select.galleryList'
			
		},
		shippingAndHandling: {
		    fadeShippingLink: 'fadeShippingLink',
		    fadeShippingBox: 'fadeShippingBox',
		    closeLink: '#fadeShippingBox a.close',
		    closeButton: '#fadeShippingBox input.close'
		},		
		CountryChange: {
		    FamilyCountryDropDown: '.FamilyCountryDropDown input',
		    HospitalCountryDropDown: 'select.HospitalCountryDropDown',
		    FamilyStateDropDown: 'select.FamilyStateDropDown',
		    CAFamilyStateDropDown: 'select.CAFamilyStateDropDown',
		    CAHospitalStateDropDown: 'select.CAHospitalStateDropDown',
		    HospitalStateDropDown: 'select.HospitalStateDropDown',
		    baseAjaxURL: '/WebServices/NewbornPortraits.asmx/GetStateByCountryCode'
		},
		gallery: {
			containerId: '.viewingTitle',
			collectionId: 'galleryCollectionId',
			settingsButtonCssSelector: 'a.showSettings',
			settingsContainerCssSelector: '.settingsWindow'
		},
		newsletters: {
			containerId: 'newsletters'
			//collectionId: 'newsletterCollectionId'
		},
		WebNursery: {
		    NewbornPortraitsSearchTableId: 'NewbornPortraitsSearchTable',
		    highlightableRow: 'tr.highlightableRow',
		    baseAjaxURL: '/WebServices/NewbornPortraits.asmx/GetBirthByBirthId'
		},
		Registration: {
		    baseAjaxUrl: '/WebServices/PhotoIdLookUpService.asmx/ValidatePhotoIdAndPassword'
		},
		BabySwitcher: {
		    MainBabyImageId: 'MainBabyImage',
		    Thumbnails: 'div.imageSwitcherContainer a',
		    MainImageParentId: 'div#MainImageParent img.main'
		},
		signIn: {
			showSignIn: 'a.showSignIn',
			container: '.signInWindow',
			triggerSignIn: 'triggerShowSignIn'
		},
		PostReplyButton: {
		    ReplyButtonId: "ReplyButton",
		    ReplyBoxId: 'ReplyBox'
		},
		familyList: {
			showFamilyList: 'a.showFamilyList',			
			containerIdPublic: 'ctl00_ctl00_Header1_FamilyPicker2_familyListWindow',  //'familyListWindow'
            containerIdMyCart: 'ctl00_Header1_FamilyPicker2_familyListWindow',
            containerIdCommunity: 'ctl00_ctl00_FamilyPicker1_familyListWindow'
		},
		webNurseryNewbornPortraitsSearch: {
			active: null,
			formButton: null
		},
		registration: {
			familyRoleContainerId: 'familyRole',
			relationship: { 
				container: '.relationship',
				parent: '.parent input',
				grandParent: '.grandparent input',
				otherRelative: '.other input'
			},
			expectingBaby: {
				container: '.expectingBaby',
				yes: '.yesExpecting input',
				no: '.noExpecting input'
			},
			babyDueDateContainer: '.babyDueDate',
			expectingMoreBabiesContainer: '.expectingMoreBabies',
			childrenCountContainer: '.expectingMoreBabies'
		},
		borderChooser: {
		    container: '.borderChooser',
		    selectButton: '.selectButton',
		    borderDetail: '.borderDetail',
		    borderChoiceContainer: '.borderChoiceContainer',
		    borderDisplaySpan: '.borderName',
		    borderSapId: '.borderSapId',
		    borderDisplayName: '.borderDisplayName',
		    borderPopUpContainer: '.borderPopUpContainer',
		    radioButtonYes: '.selectBorderYesButton input',
		    radioButtonNo: '.selectBorderNoButton input',
		    selectBorderAction: '.selectBorder'
		},
		// use this to init all select all checkboxes, this should be a CSS selector to thecontainer 
		// element, that container should include a checkbox that has a "selectAll" class, all other 
		// checkboxes will match the value whenever the selectAll checkbox is clicked on.
		selectAllElements: [
		    ".myAccountData"
		]
	},
	/*
	 * error message constants
	 */
	errorMessages: {
		closeButton: function( e,ele ) {
			return( '[ERROR] could not set onclick event on: ' + ele + "\n" + "javascript says '" + e + "'");
		},
		photoPicker: function(e) {
			return( "[ERROR] 'photoPicker': i should have gotten images via ajax and created thumbnails for them.\njavascript says '" + e + "'" );
		},
		galleryGeneric: function(e) {
			return( "[ERROR] 'galleryGeneric', i should have gotten images via ajax and create thumbnails for them. " + "\njavascript says '" + e + "'");
		},
		genericMessage: function( message, e ) {
			return( "[ERROR] '" + message + "' was sent back.\njavascript says '" + e + "'" ); 
		}
	},
    stripDotNetJsonCrap: function(crappyString) {
        var crappyString = crappyString.split("string xmlns=\"http://tempuri.org/\">")[1];
        return crappyString.split("</string>")[0];
    }
};
function WebNurseryNewbornPortraitsSearchItemMouseOver() {
    this.addClass("selected");
}
function WebNurseryNewbornPortraitsSearchItemMouseOut() {
	if( ! this.AlreadyOpen) {
		this.removeClass("selected");
	}
}

// 4-9-2008 CL
// added these 2 functions for Kapiolani (2770) who didn't want Our365 logo and text
function getHospId() {  // gets SAP Hospital ID from URL Querystring
    var querystr = window.location.search.substring(1);
    var keypairs = querystr.split("&");
    for (i = 0; i < keypairs.length; i++)
    {
        var pair = keypairs[i].split("=");
        if (pair[0] == "sid")
        {
            return pair[1];
        }
    }
    return null;
}
function isNoOur365BrandHosp(hospid) { // checks to see if hospital page shouldn't display Our365 Webnursery branding
    if (hospid != null && hospid == "2770")
        return true;
    else
        return false;
}
