﻿var m_SearchSugIdx = -1;
var m_ie6 = ($.browser.msie && $.browser.version == '6.0');
var m_HomePage = false;
var m_txtSearch;
var m_prtcl = 'https';
var m_ssl = ['agentservices','baserate','certificates','documents','epp','financial','fun','login','insuredservices','onlineeducation','policyforms','pcrforms','secured', 'users', 'signup', 'policyservices'];
var m_nocks = ['seminars']; // does not need cookies
var m_urlDir = ''
var m_allRltvPths = false; // forces anchors to be all relative path based
var m_lgSrch = true; // tell search to log submission
var m_inprocess = false;
var m_sugFired = false;

$(function(){
    if($("#copyright").length > 0){
        $('li, #praLogin').filter(':last').css({'border':'none'});
        m_HomePage = $("#instantAnswer").length > 0;
        if(m_HomePage){
            setIconProps();
        }
        setAnchors($('#mainContainer'));
        m_txtSearch = $("#txtSearch");
		if($.browser.msie){
			m_txtSearch.keydown(function(e){
				if(e.keyCode == 13){
					e.cancelBubble = true;
					e.returnValue = false;
					$('#form1').submit();
				}
			});
		};
		m_txtSearch.keyup(function(e){
			if(checkKeys(this, e)){
				return suggestSsearch($(this).val());
            }
       }).focus(function(){
			$('.required').addClass('ignore');
		}).blur(function(){
			$('.required').removeClass('ignore');
		});
        $("#parent").click(function(){
            $("#searchSuggest").hide();
            if(m_HomePage){
                $("#instantAnswer").css("opacity", 1.0);
            } 
        });
        setupMoreBubble();
        if(m_ie6){
            $("#copyright").css("margin-top", "10px");
        }
        if(!$.browser.msie){
            $('.button').css('padding-bottom', '6px');
        }
        $("#copyright").html(String.format('Copyright &#169; {0} ProAssurance Corp. All Rights Reserved.', new Date().getFullYear().toString()));
        m_allRltvPths = true;
        setAnchors($('#footer'));
        setAnchors($('#header'));
        setPhoneNumbers();
		$('#form1').submit(function(){
			if(m_SearchSugIdx > -1){
			    doSearch(null, false);
				return false;
			}
			return !doSearch(null, (m_SearchSugIdx > -1));return false;
		});
    }
	mutateStyles();
});

function mutateStyles(){
    $('input[type=checkbox]').css({'margin':'1px 2px 1px 2px'});
	$('input[type=radio]').css('margin','1px 2px 1px 2px');
	if(!$.support.objectAll){ // checkbox label alignment hack for ie7
	    $('label').css({'margin-top':'5px'});
	}
}

function setAnchors(target){
    var anchorPath = '';
    if(target == null){
        target = $(document);
    }
    m_urlDir = location.pathname.substring(0,(location.pathname.lastIndexOf("/"))+1);
    if(m_allRltvPths){
        m_urlDir = '';
    }    
    $('a[href][class!=phone]', target).each(
        function(){
            var link = $(this).attr('href');
            if(link.indexOf('javascript:') == -1 && link.indexOf('mailto:') == -1 && link.indexOf('tel:') == -1){
                if(link == m_urlDir){
				    link = '';
			    }
				if(!$.support.objectAll){
				    if(!link.isExternalLink() || (link.indexOf(document.domain) > -1)){
					    link = link.replace(window.location.protocol, '').replace(document.domain, '');
				    }
                }
                if(!link.isExternalLink() && link != '#'){ // check for external link
                    var sDir = link.beginsWith('/') ? '': m_urlDir;
					var url = parseUri(document.domain+sDir+link);
                    if(url.directory != '/'){
                        anchorPath = String.format("{0}{1}{2}", window.location.host, sDir, link).replace('//','/');
                        if($.inArray(url.directory.replaceAll('/',''),m_ssl)>-1){
						    anchorPath = String.format("{0}://{1}", m_prtcl, anchorPath);
						}else{
							anchorPath = 'http://' + anchorPath;
                        }
                        $(this).attr('href', anchorPath);
                    }
                }
            }
        }
    );
}

function setPhoneNumbers(){
    $('a.phone').each(
        function(){
            if($.browser.smartPhone){
                $(this).attr('href', 'tel:'+ $(this).html().replaceAll('.',''));  
            }else{
                $(this).addClass('deadLink');
           }
        }
    );
}

function doSearch(srch,pxsrch,sugsrchitem,displaytext){
	if(!m_inprocess){
		if(srch == null && m_SearchSugIdx < 0){
			srch = m_txtSearch.val();
		}
		if(srch != undefined){
			srch = srch.stripHTML();
		}
		if(m_SearchSugIdx >= 0 && !pxsrch){ // fire off search based on suggested search selection
            if(!m_sugFired){
                m_sugFired = true;
                $($('#suggestList .searchsuggestItem')[m_SearchSugIdx]).click();
            }
		}else{
			if(srch) {
				var dv = $(sugsrchitem).html();
				if(!dv){dv = srch;}
				m_inprocess = true;
				$.ajax({
					url: '/processors/',
					data: {fx:'srch',t: srch, dv: dv, ls: m_lgSrch},
					dataType: 'json',
					cache: false,
					beforeSend: function(){
	                    togglePxIndicator(true);
					},
					success: function(res){
                        if(res.RedirectURL){
							deliverMore(res.RedirectURL,res.Action,true)
						}else{
							if(m_HomePage){ // we are on the home page
								deliverResults(res, sugsrchitem, dv);                        
							}else{
								top.location = String.format('http://{0}/?lup={1}',window.location.host,srch);
							}
						}
					},
					complete: function(){
					    togglePxIndicator(false);
					    m_sugFired = false;
					}
				});
				m_inprocess = false;
				return true;
			}
		}
	}
	return false;
}

function suggestSsearch(val){
    var sugg = $("#searchSuggest");
    var ia = $("#instantAnswer");
    if(val.isLegalString()){
        $.ajax({
            url: '/processors/',
            data: {fx:'sggst',t:val.stripHTML(),clp:(m_HomePage ? '':35)},
            asynch: false,
            dataType: 'html',
            success: function(html){
                if(m_txtSearch.val().length == 0 || html.length == 0){
                    sugg.hide();
                    if(m_HomePage){
                        ia.css("opacity", 1.0);
                    }
                }else{
                    $("#topics").hide();
                    $("#dvMoreAlt").hide();
                    sugg.css('display', 'inline');
                    if(m_HomePage){
                        ia.css("opacity", 0.65);
                    }
                }
                m_SearchSugIdx = -1; // reset suggest index on every return
                $("#suggestList").html(html);
                var sugList = $("#suggestList div.searchsuggestItem");
                for(var i=0;i<=sugList.length;i++){
                    $(sugList[i]).hover(function(){
                        resetHighLight();
                        $(this).addClass("searchsuggestItemHover");
                      },
                      function(){
                        $(this).removeClass("searchsuggestItemHover");
                      }
                   );
                }
            }
        });
    }
}

function checkKeys (field, e) {
      var ret = true;
	  m_submit = true;
      if(e.keyCode == 13){
		e.cancelBubble = true;
		e.returnValue = false;
		if(m_HomePage){
            $('#searchButton').trigger('click');
		}else{
			$('#form1').submit();
		}
		ret = false;
      }else{
          switch(e.keyCode){
            case 40: // down arrow
                if(m_SearchSugIdx < 12) {
                    m_SearchSugIdx++;
                }else{
                    m_SearchSugIdx = 0;
                }
                highlightSuggestList();
                ret = false;
                break;
            case 38: // up arrow
                if(m_SearchSugIdx >= 0){
                    m_SearchSugIdx--;
                    highlightSuggestList();
                }
                ret = false;
                break;
          }
      }
      return ret;
}

function resetHighLight(){
    m_SearchSugIdx = -1;
    $('#suggestList .searchsuggestItem').each(function(){
        $(this).removeClass('searchsuggestItemHover');
    });
}

function highlightSuggestList(){
    if(m_SearchSugIdx >=0){
        var lst = $('#suggestList .searchsuggestItem');
        for(i=0; i<lst.length; i++){ // reset all backgrounds
            $(lst[i]).removeClass('searchsuggestItemHover');
        }
        $(lst[m_SearchSugIdx]).addClass('searchsuggestItemHover');
    }
}

function setupMoreBubble(){
    // more bubble
    var tpx = $("#topics");
    // set styles
    $('.gray_box', tpx).css('float', 'left');
    tpx.center({vertical: false});
    tpx.css({'left': (parseInt(tpx.css("left")) -445) + 'px',
             'top': (m_ie6 ? (m_HomePage ? '-280':'-220') : (m_HomePage ? '-276':'-217')) + 'px'});
    var aMoreAlt = $.create('a', {'href':'#'}, 'More '); 
    aMoreAlt.click(function(){
        toggleMore();
        return false;
    });
    var dvMoreAlt  = $.create('div', {'id':'dvMoreAlt'}, aMoreAlt);
    dvMoreAlt.css({'height':'25px',
                   'width':'50px',
                   'left' : (parseInt(tpx.css('left'))+ 1089) + 'px', 
                   'top': m_HomePage ? (parseInt(tpx.css('top')) + 557) : 222 + 'px'
    }).show();
    tpx.append(dvMoreAlt);
    if(!m_HomePage){
        $($('.border_l', tpx)[1]).css('height', '26px');
        $($('.border_r', tpx)[0]).css('height', '220px');
        $($('.gray_box', tpx)[1]).css('height', '32px');
        $('#more_down').hide();
    }
    if(!m_ie6){ // some odd bug where left margins cannot be set for IE6 so we have to use it as the default
        $($('.border_l', tpx)[1]).css('margin-left', '684px');
        $($('.bl_rc', tpx)[1]).css('margin-left', '684px');
    }else{
        $($('.border_l', tpx)[0]).css('height', m_HomePage ? '194px' : '108px');
        $($('.border_r', tpx)[0]).css('height', m_HomePage ? '281px' : '220px');
        dvMoreAlt.css('top', (parseInt(tpx.css('top')) + (m_HomePage ? 565 : 445) + 'px'));
    }
        
    if($.browser.safari){
        tpx.css({"left": (parseInt(tpx.css("left")) + 3) + 'px',
                     "font-size" : "13px", 
                     "font-weight" : "lighter"});
    }
    
    tpx.click(function(){toggleMore()});
    $('#lnkMore').click(function(){
        toggleMore();
        return false;
    });
    $('#more').click(function(){toggleMore()});
}

function toggleMore(){
    $("#topics").toggle();
    $("#instantAnswer").hide();
    return false;
}

function togglePxIndicator(on, delay){
    if(!delay){delay = 250;}
    if(on){
        $("#processIndicator").addClass("activity");
    }else{
        setTimeout('$("#processIndicator").removeClass("activity");', delay);
    }
}

function deliverMore(url,action,fullopts){
    var uri = parseUri(url.beginsWith('/') ? url : '/'+url);
    var opts = 'status=1,menubar=1,resizable=1,scrollbars=1,width=800,height=600';
    if(fullopts | !uri.host){
        opts = 'toolbar=1,location=1' + opts;
    }
    if($.inArray(uri.directory.replaceAll('/',''),m_ssl)>-1){
        url = m_prtcl+'://'+window.location.host+uri.source;
    }else{
        if(!url.isExternalLink()){
            url = 'http://'+window.location.host+uri.source;
        }
    }
    if(action == 'nw'){ // new window
        window.open(url,'spawn',opts);       
    }else{
        if(!(url.isExternalLink())){
            url = uri.source;
        }
        top.location = url.toLowerCase();
    }
    return false;
}

function cookiesEnabled(){
    var uri = parseUri(window.location.href);
	var cdir = uri.directory.replaceAll('/','');
    if($.inArray(cdir, m_ssl)>-1 && ($.inArray(cdir, m_nocks)<0)){
        if(!navigator.cookieEnabled){
            alert("You must enable cookies in your browser in order to access secured areas of ProAssurance.com");
        }
    }
}