﻿var site = {

    clearForm: function (formId) {
        $(':input', '#' + formId)
        .not(':button, :submit, :reset, :hidden')
        .val('')
        .removeAttr('checked')
        .removeAttr('selected');
    },

    emailIt: function () {
        $('#send_email').hide();

        var settings = {
            postUrl: '/sc_emailsignup.ashx',
            messageSuccess: 'Email added!',
            formId: 'email_form',
            validate: true,
            debug: true
        };

        var callback = function (d) {
            $('.message').html(d.description);
        };

        var subby = spider.submitForm(settings, callback);
        return subby.init();
    },

    validateOrder: function (e) {
        var success = true
        var message = '';
        var missed = 0;
        $('.top-form input').each(function () {
            if ($(this).val() == '') {
                $(this).addClass('alarm-input');
                success = false;
                missed++;
            } else {
            }
        });

        if (missed > 0) {
            message += 'Please fill in all details marked in yellow at the top of this form.<br />';
        }

        if (success === true) {
            $('#form-message').html('');
            $('#ups_airbills, #ups_airbills_delivery, #ups_airbills_location').removeClass('alarm-select');
            site.submitSupplyOrder(e);
        } else {
            $('#form-message').addClass('alarm-message').html(message);
        }
    },

    submitSupplyOrder: function (e) {
        $('#indicator').show();
        $.post('/sc_ordersupplies.ashx', e.serialize(), function (d) {
            var messageJSON = $.parseJSON(d);
            if (messageJSON.success == "True") {
                $('#indicator').hide();
                $('#form-message').removeClass('alarm-message').html('Success! An order confirmation email will be delivered to you shortly.');
            } else {
                $('#indicator').hide();
                $('#form-message').addClass('alarm-message').html('Failed! Please try again or contact <strong>supplyorders@pathologyinc.com</strong> directly.');
            }
        })
    }
};

// page init
jQuery(function () {
    initCufon();
    initDropDown();
    initAccordion();
    initSlideShow();
    rolloverInit();
});

// cufon init
function initCufon() {
    Cufon.replace('#content .head', { fontFamily: 'Sentinel Book' });
    Cufon.replace('#content .columns h2', { fontFamily: 'Sentinel Book' });
    Cufon.replace('#content h1', { fontFamily: 'Sentinel Book' });
    Cufon.replace('.title', { fontFamily: 'Sentinel Semibold' });
    Cufon.replace('#content.clinical-dos-wrap h2', { fontFamily: 'Sentinel Book' });
}

// accordion init
function initAccordion() {
    if (typeof $().accordion === 'function') {
        $('ul.accordion').accordion({
            active: ".selected",
            autoHeight: false,
            header: ".opener",
            collapsible: true,
            event: "click"
        });
    }
}

// dropdown init
function initDropDown() {
    var nav = document.getElementById("main-nav");
    if (nav) {
        var lis = nav.getElementsByTagName("li");
        for (var i = 0; i < lis.length; i++) {
            if (lis[i].getElementsByTagName("ul").length > 0) {
                lis[i].className += " has-drop-down"
                lis[i].getElementsByTagName("a")[0].className += " has-drop-down-a"
            }
            lis[i].onmouseover = function () {
                this.className += " hover";
            }
            lis[i].onmouseout = function () {
                this.className = this.className.replace(" hover", "");
            }
        }
    }
}

// slideshow init
function initSlideShow() {
    $('div.gallery').fadeGallery({
        slideElements: 'div.g-holder > ul > li',
        pagerLinks: 'div.swicher ul a',
        btnPlay: 'span.play',
        btnPause: 'span.pause',
        pausedClass: 'slideshow-paused',
        playClass: 'slideshow-playing',
        pauseOnHover: false,
        autoRotation: true,
        autoHeight: false,
        switchTime: 6500,
        duration: 1000
    });
}

//IMAGE ROLLOVER
function rolloverInit() {
    var x = document.getElementsByTagName("img");
    for (var i = 0; i < x.length; i++) {
        if (x[i].className.indexOf('rollover') > -1) {
            x[i].onmouseover = function () {
                this.src = this.src.replace('/off/', '/roll/')
            }
            x[i].onmouseout = function () {
                this.src = this.src.replace('/roll/', '/off/')
            }
        }
    }
}

// slideshow plugin
jQuery.fn.fadeGallery = function (_options) {
    var _options = jQuery.extend({
        slideElements: 'div.slideset > div',
        pagerLinks: 'div.pager a',
        btnNext: 'a.next',
        btnPrev: 'a.prev',
        btnPlayPause: 'a.play-pause',
        btnPlay: 'a.play',
        btnPause: 'a.pause',
        pausedClass: 'paused',
        disabledClass: 'disabled',
        playClass: 'playing',
        activeClass: 'active',
        currentNum: false,
        allNum: false,
        startSlide: null,
        noCircle: false,
        pauseOnHover: true,
        autoRotation: false,
        autoHeight: false,
        onChange: false,
        switchTime: 3000,
        duration: 650,
        event: 'click'
    }, _options);

    return this.each(function () {
        // gallery options
        var _this = jQuery(this);
        var _slides = jQuery(_options.slideElements, _this);
        var _pagerLinks = jQuery(_options.pagerLinks, _this);
        var _btnPrev = jQuery(_options.btnPrev, _this);
        var _btnNext = jQuery(_options.btnNext, _this);
        var _btnPlayPause = jQuery(_options.btnPlayPause, _this);
        var _btnPause = jQuery(_options.btnPause, _this);
        var _btnPlay = jQuery(_options.btnPlay, _this);
        var _pauseOnHover = _options.pauseOnHover;
        var _autoRotation = _options.autoRotation;
        var _activeClass = _options.activeClass;
        var _disabledClass = _options.disabledClass;
        var _pausedClass = _options.pausedClass;
        var _playClass = _options.playClass;
        var _autoHeight = _options.autoHeight;
        var _duration = _options.duration;
        var _switchTime = _options.switchTime;
        var _controlEvent = _options.event;
        var _currentNum = (_options.currentNum ? jQuery(_options.currentNum, _this) : false);
        var _allNum = (_options.allNum ? jQuery(_options.allNum, _this) : false);
        var _startSlide = _options.startSlide;
        var _noCycle = _options.noCircle;
        var _onChange = _options.onChange;

        // gallery init
        var _hover = false;
        var _prevIndex = 0;
        var _currentIndex = 0;
        var _slideCount = _slides.length;
        var _timer;
        if (_slideCount < 2) return;

        _prevIndex = _slides.index(_slides.filter('.' + _activeClass));
        if (_prevIndex < 0) _prevIndex = _currentIndex = 0;
        else _currentIndex = _prevIndex;
        if (_startSlide != null) {
            if (_startSlide == 'random') _prevIndex = _currentIndex = Math.floor(Math.random() * _slideCount);
            else _prevIndex = _currentIndex = parseInt(_startSlide);
        }
        _slides.hide().eq(_currentIndex).show();
        if (_autoRotation) _this.removeClass(_pausedClass).addClass(_playClass);
        else _this.removeClass(_playClass).addClass(_pausedClass);

        // gallery control
        if (_btnPrev.length) {
            _btnPrev.bind(_controlEvent, function () {
                prevSlide();
                return false;
            });
        }
        if (_btnNext.length) {
            _btnNext.bind(_controlEvent, function () {
                nextSlide();
                return false;
            });
        }
        if (_pagerLinks.length) {
            _pagerLinks.each(function (_ind) {
                jQuery(this).bind(_controlEvent, function () {
                    if (_currentIndex != _ind) {
                        _prevIndex = _currentIndex;
                        _currentIndex = _ind;
                        switchSlide();
                    }
                    return false;
                });
            });
        }

        // play pause section
        if (_btnPlayPause.length) {
            _btnPlayPause.bind(_controlEvent, function () {
                if (_this.hasClass(_pausedClass)) {
                    _this.removeClass(_pausedClass).addClass(_playClass);
                    _autoRotation = true;
                    autoSlide();
                } else {
                    _autoRotation = false;
                    if (_timer) clearTimeout(_timer);
                    _this.removeClass(_playClass).addClass(_pausedClass);
                }
                return false;
            });
        }
        if (_btnPlay.length) {
            _btnPlay.bind(_controlEvent, function () {
                _this.removeClass(_pausedClass).addClass(_playClass);
                _autoRotation = true;
                autoSlide();
                return false;
            });
        }
        if (_btnPause.length) {
            _btnPause.bind(_controlEvent, function () {
                _autoRotation = false;
                if (_timer) clearTimeout(_timer);
                _this.removeClass(_playClass).addClass(_pausedClass);
                return false;
            });
        }

        // gallery animation
        function prevSlide() {
            _prevIndex = _currentIndex;
            if (_currentIndex > 0) _currentIndex--;
            else {
                if (_noCycle) return;
                else _currentIndex = _slideCount - 1;
            }
            switchSlide();
        }
        function nextSlide() {
            _prevIndex = _currentIndex;
            if (_currentIndex < _slideCount - 1) _currentIndex++;
            else {
                if (_noCycle) return;
                else _currentIndex = 0;
            }
            switchSlide();
        }
        function refreshStatus() {
            if (_pagerLinks.length) _pagerLinks.removeClass(_activeClass).eq(_currentIndex).addClass(_activeClass);
            if (_currentNum) _currentNum.text(_currentIndex + 1);
            if (_allNum) _allNum.text(_slideCount);
            _slides.eq(_prevIndex).removeClass(_activeClass);
            _slides.eq(_currentIndex).addClass(_activeClass);
            if (_noCycle) {
                if (_btnPrev.length) {
                    if (_currentIndex == 0) _btnPrev.addClass(_disabledClass);
                    else _btnPrev.removeClass(_disabledClass);
                }
                if (_btnNext.length) {
                    if (_currentIndex == _slideCount - 1) _btnNext.addClass(_disabledClass);
                    else _btnNext.removeClass(_disabledClass);
                }
            }
            if (typeof _onChange === 'function') {
                _onChange(_this, _currentIndex);
            }
        }
        function switchSlide() {
            _slides.eq(_prevIndex).fadeOut(_duration);
            _slides.eq(_currentIndex).fadeIn(_duration);
            if (_autoHeight) _slides.eq(_currentIndex).parent().animate({ height: _slides.eq(_currentIndex).outerHeight(true) }, { duration: _duration, queue: false });
            refreshStatus();
            autoSlide();
        }

        // autoslide function
        function autoSlide() {
            if (!_autoRotation || _hover) return;
            if (_timer) clearTimeout(_timer);
            _timer = setTimeout(nextSlide, _switchTime + _duration);
        }
        if (_pauseOnHover) {
            _this.hover(function () {
                _hover = true;
                if (_timer) clearTimeout(_timer);
            }, function () {
                _hover = false;
                autoSlide();
            });
        }
        refreshStatus();
        autoSlide();
    });
}

//EVENTS
$(document).ready(function () {

    $('#test-list li:odd').addClass('odd');

    $('#test-list li').hover(function () {
        $(this).addClass('on');
    }, function () {
        $(this).removeClass('on');
    });
    
    //SUBMIT EMAIL 
    $('#email_form').submit(function () {
        site.emailIt();
        return false;
    });

    //OPEN EMAIL BOX
    $('#email_update').click(function () {
        $('#email_form_box').removeClass('email_hide');
    });

    //CLOSE EMAIL BOX
    $('#close_form').click(function () {
        $('#email_form_box').addClass('email_hide');
    });

    $('#request_date').datepicker();

    $('#orderform').submit(function (e) {
        site.validateOrder($(this));
        return false;
    });

    $('#clear-form').click(function () {
        site.clearForm('orderform');
    });

    if ($('.content-area').hasClass('home')) {
        var content = document.getElementById("promo").offsetHeight;
        var promo = (0 - (content + document.getElementById("content").offsetHeight));
        $('#content').css('margin-top', content + 'px');
        $('#promo').css('margin-top', promo + 'px');
    }
});
