jQuery.noConflict();

// vars
var scrollBarEnabled = false,
	nstudentsScrollBarEnabled = false;

/* onload */
jQuery(document).ready(function() {

    //
    // init top navigation
    var top_nav = jQuery('#top_navigation ul li').has('ul');
    if (top_nav.length) {

        top_nav.each(function() {
            var li = jQuery(this);
            var liWidth = li.width();
            var submenu = li.find('ul:first');

            // init submenu
            if (li.index() != 0) { //if not ApplyNow link

                submenu.each(function() {
                    var ulWidth = 0;
                    jQuery(this).find('li').each(function() {
                        ulWidth += jQuery(this).width();
                    });
                    jQuery(this).css({
                        width: ulWidth + 5,
                        left: liWidth / 2 - ulWidth / 2,
                        display: 'none',
                        visibility: 'visible'
                    });
                });

            } else { // ApplyNow submenu
                submenu.addClass('apply_now');
            }

            //hover state
            li.bind('mouseover', function() {
                jQuery(this).find('a:first').addClass('hover');
                jQuery(this).find('ul:first').show();
            }).bind('mouseleave', function() {
                jQuery(this).find('a:first').removeClass('hover');
                jQuery(this).find('ul:first').hide(); //.slideUp(80);
            });

        });

    }

    // show top navigation
    //var top_menu = jQuery('#top_navigation');
    //showElement(top_menu);


    // init quick links
    var q_links = jQuery('#quick_links').has('ul');
    if (q_links.length) {

        q_links.bind('mouseover', function() {
            q_links.clearQueue().addClass('active').find('ul:first').show();
        }).bind('mouseleave', function() {
            q_links.removeClass('active').find('ul:first').slideUp(100);
        }).find('ul:first').css('opacity', 0.95);

    }


    //
    //
    //init main menu
    var main_nav = jQuery('#main_navigation');
    main_nav.find('ul:first li:first a:first').addClass('first_link');

    // bg fix
    var mNavWidth = jQuery('#main_navigation ul:first').width() + parseInt(jQuery('#main_navigation ul:first').css('margin-right'));
    var bgFix = jQuery('<div/>').addClass('bg_fix').css('right', (mNavWidth - 102) + 'px');
    jQuery('#main_navigation').prepend(bgFix);

    // main menu submenus
    main_nav.find('ul:first li').has('div').each(function(i, val) {
        var mn_li = jQuery(this);

        // init submenus
        var sub_items_count = mn_li.find('div:first ul:first li').length;
        if (sub_items_count > 6) {
            // autobalancing
            var br_line = Math.ceil(sub_items_count / 2) - 1;
            var sub_items_1 = mn_li.find('div:first ul:first li:lt(' + br_line + '), div:first ul:first li:eq(' + br_line + ')');
            var sub_items_2 = mn_li.find('div:first ul:first li:gt(' + br_line + ')');

            mn_li.find('div:first ul:first li').unwrap();
            sub_items_1.wrapAll('<ul></ul>');
            sub_items_2.wrapAll('<ul></ul>');
        }

        // positioning submenu div
        var sub_index = mn_li.index();

        if (sub_index <= 3) { // to left
            if (i == 4 || i == 5) {
                mn_li.find('div:first').css({ left: '-140px' }).addClass('sub_shadow');
            } else {
                mn_li.find('div:first').css({ left: 0 }).addClass('sub_shadow');
            }
        } else { // to right
            mn_li.find('div:first').css({ right: '2px' }).addClass('sub_shadow');
        }

        // hover state
        mn_li.bind('mouseover', function() {
            /* IE7 mouseout fix */
            main_nav.find('ul:first li div').hide();
            main_nav.find('ul:first li a.hover').removeClass('hover first_link_hover');
            /* END IE7 mouseout fix */

            jQuery(this).find('div').show();
            jQuery(this).find('a:first').hasClass('first_link') ? jQuery(this).find('a:first').addClass('hover first_link_hover') : jQuery(this).find('a:first').addClass('hover');

            /* IE shadow */
            if (/msie|MSIE/.test(navigator.userAgent) && !jQuery(this).find('div.ds').length) {
                var rFix = 0;
                if (/MSIE 7/.test(navigator.userAgent)) {
                    rFix = 5;
                }
                var d = {};
                d.o = jQuery(this).find('div:first');
                d.w = d.o.width();
                d.h = d.o.height();
                d.t = d.o.css('top');
                d.l = d.o.css('left');
                d.r = d.o.css('right');
                d.s = jQuery('<div/>');
                d.s.attr('class', 'ds');
                d.s.attr('style', 'filter:progid:DXImageTransform.Microsoft.Blur(pixelRadius=3,makeShadow=true,shadowOpacity=0.4)');
                d.r != 'auto' ? d.s.css({ display: 'block', top: d.t, right: (parseInt(d.r) - rFix) + 'px', width: d.w + 'px', height: d.h + 'px' }) : d.s.css({ display: 'block', top: d.t, left: d.l, width: d.w + 'px', height: d.h + 'px' });
                d.o.before(d.s);
            }
            /* END IE shadow */
        }).bind('mouseleave', function() {
            jQuery(this).find('a:first').removeClass('hover first_link_hover');
            jQuery(this).find('div').hide();
        }).find('div').css('opacity', 0.9);

    });

    // show main menu
    //showElement(main_nav);


    //
    //
    // searchbar
    var searchStr = 'Search NJCU',
		lv_search = jQuery('#livesearch')
    //lv_search.find('input[class="search_input"]').val(searchStr).liveSearch({ url: '/searchresults.aspx/?q=', defaultStr: searchStr });

    // show search
    //showElement(lv_search);

    lv_search.find('input[class="search_input"]').focus(function() {
        var v = jQuery(this).val();
        if (v == searchStr) {
            jQuery(this).val('');
        }
    }).blur(function() {
        var v = jQuery(this).val();
        if (!v) {
            jQuery(this).val(searchStr);
        }
    });


    //
    //
    // tabs
    var home_tabs = jQuery('.home_tabs'),
		signin_tabs = jQuery('#signin_tabs_container'),
		fees_tabs = jQuery('#fees_tabs_container'),
		tabHolder = '';

    initTabs(home_tabs, jQuery('#tabs_container'));
    initTabs(signin_tabs, signin_tabs);
    initTabs(fees_tabs, fees_tabs);

    function initTabs(obj, tabHolder) {
        if (!tabHolder) {
            tabHolder = obj;
        }
        //obj.find('ul a');
        obj.find('a').each(function() {
            jQuery(this).bind('click', function() {
                var tabId = jQuery(this).attr('href');
                var isVisible = tabHolder.find(tabId + ':visible').length;

                if (!isVisible) {
                    var index = obj.find('ul li a').index(this);

                    tabHolder.find('div.tab').hide();
                    tabHolder.find(tabId).show();

                    obj.find('ul li').removeClass('active');
                    obj.find('ul li:eq(' + index + ')').addClass('active');
                    // init custom scrollbar
                    if (index == 1 && !scrollBarEnabled && jQuery('#scroll-pane').length) {
                        jQuery('#scroll-pane').jScrollPane({ showArrows: true, scrollbarWidth: 8, dragMaxHeight: 31 });
                        scrollBarEnabled = true;
                    }
                    if (index == 2 && !nstudentsScrollBarEnabled && jQuery('#nstudents-scroll-pane').length) {
                        jQuery('#nstudents-scroll-pane').jScrollPane({ showArrows: true, scrollbarWidth: 8, dragMaxHeight: 31 });
                        nstudentsScrollBarEnabled = true;
                    }
                }
            });
        });
    }


    initForm();

    function initForm() {

        //
        // styled form controls
        var form = jQuery('#form'),
        	tmpCtrl, ctrl, sel;
        if (form.length) {

            // custom checkboxes
            form.find("input.styled:checkbox").not('.processed').bind('change', function() {
                tmpCtrl = jQuery(this);
                if (tmpCtrl.is(':checked')) {
                    tmpCtrl.next('a.checkbox').addClass('checked');
                } else {
                    tmpCtrl.next('a.checkbox').removeClass('checked');
                }
            }).addClass('processed').hide().after('<a href="#" class="checkbox" onclick="return false"></a>').next('a.checkbox').bind('click', function() {
                ctrl = jQuery(this);
                ctrl.toggleClass('checked');
                if (ctrl.hasClass('checked')) {
                    ctrl.prev('input.styled:checkbox').attr('checked', 'checked');
                } else {
                    ctrl.prev('input.styled:checkbox').removeAttr('checked');
                }
            });
            form.find("input.styled:checkbox:checked").next('a.checkbox').addClass('checked');
            if (/msie|MSIE 6|MSIE 7/.test(navigator.userAgent)) {
                form.find("a.checkbox").addClass('checkbox_iefix');
            }

            // custom radios
            form.find("input.styled:radio").not('.processed').bind('change', function() {
                tmpCtrl = jQuery(this);
                tmpCtrl.parent().find('a.radio').removeClass('checked');
                tmpCtrl.next('a.radio').addClass('checked');
            }).addClass('processed').hide().after('<a href="#" class="radio" onclick="return false"></a>').next('a.radio').bind('click', function() {
                ctrl = jQuery(this);
                ctrl.parent().find('a.radio').removeClass('checked');
                ctrl.addClass('checked');
                ctrl.prev('input.styled:radio').attr('checked', 'checked');
            }).css({ display: 'inline-block' });
            form.find("input.styled:radio:checked").next('a.radio').addClass('checked');
            if (/msie|MSIE 6|MSIE 7/.test(navigator.userAgent)) {
                form.find("a.radio").addClass('radio_iefix');
            }

            // custom selects
            form.find("select.styled").not('.processed').each(function() {
                sel = jQuery(this);
                sel.css({ opacity: 0 });
                if (/msie|MSIE 6/.test(navigator.userAgent)) {
                    sel.css({ clip: 'rect(4px ' + (sel.width() - 10) + 'px 16px 3px)' });
                }
                var opt1 = sel.find('option:eq(0)').text();
                sel.wrap('<div class="select_wrap"></div>');
                sel.parent().append('<span class="pseudo_select">' + opt1 + '</span>');
                sel.parent().find('span.pseudo_select').css({ width: sel.width() + 2 + 'px' });

                sel.bind('change', function() {
                    ctrl = jQuery(this);
                    ctrl.next('span.pseudo_select').text(ctrl.find('option:selected').text());
                });
            }).addClass('processed');

            // submit & validation
            jQuery('#submit_btn, .submit_btn').not('.processed').bind('click', function() {

                var thisSubmitBtn = jQuery(this),
					thisForm = thisSubmitBtn.parents('#form'),
					err = 0;
                thisForm.find('.required').each(function() {
                    ctrl = jQuery(this);
                    if (ctrl.val() == '') {
                        ctrl.addClass('error');
                        err++;
                    }
                    else if (ctrl.hasClass('email')) {
                        var result = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test(ctrl.val());
                        if (!result) {
                            ctrl.addClass('error');
                            err++;
                        }
                    }
                    else {
                        ctrl.removeClass('error');
                    }

                });

                if (err == 0) {

                    // submit email_form
                    if (thisForm.hasClass('email_form')) {

                        $("#modalContent #form").animate({ opacity: 0.3 }, "fast");

                        var _data = "{ senderName: '" + $("#sender_name").val() + "', ";
                        _data += "senderEmail: '" + $("#sender_email").val() + "', ";
                        _data += "recName: '" + $("#rec_name").val() + "', ";
                        _data += "recEmail: '" + $("#rec_email").val() + "', ";
                        _data += "url: '" + document.location.href.replace("#", "") + "' }";

                        $.ajax({
                            type: "POST",
                            url: "/services/WSUtility.asmx/EmailToFriend",
                            data: _data,
                            contentType: "application/json; charset=utf-8",
                            dataType: "json",
                            success: function(list) {
                                var _obj = JSON.parse(list.d);
                                if (_obj.status == "error") {
                                    $("#modalContent #error").html(_obj.data);
                                    $("#modalContent #form").animate({ opacity: 1 }, "fast");
                                }
                                else {
                                    $("#modalContent #main_content").html(_obj.data);
                                }
                            }
                        });
                        // END submit email_form
                    } else {
                        // submit
                        thisSubmitBtn.parents('form').submit();
                    }

                }

                return false;

            }).addClass('processed');

            jQuery('.error').live('focus', function() {
                jQuery(this).removeClass('error');
            });
            jQuery('.required').live('blur', function() {
                ctrl = jQuery(this);
                if (ctrl.val() == '') {
                    ctrl.addClass('error');
                }
            });

        }
    }


    //
    //
    // fancybox init

    // gallery
    if (jQuery('.photo_thumbs a').length) {

        var fbtHtml = '';

        //init thumbs fb
        jQuery('.photo_thumbs a.fbGallery').attr('rel', 'fbGallery').fancybox({
            overlayOpacity: 0.8,
            overlayColor: '#3b7d31',
            titlePosition: 'inside',
            showCloseButton: false,
            showNavArrows: false,
            cyclic: true,
            titleFormat: function(title, currentArray, currentIndex, currentOpts) {
                return '<div id="fbTitle">' + (title && title.length ? '<div class="fbTitle_inner">' + title + '</div>' : '') + '  <div class="fbTitle_footer">  <a href="javascript:;" onclick="jQuery.fancybox.close();" class="fbClose">Close</a>' + (currentIndex + 1) + ' of ' + currentArray.length + ' <a href="javascript:;" onclick="jQuery.fancybox.prev();" class="fbPrev"></a><a href="javascript:;" onclick="jQuery.fancybox.next();" class="fbNext"></a> </div> </div>';
            },
            onComplete: function() {
                var fbWidth = jQuery('#fancybox-outer').width();
                jQuery('#fbTitle').css({ width: fbWidth + 'px' });
                //jQuery.fancybox.center();
            }
        });

    }

    // single image
    if (jQuery('a.fbImage').length) {

        // init image fb
        jQuery('a.fbImage').fancybox({
            overlayOpacity: 0.8,
            overlayColor: '#3b7d31',
            titleShow: false,
            //showCloseButton: false,
            type: 'image'
        });

    }

    // ajax
    if (jQuery('a.fbAjax').length) {

        // init ajax fb
        jQuery('a.fbAjax').fancybox({
            overlayOpacity: 0.8,
            overlayColor: '#3b7d31',
            titleShow: false,
            //showCloseButton: false,
            type: 'ajax'
        });

    }


    //
    //
    // footer social links
    jQuery('#footer a.soc_link').mouseover(function() {
        jQuery(this).find('img').stop(150).fadeTo(200, 1);
    }).mouseout(function() {
        jQuery(this).find('img').fadeTo(300, 0.7);
    }).find('img').fadeTo(1, 0.7);


    //
    //
    //PNGfix
    if (/msie|MSIE 6/.test(navigator.userAgent)) {
        correctPNG();
    }


    //
    //
    // slider init

    if (!((/msie|MSIE 7/.test(navigator.userAgent) && $("div#widgetlist").html() != null))) {

        if (/msie|MSIE/.test(navigator.userAgent)) { //grig for ie
            var spw = 1; // squares per width
            var sph = 1; // squares per height
        } else { // grig for normal browsers
            var spw = 5; // squares per width
            var sph = 4; // squares per height
        }
        if (jQuery('#slider').length) {
            jQuery('#slider').coinslider({
                width: 890,
                height: 310,
                spw: spw,
                sph: sph,
                delay: 5000, // delay between images in ms
                sDelay: 50, // delay beetwen squares in ms
                hoverPause: false,
                navigation: true,
                links: true
            });
            // slider menu font substitution
            Cufon.replace(".slider_link", {
                hover: true
            });
            if (/msie|MSIE 6|MSIE 7/.test(navigator.userAgent)) {
                jQuery('#header').css('z-index', 30);
            }
        }
    }


    //
    //
    // font substitution
    Cufon.replace("h1, h2, h3, h4, h5, h6, ul.home_tabs li a, #signin_tabs_container ul li a, #fees_tabs_container ul li a", {
        hover: true
    });

    // striped tables
    jQuery('table.striped').each(function() {
        jQuery(this).find('tr:even').addClass('even');
    });

    //
    // print page
    jQuery('.article_icons a.print_icon').click(function() {
        $("#printContent").val($("div#main_content div.content").html());
        document.forms['printContentForm'].submit();
    });

    jQuery('.article_icons a.email_icon').click(function() {
        openEmailModal();
    });

    var openEmailModal = function() {

        $.get("/email.htm", function(data) {
            modalWindow.windowId = "myModal";
            modalWindow.width = 652;
            modalWindow.height = 350;
            var str = "<div class='FavoriteBox'>";
            str += data;
            str += "</div>";
            modalWindow.content = str;
            modalWindow.open();

            initForm();
        });
    };

    jQuery('.article_icons .st_sharethis_custom').mouseover(function() {
        jQuery(this).css("background-image", 'url("../images/share_hover.png")');
    });

    jQuery('.article_icons .st_sharethis_custom').mouseout(function() {
        jQuery(this).css("background-image", 'url("../images/share.png")');
    });

});


//
//
// custom functions

// show hidden element
function showElement(el) {
    el.css({ opacity: 0, visibility: 'visible', display: 'block' }).animate({ opacity: 1 }, 500);
}

// calendar event click
function eventDateClick(id, d, m, y) {
    document.location = window.location.protocol + "//" + window.location.host + "/Event_Calendar.aspx?eventId=" + id;
}

