﻿/// <reference path="http://webcontent.leavittgroup.com/js/jquery/jquery-1.4.4.js"/>

$(document).ready(function () {
    addLoadingImageToLinks();
});

function addLoadingImageToLinks() {
    hideLoader(); //for ajax calls

    $('a').each(function () {
        var $this = $(this);
        var href = $this.attr('href');
        href = (href ? href.toLowerCase() : '');
        var rel = $this.attr('rel');
        rel = (rel ? rel.toLowerCase() : '');
        var target = $this.attr('target');
        target = (target ? target.toLowerCase() : '');
        var hasclick = $this.get(0).onclick;
        var addLoader = true;

        if (target.length > 0 && target.indexOf('_top') < 0) {
            addLoader = false;
        }

        if ($this.hasClass('skip') || $this.hasClass('nivo-control') || $this.hasClass('fancybox') || $this.attr('id') == 'fancybox-close') {
            addLoader = false;
        }
        if (href.indexOf('#') >= 0) {
            addLoader = false;
        }
        if (href.indexOf('javascript:') >= 0) {
            if (href.indexOf('__dopostback') >= 0) {
                addLoader = true;
            }
            else {
                addLoader = false;
            }
        }
        if (href.indexOf('mailto:') >= 0) {
            addLoader = false;
        }
        if (href.indexOf('.csv') >= 0 || href.indexOf('.xls') >= 0 || href.indexOf('.pdf') >= 0 || href.indexOf('.doc') >= 0 || href.indexOf('.ppt') >= 0 || href.indexOf('.exe') >= 0) {
            addLoader = false;
        }
        if (rel.indexOf('shadowbox') >= 0) {
            addLoader = false;
        }
        if (hasclick) {
            addLoader = false;
        }
        if (addLoader) {
            $this.get(0).onclick = LoaderImageClick;
        }
    });

    $(':submit').not('.skip').not('button').click(buttonLoaderImageClick);
}

function buttonLoaderImageClick(e) {
    if ($(this)[0].onclick)
        return;

    LoaderImageClick(e);
}

function LoaderImageClick(e) {
    //get the event
    if (!e) var e = window.event;

    //this is the element that was clicked
    var targ = e.target ? e.target : e.srcElement;

    //apparently safari has a bug on the target...so here's the fix
    if (targ.nodeType == 3) {
        targ = targ.parentNode;
    }

    //was the link clicked inside a dropdown? if so, close the menu.
    if (targ.parentNode && targ.parentNode.className == "dropdown") {
        hideMenu(targ.parentNode);
    }

    //what button was pushed?
    //chrome fix...don't show the loader on a middle click.
    //IE and Firefox didn't have this problem
    var button = e.which ? e.which : e.button;
    if (button == 2) {
        return;
    }

    showLoaderImage(e);
}

function setProgressPosition(e) {
    //set the loader under the cursor
    var posy = 150;
    var posx = 379;
    if (!e) var e = window.event;
    if (e) {
        posy = (e.pageY ? e.pageY : e.clientY + document.documentElement.scrollTop);
        if (!e.pageX)
            e.pageX = e.clientX - document.body.scrollLeft;
        posx = e.pageX;
    }
    $('#ajaxloaderImage').css('left', posx + 30 + 'px');
    $('#ajaxloader').css('top', posy - 4 + 'px');
}

function resetLoaderImage() {
    //needed so ie will continue to play the animation
    $('#ajaxloaderImage').attr('src', $('#ajaxloaderImage').attr('src'));
}

function cancelLoad(rel) {
    $(rel).html('Redirecting...');
    if (navigator.appName == "Microsoft Internet Explorer") {
        window.document.execCommand("Stop");
        setTimeout("resetLoaderImage();", 1);
    }
    else {
        window.stop();
    }
    window.location = "/";
}

function showLoaderImage(e) {
    setProgressPosition(e);
    $(document).mousemove(setProgressPosition);

    $('#ajaxloader').css('z-index', 10000).show();

    if (navigator.appName == 'Microsoft Internet Explorer') {
        setTimeout('resetLoaderImage();', 1);
    }

    setTimeout('hideLoader();', 6500);
}

function hideLoaderImage(e, wait) {
    if (wait == 0) {
        hideLoader();
        return;
    }
    showLoaderImage(e);
    if (!wait) {
        wait = 1500;
    }
    setTimeout('hideLoader();', wait);
}

function hideLoader() {
    $('#ajaxloader').hide();
    $('body').unbind('mousemove');
}
