var AppBehavior = Class.create();
AppBehavior.Load = function() {
	OS.RegisterBehaviour(AppBehavior.Rules);
}
AppBehavior.Rules = {
    '#Cnt_Content': function(element) {
        Event.observe(window, 'resize', _OnResize);
        AppBehavior.ApplyIfr();
    },
    '.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();
            }
        });
        //        Event.observe($(document), 'mousemove', function(e) {
        //            if (e.pointerY() % 15 != 0) return;
        //            window.scrollTo(0, e.pointerY() - 300);
        //        });

        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();
    },
    '.multiView.threeColumn': function(element) {
        //Load the multi column view
        Element.show('Gallery_Articles');
        var contentMulti = new MultiColumn(element, AppBehavior);
        contentMulti.update(3, true, true);
    },
    '#Cmd_AddComment': function(element) {
        //Chat monitor
        Chat.Refresh.delay(2);
        this.chatMonitor = new PeriodicalExecuter(Chat.Refresh, 15);

        Event.observe(element, 'click', function() {
            Chat.Add($('fCommentNickname').value, $('fCommentMessage').value);
            $('fCommentMessage').value = '';
        });
    }
};
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: '#fff'
    }, 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.ApplyIfr = function() {
    if (typeof (Ifr) == 'undefined') {
        setTimeout(AppBehavior.ApplyIfr, 50);
        return;
    }
    var oIfr = new Ifr();
    if (oIfr.isSupported) {
        oIfr.apply('.viewArticle h1', {
            src: '/fonts/Font.Prisoner.swf',
            wmode: 'transparent'
        });
        /*@cc_on/*@if (@_jscript_version >= 5.6)
        $$('flashObject').each(function(object) {
            var paramHTML = "";
            for (var j = 0, childNode; (childNode = object.childNodes[j]); j++) {
                paramHTML += childNode.outerHTML;
            }
            // Then clone and replace the object in the DOM and insert paramHTML
            object.outerHTML = object.outerHTML.replace(/(<\/object>$)/i, paramHTML + "$1");
        });
        /*@end@*/
    }
}
AppBehavior.MulticolumnUpdated = function() {
    _OnResize(); 
}
AppBehavior.Load();

