
/**
 * perform javascript enhancements
 */
window.addEvent('domready',function() {
    // fix header nav
    document.getElements('header .menu ul li:first-child').addClass('first');

    // add modal window functionality
    window.box = new CeraBox();
    window.box.addItems('#content a.overlay', {'group': false});
    window.box.addItems('.main a.overlay', {'group': false});
    var courseForm = document.id('course-selection');
    if (courseForm){
        window.box.addItems('#register-button', {
            'group': false,
            'form': courseForm
        });

        // add submit intelligence to the submit button (i.e. only submit "something")
        courseForm.toggleCourseSubmit = function(){
            var registerButton = document.id('register-button');
            var register = registerButton.getParent('div');
            var query = this.toQueryString();
            var count = (query != '') ? query.split('&').length : 0;
            register.setStyle('background-color', (count >= 1) ? '#002f59' : '#cccccc');
        }.bind(courseForm);
        courseForm.addEvent('change', courseForm.toggleCourseSubmit);
        courseForm.toggleCourseSubmit();
    }

    // make selected courses obvious
    document.getElements('#content.courses .selector input').addEvent('click', function(el){
        var box = el.target;
        var entry = box.getParent('.entry');
        if (entry){
            if (box.checked) entry.addClass('checked');
            else entry.removeClass('checked');
            var courseForm = document.id('course-selection');
            if (courseForm){
                courseForm.toggleCourseSubmit();
            }
        }
    });

    // allow browser print functionality (if available)
    document.getElements('.print-button').each(function(el){
        if (window.print) el.setStyle('display', 'inline');
    });

    // if the ticker is too long, slide it back and forth so it can be read
    var ticker = document.id('tickerwrap');
    var ticker_container = document.id('tickerwrap').getParent();
    ticker_container.dimensions = ticker_container.getDimensions();
    ticker.dimensions = ticker.getDimensions();
    if (ticker.dimensions.width > ticker_container.dimensions.width){
        ticker.dimensions.delta = (ticker_container.dimensions.width - ticker.dimensions.width);
        ticker.set('tween', {
            'duration': 1000 + ((ticker.dimensions.delta * -1) * 40),
            'transition': 'linear',
            'link': 'cancel'
        });
        ticker.get('tween').addEvent('complete', function(){
            var left = this.getStyle('left').replace(/px$/, '');
            if (left < 0){
                // move right
                (function(){this.get('tween').start('left', left, 0)}).delay(4000, this);
            } else {
                // move left
                (function(){this.get('tween').start('left', 0, this.dimensions.delta)}).delay(4000, this);
            }
        }.bind(ticker));
        ticker.addEvent('mouseover', function(){
            this.get('tween').pause();
        });
        ticker.addEvent('mouseout', function(){
            this.get('tween').resume();
        });
        (function(){this.get('tween').start('left', 0, this.dimensions.delta)}).delay(4000, ticker);
    }

    // validate the course registration page
    var registration = document.id('registration');
    if (registration){
        var fields = registration.getElements('input');
        var validate = function(){
            var fields = document.getElements('input');
            fields.each(function(el){
                var id = el.get('id');
                var value = el.get('value');
                var format = null;
                var success = null;
                switch(id){
                    case 'name':
                        success = value.match(/.+ +.+/) ? true : false;
                    break;
                    case 'phone':
                        value = value.replace(/[^0-9]+/g, '');
                        success = value.match(/^[0-9]{10}$/) ? true : false;
                        if (success) format = value.replace(/(\d{3})(\d{3})(\d{4})/, '($1) $2-$3');
                    break;
                    case 'email':
                        success = value.match(/^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$/i) ? true : false;
                    break;
                    case 'address':
                        success = value.match(/.+ +.+/) ? true : false;
                    break;
                    case 'city':
                        success = (value != '') ? true : false;
                    break;
                    case 'state':
                        value = value.toUpperCase();
                        if (value == 'OHIO') value = 'OH', format = 'OH';
                        success = (['AL' ,'AK' ,'AZ' ,'AR' ,'CA' ,'CO' ,'CT' ,'DE' ,'FL' ,'GA' ,'HI' ,'ID' ,'IL' ,'IN' ,'IA' ,'KS' ,'KY' ,'LA' ,'ME' ,'MD' ,'MA' ,'MI' ,'MN' ,'MS' ,'MO' ,'MT' ,'NE' ,'NV' ,'NH' ,'NJ' ,'NM' ,'NY' ,'NC' ,'ND' ,'OH' ,'OK' ,'OR' ,'PA' ,'RI' ,'SC' ,'SD' ,'TN' ,'TX' ,'UT' ,'VT' ,'VA' ,'WA' ,'WV' ,'WI' ,'WY'].indexOf(value) > -1) ? true : false;
                    break;
                    case 'zip':
                        value = value.replace(/[^\d]+/, '');
                        success = value.match(/^\d{5}$/) ? true : false;
                    break;
                }
                if (success !== null){
                    if (success){
                        el.getParent().setStyle('border-color', '#00cc00');
                        el.set('value', (format != null) ? format : value);
                        //el.getParent().getParent().getElement('.error-label').setStyle('display', 'none');
                    } else {
                        el.getParent().setStyle('border-color', '#cc3300');
                        //el.getParent().getParent().getElement('.error-label').setStyle('display', 'block');
                    }
                    document.id(id).success = success;
                }
            });
        };
        fields.each(function(el){
            el.addEvent('keydown', validate);
        });
        document.id('register-button').addEvent('click', function(){
            var required = ['name', 'phone', 'email', 'address', 'city', 'state', 'zip'];
            var valid = true;
            for(var i = 0; i < required.length; i++){
                if (document.id(required[i]).success != true){
                    valid = false;
                }
            }
            if (valid){
                this.submit();
            }
            return false;
        }.bind(registration));
        validate();
    }

    // look to see if this user has received the browser notice
    if (Browser.ie){
        var browserNotice = Cookie.read('browser-notice');
        if (browserNotice == null){
            // give this user the browser notice
            var link = document.getElements('.browser-overlay-link');
            if (link){
                window.box.addItems(link, {'group': false});
                link.fireEvent('click');
            }
        }
    }
});

window.addEvent('load',function() {
    // finagle the links in the info panes to work
    if (document.id('feature-pane')){
        document.id('feature-pane').getElements('div.slide').each(function(slide){
            var p = slide.getElement('div.feature_position');
            var l = slide.getElement('div.feature_link');
            if (p && l){
                l.setStyle('top', p.getPosition(slide).y + 'px');
            }
        });
    }
});


