/**
 * jqModal - Minimalist Modaling with jQuery
 *   (http://dev.iceburg.net/jquery/jqModal/)
 *
 * Copyright (c) 2007,2008 Brice Burgess <bhb@iceburg.net>
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 * 
 * $Version: 03/01/2009 +r14
 */
(function($) {
$.fn.jqm=function(o){
var p={
overlay: 50,
overlayClass: 'jqmOverlay',
closeClass: 'jqmClose',
trigger: '.jqModal',
ajax: F,
ajaxText: '',
target: F,
modal: F,
toTop: F,
onShow: F,
onHide: F,
onLoad: F
};
return this.each(function(){if(this._jqm)return H[this._jqm].c=$.extend({},H[this._jqm].c,o);s++;this._jqm=s;
H[s]={c:$.extend(p,$.jqm.params,o),a:F,w:$(this).addClass('jqmID'+s),s:s};
if(p.trigger)$(this).jqmAddTrigger(p.trigger);
});};

$.fn.jqmAddClose=function(e){return hs(this,e,'jqmHide');};
$.fn.jqmAddTrigger=function(e){return hs(this,e,'jqmShow');};
$.fn.jqmShow=function(t){return this.each(function(){t=t||window.event;$.jqm.open(this._jqm,t);});};
$.fn.jqmHide=function(t){return this.each(function(){t=t||window.event;$.jqm.close(this._jqm,t)});};

$.jqm = {
hash:{},
open:function(s,t){var h=H[s],c=h.c,cc='.'+c.closeClass,z=(parseInt(h.w.css('z-index'))),z=(z>0)?z:3000,o=$('<div></div>').css({height:'100%',width:'100%',position:'fixed',left:0,top:0,'z-index':z-1,opacity:c.overlay/100});if(h.a)return F;h.t=t;h.a=true;h.w.css('z-index',z);
 if(c.modal) {if(!A[0])L('bind');A.push(s);}
 else if(c.overlay > 0)h.w.jqmAddClose(o);
 else o=F;

 h.o=(o)?o.addClass(c.overlayClass).prependTo('body'):F;
 if(ie6){$('html,body').css({height:'100%',width:'100%'});if(o){o=o.css({position:'absolute'})[0];for(var y in {Top:1,Left:1})o.style.setExpression(y.toLowerCase(),"(_=(document.documentElement.scroll"+y+" || document.body.scroll"+y+"))+'px'");}}

 if(c.ajax) {var r=c.target||h.w,u=c.ajax,r=(typeof r == 'string')?$(r,h.w):$(r),u=(u.substr(0,1) == '@')?$(t).attr(u.substring(1)):u;
  r.html(c.ajaxText).load(u,function(){if(c.onLoad)c.onLoad.call(this,h);if(cc)h.w.jqmAddClose($(cc,h.w));e(h);});}
 else if(cc)h.w.jqmAddClose($(cc,h.w));

 if(c.toTop&&h.o)h.w.before('<span id="jqmP'+h.w[0]._jqm+'"></span>').insertAfter(h.o);    
 (c.onShow)?c.onShow(h):h.w.show();e(h);return F;
},
close:function(s){var h=H[s];if(!h.a)return F;h.a=F;
 if(A[0]){A.pop();if(!A[0])L('unbind');}
 if(h.c.toTop&&h.o)$('#jqmP'+h.w[0]._jqm).after(h.w).remove();
 if(h.c.onHide)h.c.onHide(h);else{h.w.hide();if(h.o)h.o.remove();} return F;
},
params:{}};
var s=0,H=$.jqm.hash,A=[],ie6=$.browser.msie&&($.browser.version == "6.0"),F=false,
i=$('<iframe src="javascript:false;document.write(\'\');" class="jqm"></iframe>').css({opacity:0}),
e=function(h){if(ie6)if(h.o)h.o.html('<p style="width:100%;height:100%"/>').prepend(i);else if(!$('iframe.jqm',h.w)[0])h.w.prepend(i); f(h);},
f=function(h){try{$(':input:visible',h.w)[0].focus();}catch(_){}},
L=function(t){$()[t]("keypress",m)[t]("keydown",m)[t]("mousedown",m);},
m=function(e){var h=H[A[A.length-1]],r=(!$(e.target).parents('.jqmID'+h.s)[0]);if(r)f(h);return !r;},
hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function() {
 if(!this[c]){this[c]=[];$(this).click(function(){for(var i in {jqmShow:1,jqmHide:1})for(var s in this[i])if(H[this[i][s]])H[this[i][s]].w[i](this);return F;});}this[c].push(s);});});};
})(jQuery);
/** End included jqModal **/

jq(function() {
    
    /** Nav menus **/
    jq("#main_navigation > ul > li").mouseover(function(e){ // Use mouseover instead of mouseenter since it supports entering from outside the browser window
        jq(this).addClass("hover");
        if(jq(this).hasClass("active")) {
            jq(this).addClass("was-active");
            jq(this).removeClass("active");
        }        
    })
    .mouseleave(function() {
        jq(this).removeClass("hover");
        if(jq(this).hasClass("was-active")) {
            jq(this).addClass("active");
            jq(this).removeClass("was-active");
        }
    });
    
    // Hack to get jQuery to respect mouseout on leaving browser window
    jq(window).mouseout(function(e) {
        if(!e.relatedTarget) {
            jq("#main_navigation > ul > li").removeClass("hover");
            jq("#main_navigation > ul > li.was-active").addClass("active").removeClass("was-active");
        }
    });    
    
    /** Inner subnav tabs **/
    jq("#subnavTabs li a").click(function() {
        jq("#subnavTabs li, #subnavTabPanels li").removeClass("active");
        
        var tab = "#tab_"+jq(this).attr("href").replace('#', '');
        jq(tab).addClass("active");
        
        jq(this).parent().addClass("active");
        
        return true;
    }); 
    // Pre-selected tab
    if(jq('#subnavTabs').length)
    {
        var anchor = self.document.location.hash;    
        if(anchor)
        {
            jq("a[href='"+anchor+"']").click();
        }        
    }
    
    
    /** Sticky footer **/
    positionFooter = function() {
        var diff = jq(window).height() - jq(document.body).height();
        
        // If footer is absolutely positioned, then it doesn't get included in body height
        if(jq('#footer_wrapper').css('position') == 'absolute')
        {
            diff = diff - jq('#footer_wrapper').height();
        }
        
        if(diff > 0) {
            jq('#footer_wrapper').css('position', 'absolute')
                         .css('bottom', '0');
        } else {
            jq('#footer_wrapper').css('position', 'static');
        }
    }
    jq(window).resize(positionFooter);
    jq(document).bind('tabsshow', positionFooter);
    jq(document).ajaxStop(positionFooter);
    positionFooter();              
              
    /** Success messages **/
    jq('div.success').prepend('<img src="/site/images/icons/close.png" title="Close Message" alt="Close Message" class="close" />');
    jq('div.success').delay(300).fadeIn('slow');
    jq('div.success img.close').click(function() {
        jq(this).parent().fadeOut('slow');
    });
    
    /** Always activate modal windows **/
    jq('.jqmWindow').jqm();
    
    /** Escape key closes modal window **/
    jq(document).keydown(function(e) {
        if(e.keyCode == '27'){ // escape, close box
            jq(".jqmWindow").jqmHide();
        }
    });
    
    /** Simple modal triggers **/
    jq(document).delegate('a.modalTrigger', 'click', function() {
        
        jq(".jqmWindow").jqmHide();
        
        jq.get(jq(this).attr("href"), function(data) {
            var modal = jq('<div>');
            modal.addClass("jqmWindow")
                 .html(data)
                 .prepend('<img src="/site/images/icons/close.png" title="Close Message" alt="Close Message" class="jqmClose" />')
                 .appendTo("body")
                 .jqm()
                 .jqmShow();                 
        });

        return false;
    });
    
    /** Warn on links to restricted content **/
    jq('._mrq').live('click', function() {
        if(typeof _fa_uid != "undefined") {
            return true;
        } else {
            var title = jq(this).attr('title');
            if(!title) {
                title = 'Members Only!';
            }
            jq('#_mrq h1').html(title);
            
            var source = encodeURIComponent(jq(this).attr('href'));
            jq('#_mrq_login').attr('action', 'https://'+ document.location.host+'/site/members/login?source='+source);            
            
            jq('#_mrq').jqm({modal: true}).jqmShow();
            
            jq('#_mrq input').blur();
            
            return false;
        }
    });
    
    /** Form input hints **/
    jq('input.auto-hint, textarea.auto-hint').focus(function(){
        if(jq(this).val() == jq(this).attr('title')){ 
            jq(this).val('');
            jq(this).removeClass('auto-hint');
        }
    });
    
    jq('input.auto-hint, textarea.auto-hint').blur(function(){
        if(jq(this).val() == '' && jq(this).attr('title') != ''){ 
            jq(this).val(jq(this).attr('title'));
            jq(this).addClass('auto-hint'); 
        }
    });
    
    jq('input.auto-hint, textarea.auto-hint').each(function(){
        if(jq(this).attr('title') == ''){ return; }
        if(jq(this).val() == ''){ jq(this).val(jq(this).attr('title')); }
        else { jq(this).removeClass('auto-hint'); } 
    });
    
    
    /** Help notes **/
    jq('sup.note').click(function() {
        jAlert(
            jq(this).data('note'), 
            jq(this).data('title')
        );
    })
    
    /* Tooltip activation */
    jq("a.tooltip,span.tooltip").mouseover(function() {
        tooltip(this);
    });
});
   
faLoadFeed = function(url, ul, limit)   {
    
    // Wrap this so that it can be called from anywhere
    jq(function() {
        limit = limit || 10;
        i = 0;
        
        jq.get(url, function(data) {
            var xml = jq(data);
            xml.find("item").each(function() {
                if(i>=limit) {
                    return;
                }
                    
                var $this = jq(this),
                    item = {
                        title: $this.find("title").text(),
                        link: $this.find("link").text(),
                        description: $this.find("description").text(),
                        pubDate: $this.find("pubDate").text(),
                        author: $this.find("author").text()
                    }
                    
                    jq(ul).append('<li><a href="'+item.link+'">'+item.title+'</a></li>');
                    i++;
            });
        });        
    });
}
   
// Nice to have access to these
getUrlParam = function(param) {
    return unescape(
        (RegExp(param + '=' + '(.+?)(&|$)').exec(location.search)||[,null])[1]
    );
}

tooltip = function(link) {
    
    tt = jq(link).nextAll(".tooltip").first();

    if(!tt.length) {
        return;
    }
    
    tt.css('marginLeft', 0);

    tt.hover(
       function() {
           tt.css('marginLeft', 0);
    }, function() {
           tt.css('marginLeft', '-999em');
    });
    
    jq(link).mouseout(function() {
        tt.css('marginLeft', '-999em');
    });
}

/// LEGACY STUFF TO REMOVE/REFACTOR

if (String.prototype.trim==null) String.prototype.trim = function()
{
    return this.replace(/^\s*|\s*$/g,'');
};

if (Array.prototype.unique==null) Array.prototype.unique = function( b ) 
{
    var a = [], i, l = this.length;
     for( i=0; i<l; i++ ) 
     {
          if( a.indexOf( this[i], 0, b ) < 0 ) { a.push( this[i] ); }
     }

    return a;
};

toggleDisplay = function(toggler, targetId, expand, collapse)
{
    var target = $(targetId);
    if(expand == null)
    {
        var expand = '+';
    }
    if(collapse == null)
    {
        var collapse = '-';
    }
    
    if(target.style.display=='none')
    {
        target.style.display='';
        toggler.innerHTML=collapse;
    }
    else
    {
        target.style.display='none';
        toggler.innerHTML=expand;        
    }    
}

addLoadEvent = function(func) 
{
    var oldonload = window.onload;
    if (typeof window.onload != 'function') 
    {
        window.onload = func;
    } 
    else 
    {
        window.onload = function() {
            if (oldonload) 
            {
                oldonload();
            }
            func();
        }
    }
}

toMoney = function(strValue, cents)
{
    strValue = strValue.toString().replace(/\$|\,/g,'');
    dblValue = parseFloat(strValue);

    blnSign = (dblValue == (dblValue = Math.abs(dblValue)));
    dblValue = Math.floor(dblValue*100+0.50000000001);
    intCents = dblValue%100;
    
    if(isNaN(dblValue))
        dblValue = 0;
    
    if(isNaN(intCents))
        intCents = 0;

    strCents = intCents.toString();
    dblValue = Math.floor(dblValue/100).toString();
    if(intCents<10)
        strCents = "0" + strCents;
    for (var i = 0; i < Math.floor((dblValue.length-(1+i))/3); i++)
        dblValue = dblValue.substring(0,dblValue.length-(4*i+3))+','+
        dblValue.substring(dblValue.length-(4*i+3));

    if(cents)
    {
        return (((blnSign)?'':'-') + dblValue + '.' + strCents);
    }
    else
    {
        return (((blnSign)?'':'-') + dblValue);
    }
}

toFloat = function(strValue)
{
    strValue = strValue.toString().replace(/\$|\,/g,'');
    dblValue = parseFloat(strValue);
    
    return dblValue;
}

///////////// NEED TO MOVE THIS SHIT, SINCE IT'S IN THE WRONG FUCKING PLACE

// Update application status
function updateAppQuoteBroker(form_id, update) {
    jQuery.post(
        '/ajax/Liability_Broker/update_quote',
        jQuery("#" + form_id).serialize(),
        function(result) {
              jQuery("#" + update).html(result);
        }
    );

    return false;
}

// Toggle memebr instant certificate download
function toggleAutoCertificates(member_id, togg, update) {
    jQuery.post(
        '/ajax/Liability_Broker/toggle_auto_certificate',
        {
            'member_id': member_id,
            'toggle': togg
        },
        function(result) {
              jQuery("#" + update).html(result);
        }
    );

    return false;
}

