$(document).ready(function() {
    
/* ---------------------------------------------------------------------
passwordCheck
Author: Angela Norlen

Add additional password fields and validation if user decides to make new password
------------------------------------------------------------------------ */

var passwordCheck = {
    init: function() {
        var self = this;
        var conditionalPw = $('.conditional_password');
        var newPassword = $('#password');
        var conditionalRequire = $('.conditional');
        var newPasswordValue = newPassword.val();
        var confirmPassword = $('#password_confirm')
        var currentPassword = $('#current_password')
        if (conditionalPw.length !== 0) {
            
            $(newPassword).blur(function() {
                if(!$(newPassword).val()) {
                    
                    conditionalPw.hide();
                    conditionalRequire.hide();
                    newPassword.removeClass('validate(required, minlength(8))');  
                    confirmPassword.removeClass('validate(match(#password))');
                    currentPassword.removeClass('validate(required)');
                }
            });

            $(newPassword).focus(function() {
                conditionalPw.show();
                conditionalRequire.show();
                newPassword.addClass('validate(required, minlength(8))');
                confirmPassword.addClass('validate(match(#password))');
                currentPassword.addClass('validate(required)');
            });
        }
    }
}
    
/* ---------------------------------------------------------------------
lightbox
Author: Angela Norlen

Lightbox for redeem code info on registration
------------------------------------------------------------------------ */

var lightbox = {
    init: function () {
        var self = this;
        if ($('.learn_more').length !== 0) {

            $('.close, .modal_background').click(function() {
                self.close();
                return false;
            });
            
            $('.learn_more').click(function() {
                self.open();  
                return false;
            });
        }       
    },

    open: function () {

        var docHeight = $(document).height();
        var docWidth = $(document).width();
        var modalWidth = $('.modal').width();
        var modalHeight = $('.modal').height();
        
        modalWidth = modalWidth / 2;
        var modalPositionX = (docWidth / 2 - modalWidth) -50;
        modalPositionX = modalPositionX + 'px';

        $('.modal').css({
            'display': 'block',
            'left': modalPositionX
        });

        $('.modal_background').css({
            'display': 'block',
            'height': docHeight
        });
    },

    close: function () {
        $('.modal').css('display', 'none');
        $('.modal_background').css('display', 'none');
    }
}

/* ---------------------------------------------------------------------
Sidebar Nav
Author: Angela Norlen

Adjusts level styles
------------------------------------------------------------------------ */

$('.nav_col_a li.current a').siblings().css('background-color' , 'white' );
$('.nav_col_a li.current').children('a').css('border' , '0' );
$('.nav_col_a li.current a').siblings().children().css('background-color' , 'white' );

if( $('.level-3').hasClass('current') ) {
    
    $('.level-2.parent-current').addClass('non_active');
}
    
    leaveSiteMessage.init();
    lightbox.init();
    passwordCheck.init();
    

/* ---------------------------------------------------------------------
External Link Tooltip
------------------------------------------------------------------------ */    
    $(".external_link").not('#footer .external_link, .dashboard_links .external_link').tooltip({
            tip: '.external_link_notice',
            position: 'bottom center'
    });
    
    if( $('.dashboard_links').length !==0) {
        $('.dashboard_links').hover(function() {
            $('.external_link_notice').addClass('offset_tooltip');  
        }, function() {
            $('.external_link_notice').removeClass('offset_tooltip');  
        });
        
         $('.dashboard_links .external_link').tooltip({
             
             tip: '.external_link_notice',
             position: 'center right'
         });
    }
    
    $('#footer .external_link').tooltip({
        tip: '.external_link_notice',
        position: 'top center',
        offset: [-10, 0],
        onBeforeShow: function(){
            $('.external_link_notice').addClass('top');
        },
        onHide: function(){
            $('.external_link_notice').removeClass('top');
        }
    });
    
     
/* ---------------------------------------------------------------------
Privacy Modal
------------------------------------------------------------------------ */
    $("a.modal").fancybox();
    $("a.privacy_modal").fancybox({
        'centerOnScroll' : true
    });   
    
    $('.sign_up_content').parent('.body_copy').css('padding-right' , '0');

/* ---------------------------------------------------------------------
Header Image
------------------------------------------------------------------------ */

    if( $('h1').parent().is('.header_img') ) {
        /* do nothing */
    } else {
        $('.col_3 .main_content h1').css({
            'margin-left' : '33px',
             'width' : '420px'
        }); 
    };     

/* ---------------------------------------------------------------------
Custom Form Elements
------------------------------------------------------------------------ */
    var cf = new CustomFormElements({
        styled: 'styled',
        uniqueClassName: 'custom_form_element',
        checkboxHeight: 12,
        radioHeight: 11
    });

/* ---------------------------------------------------------------------
Rounded Corners IE
------------------------------------------------------------------------ */

DD_roundies.addRule('a.btn_standard, .content_description_box, button.btn_standard', '4px');
DD_roundies.addRule('.btn_global_lg', '10px');
    
$('a.popup').popUp();    
    
    // Search the dashboard navigation, update all the child links to be anchors to the dashboard page.
    $('#nav-sub-dashboard').each(function(){
        var parent_link = $(this).find('a:first-child').attr('href')
        $(this).find('a').each(function(){
            var segments = getUrlSegments($(this).attr('href'));
            var last_segment = segments.pop();
            $(this).attr('href', parent_link +'#'+ last_segment);
        });
    });
        
});

/* ---------------------------------------------------------------------
Popup Window for external linked content
------------------------------------------------------------------------ */
jQuery.fn.popUp = function(options)
{
    var settings = {
        name: 'newWindow',
        width: 500,
        height: 600,
        left: false,
        top: false,
        scrollbars: 'yes',
        resizeable: 'no',
        statusbar: 'no',
        menubar: 'no',
        toolbar: 'no'
    }

    if(options) {
        jQuery.extend(settings, options);
    };

    this.each(function(){
        $(this).click(function(){
            var rel = $(this).attr('data');
            var href = $(this).attr('href');
            if(!rel){
                window.open(href, settings.name);
            } else {
                var rel_split = rel.split('|');
                var width = rel_split[0] ? rel_split[0] : settings.width;
                var height = rel_split[1] ? rel_split[1] : settings.height;
                var scrollbars = rel_split[2] ? rel_split[2] : settings.scrollbars;
                var leftPos = settings.left ? settings.left : (screen.width-width)/2;
                var topPos = settings.right ? settings.right : (screen.height-height)/2;
                var config = 'width='+ width +',height='+ height +', \
                            left='+ leftPos +',top='+ topPos +', \
                            scrollbars='+ scrollbars +', \
                            resizable='+ settings.resizeable +', \
                            statusbar='+ settings.statusbar +', \
                            menubar='+ settings.menubar +', \
                            toolbar='+ settings.toolbar;

                window.open(href,settings.name, config);
            }
            return false;
        });

    });
}

/* ---------------------------------------------------------------------
Check Age
------------------------------------------------------------------------ */
function ageClear() {
    $("form.birthdate, .body_copy").hide();
    $("#age_warning").css('display', 'block').insertAfter('.main_content_body > h1');
    $('h1').text("Unable To Access This Form");
    setTimeout('leave_full()', 5000);
            return false;
}

/* ---------------------------------------------------------------------
Leave to External Site Warning
------------------------------------------------------------------------ */

var leaveSiteMessage = {
    init: function() {
        
        $('.share_modal li a').click(function() {
            
            $(this).parent().parent().hide();
            $('.leave_site').show();
            $('.social_media_link').empty();
            
            var siteLink = $(this).attr('href');
            var socialMediaOutlet = $(this).html();
            $('.leave_site').append('<a href="' + siteLink + '" target="_blank" class="social_media_link">' + 'Continue to ' + socialMediaOutlet + '</a>');
        
            $('.leave_site .close_btn').click( function() {
                $('.leave_site').hide();
                $('.share_modal ul').show();

                return false;
            });

            return false;
        });
    }
}


// parseUri 1.2.2
// (c) Steven Levithan <stevenlevithan.com>
// MIT License
var parseUri = function(str) {
    var o   = parseUri.options,
        m   = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
        uri = {},
        i   = 14;

    while (i--) uri[o.key[i]] = m[i] || "";

    uri[o.q.name] = {};
    uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
        if ($1) uri[o.q.name][$1] = $2;
    });

    return uri;
};

parseUri.options = {
    strictMode: false,
    key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
    q:   {
        name:   "queryKey",
        parser: /(?:^|&)([^&=]*)=?([^&]*)/g
    },
    parser: {
        strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
        loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
    }
};

var getUrlSegments = function(href) {
    var uri = parseUri(href).path;
    var parts = uri.split('/');

    // Clean up the array so we don't have an empty key at the beginnig and end due to the split();
    if(parts[0] == "") parts.shift();
    if(parts[parts.length - 1] == "") parts.pop();
    
    return parts;
}
