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);
    },
    '#Cnt_Content a': function(element) {
        Application.SetRollover(element);
    },
    '.togglable': function(element) {
        Application.SetTogglableBehavior(element, null, _OnResize);
    },
    '#Nav_Main .navItem': function(element) {
        Application.SetRollover(element);
    },
    '#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);
    },
    'body': function(element) {
        if (Element.hasClassName('Body', 'viewSplash')) {
            //Element.addClassName('Ni_Home', '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;
                Element.hide(eDp);
                _OnResize();
            }
        });
        if (typeof (DatePickerModel) != 'undefined') {
            AppBehavior.DatePicker = new DatePickerModel('Dp_Calendar', {
                onDateSelected: AppBehavior.OnDateSelected
            });
        }
    },
    '.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() {
            AppBehavior.FireGetDate(eInput, eCommand);
        });
    },
    '#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();
    _OnResize();
}
AppBehavior.NavigateTo = function(section) {
    //if (section) section = section.toLowerCase();
}
AppBehavior.OnChangeHistory = function(hash) {
if (hash.length == 0 && Application.CurrentHash) {
        Application.CurrentHash = null;
    }
    if (Application.CurrentHash != hash) {
        var arrItem = hash.split('|');
        Application.CurrentHash = hash;
        AppBehavior.NavigateTo(arrItem[0]);
    }
    if (Prototype.Browser.IE) setTimeout(function() { Application.SetTitle(Application.Title); }, 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: '#0C1A3F'
    }, 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 = 0;
    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 = 950;
    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.Load();

