var AppBehavior = Class.create();
AppBehavior.Load = function() {
	OS.RegisterBehaviour(AppBehavior.Rules);
}
AppBehavior.Rules = {
    '#Cnt_Content': function(element) {
        Event.observe(window, 'resize', _OnResize);
    },
    '.command': function(element) {
        Application.SetRollover(element);
    },
    '.viewSplash #Media_Canvas': function() {
        swfobject.embedSWF('flash/home.swf', 'Media_Canvas', 960, 560, '8', 'flash/expressInstall.swf', {}, { wmode: 'transparent' }, null);
    },
    '.viewLifestyle #Media_Canvas': function() {
        if (Element.hasClassName('Body', 'viewGallery')) return;
        swfobject.embedSWF('flash/lifestyle-movie-holder.swf', 'Media_Canvas', 767, 428, '8', 'flash/expressInstall.swf', {}, { wmode: 'transparent' }, null);
    },
    '.viewPropertyTour #Media_Canvas': function() {
        swfobject.embedSWF('flash/site-plan-viewer.swf', 'Media_Canvas', 702, 547, '8', 'flash/expressInstall.swf', {}, { wmode: 'transparent' }, null);
    },
    '#Cnt_Content a': function(element) {
        Application.SetRollover(element);
    },
    '.togglable': function(element) {
        Application.SetTogglableBehavior(element, null, _OnResize);
    },
    'a': function(element) {
        Event.observe(element, 'click', function() {
            AppBehavior.StopVideos();
        });
    },
    '#Nav_Main .navItem': function(element) {
        Application.SetRollover(element);
        Event.observe(element, 'click', function() {
            AppBehavior.StopVideos();
            var eHref = Element.down(element, 'a');
            if (eHref) top.location.href = eHref.href;
        });
    },
    '#Nav_Contact .navItem': function(element) {
        Application.SetRollover(element);
    },
    '#Nav_Footer .navItem': function(element) {
        Application.SetRollover(element);
    },
    '.pvRelated': function(element) {
        Application.SetPanelViewBehavior(element, _OnResize);
    },
    '.pvCallout': function(element) {
        Application.SetPanelViewBehavior(element, _OnResize);
    },
    '#Dv_RelatedSitePlan': function(element) {
        //        if (!Prototype.Browser.IE || Prototype.BrowserVersion() >= 7) return;
        //        Event.observe(element, 'click', function() {
        //            top.location.href = 'Downloads/Blalock-Lakes-Site-Plan.pdf';
        //        });
    },
    '#Dv_CalloutMembership': function(element) {
        //        if (!Prototype.Browser.IE || Prototype.BrowserVersion() >= 7) return;
        //        Event.observe(element, 'click', function() {
        //            top.location.href = 'Downloads/Blalock-Member-Info.pdf';
        //        });
    },
    '.cmdContactForm': function(element) {
        Event.observe(element, 'click', function() {
            if (!$('Cnt_ContactForm')) {
                top.location.href = 'ContactUs.aspx';
                return;
            }
            Element.scrollTo('Body');
            ContactBehavior.OpenContactForm();
        });
    },
    '.cmdCancelContactForm': function(element) {
        Event.observe(element, 'click', function() {
            ContactBehavior.CloseContactForm();
        });
    },
    'body': function(element) {
        if (Prototype.Browser.IE) Element.addClassName('Body', 'ie' + Prototype.BrowserVersion());

        if (Element.hasClassName('Body', 'viewSplash')) {
            Element.addClassName('Ni_Home', 'selected');
        } else if (Element.hasClassName('Body', 'viewAbout')) {
            Element.addClassName('Ni_About', 'selected');
        } else if (Element.hasClassName('Body', 'viewLifestyle')) {
            Element.addClassName('Ni_Lifestyle', 'selected');
        } else if (Element.hasClassName('Body', 'viewContact')) {
            Element.addClassName('Ni_Contact', 'selected');
        } else if (Element.hasClassName('Body', 'viewSetting')) {
            Element.addClassName('Ni_Setting', 'selected');
        } else if (Element.hasClassName('Body', 'viewMembership')) {
            Element.addClassName('Ni_Membership', 'selected');
        } else if (Element.hasClassName('Body', 'viewRealEstate')) {
            Element.addClassName('Ni_RealEstate', 'selected');
        }

        Event.observe($(document), 'click', function(e) {
            $$('.autocomplete').each(function(autocomplete) {
                if (Position.within(autocomplete, e.pointerX(), e.pointerY())) return;
                Element.hide(autocomplete);
            });
            var eDp = $('Dp_Calendar');
            if (eDp) {
                if (Position.within(eDp, e.pointerX(), e.pointerY())) return;
                if (AppBehavior.DatePicker) {
                	AppBehavior.DatePicker.hide();
                	_OnResize();
                }	
            }
        });
        if (typeof (DatePickerModel) != 'undefined') {
            AppBehavior.DatePicker = new DatePickerModel('Dp_Calendar', {
                onDateSelected: AppBehavior.OnDateSelected
            });
        }        
        Application.CurrentHash = null;
        Application.InitHistory();

        window.onbeforeunload = function() {
            AppBehavior.StopVideos();
        }
    },
    '.datetime': function(element) {
        var eCommand = Element.down(element, '.cmdGetDate');
        var eInput = Element.down(element, 'input');
        if (!eInput || !eCommand) { console.warn(' no date on element: ' + element.identify()); return; }
        Event.observe(eCommand, 'click', function() {
            if (AppBehavior.DatePicker.isVisible) return;
            AppBehavior.FireGetDate(eInput, eCommand);
        });
    },
    '#Map_Location': function(element) {
        var map = new YMap(element);
        map.addTypeControl();
        map.addZoomLong();
        map.addPanControl();
        map.setMapType(YAHOO_MAP_REG);
        var sAddr = '4075 New Corinth Road Newnan, Georgia 30263';
        map.drawZoomAndCenter(sAddr, 8);
        var oImage = new YImage();
        oImage.src = 'http://blalocklakes.mcraeinteractive.com/images/skin/mapMarker.png';
        oImage.size = new YSize(37, 71);
        oImage.offsetSmartWindow = new YCoordPoint(0, 0);
        var oMarker = new YMarker(sAddr, oImage, 'MapMarker');
        //oMarker.addAutoExpand('Blalock Lakes Reality');
        //        YEvent.Capture(oMarker, EventsList.MouseClick, function() {
        //            oMarker.openSmartWindow('Opened');
        //        });
        map.addOverlay(oMarker);
        AppBehavior.LocationMap = map;
    },
    '#Form_SignIn .textbox input': function(element) {
        Event.observe(element, 'keydown', function(e) {
            if (e.keyCode == 13) __doPostBack('ctl00$Cph_Content$Cmd_SignIn', '');
        });
    },
    '#fUsername': function(element) {
        element.focus();
    }
};
AppBehavior.DatePicker = null;
AppBehavior.CurrentDateElement = null;
AppBehavior.OnDateSelected = function(element, square) {
    if (AppBehavior.CurrentDateElement) {
        AppBehavior.CurrentDateElement.value = square.Date;
        AppBehavior.CurrentDateElement.focus();
        AppBehavior.CurrentDateElement.blur();
    }
    AppBehavior.DatePicker.hide();
    _OnResize();
}
AppBehavior.FireGetDate = function(input, command) {
    AppBehavior.CurrentDateElement = input;
    AppBehavior.CurrentDateElement.focus();
    AppBehavior.DatePicker.show();
    var offsets = Element.cumulativeOffset(command);
    var iTop = offsets[1];
    var iLeft = offsets[0];
    Element.setStyle('Dp_Calendar', { left: iLeft + 'px', top: iTop + 'px' });
    AppBehavior.DatePicker.show();
    var sDate = AppBehavior.CurrentDateElement.value || null;
    AppBehavior.DatePicker.selectDate(new Date(sDate));
    _OnResize();
}
AppBehavior.NavigateTo = function(section) {
    if (Element.hasClassName('Body', 'viewSporting')) {
        if (!section) $('Nav_SportingAmenities').select('.navItem').invoke('removeClassName', 'selected');
        if ($('Ni_' + section)) Application.SelectNav($('Ni_' + section));
        SportingBehavior.SwitchAmenity(section);
    } else if (Element.hasClassName('Body', 'viewFamily')) {
        if (!section) $('Nav_FamilyActivities').select('.navItem').invoke('removeClassName', 'selected');
        if ($('Ni_' + section)) Application.SelectNav($('Ni_' + section));
        FamilyBehavior.SwitchAmenity(section);
    } else if (Element.hasClassName('Body', 'viewBuilderProfiles')) {
        if (!section) $('Nav_BuilderProfiles').select('.navItem').invoke('removeClassName', 'selected');
        if ($('Ni_' + section)) Application.SelectNav($('Ni_' + section));
        BuilderProfileBehavior.SwitchAmenity(section);
    }
}
AppBehavior.OnChangeHistory = function(hash) {
    if (hash.length == 0 && Application.CurrentHash) {
        Application.CurrentHash = null;
    }
    if (Application.CurrentHash != hash) {
        Application.CurrentHash = hash;
        AppBehavior.NavigateTo(hash);
    }
    if (Prototype.Browser.IE) setTimeout(function() { Application.SetTitle(Application.CurrentTitle); }, 0);
}

AppBehavior.ShowAutocompleter = function(autocompleter) {

    autocompleter.changed = true;
    autocompleter.hasFocus = true;
    if (autocompleter.observer) clearTimeout(autocompleter.observer);
    autocompleter.observer =
		setTimeout(autocompleter.onObserverEvent.bind(autocompleter), autocompleter.options.frequency * 1000);
}
AppBehavior.Freeze = function(key, options) {
    if (key == 'Admin') return AppBehavior.Freeze('All', {zIndex:1});
    if (!options) options = {};
    options = Object.extend({
        zIndex: 50,
        opacity: .5,
        backgroundColor: '#472E21'
    }, options);
    var sId = 'Frozen_' + key;
    var eFrozen = $(sId);
    var eBody = document.getElementsByTagName('body')[0];
    if (!eFrozen) {
        var eFrozen = document.createElement('div');
        eFrozen.id = sId;
        Element.hide(eFrozen);
        eBody.appendChild(eFrozen);
    }

    Element.addClassName(eFrozen, 'frozen');
    var iTop = 0;
    if(key == 'Admin') iTop = -100;
    Element.setStyle(eFrozen, {
        position: 'absolute',
        top: iTop + 'px', left: 0,
        overflow: 'hidden',
        backgroundColor: options.backgroundColor,
        zIndex: options.zIndex
    });
    Element.setOpacity(eFrozen, options.opacity);
    //forced
    var pageWidth = Element.getWidth(eBody);
    var pageHeight = Element.getHeight(eBody);
    if (key == 'Admin') pageWidth = 1040;
    Element.setStyle(eFrozen, {
        width: pageWidth + 'px',
        height: (pageHeight + 340) + 'px'
    });

    Element.show(eFrozen);
}
AppBehavior.Unfreeze = function(key) {
    if (key == 'Admin') AppBehavior.Unfreeze('All');
    var sId = 'Frozen_' + key;
    var eFrozen = $(sId);
    if(eFrozen) Element.hide(eFrozen);
}
AppBehavior.StopVideos = function() {
    var oPlayer = Application.GetFlashObject('Media_Canvas');
    if (oPlayer && oPlayer.stopVideo) oPlayer.stopVideo();
}
AppBehavior.OnFlashLoaded = function(key) {
    if (key == 'LifestylePlayer') {
        var oPlayer = Application.GetFlashObject('Media_Canvas');
        if(!oPlayer) return;
        if(Element.hasClassName('Body', 'viewSporting')) {
            oPlayer.playVideo('sportingAmenities/sporting-amenities');        
        } else if(Element.hasClassName('Body', 'viewFamily'))  {
            oPlayer.playVideo('familyActivities/family-activities');        
        } else {
            oPlayer.playVideo('lifestyle');        
        }
    }
}


AppBehavior.Load();

