/*
	Masked Input plugin for jQuery
	Copyright (c) 2007-2009 Josh Bush (digitalbush.com)
	Licensed under the MIT license (http://digitalbush.com/projects/masked-input-plugin/#license) 
	Version: 1.2.2 (03/09/2009 22:39:06)
*/
(function(a){var c=(a.browser.msie?"paste":"input")+".mask";var b=(window.orientation!=undefined);a.mask={definitions:{"9":"[0-9]",a:"[A-Za-z]","*":"[A-Za-z0-9]"}};a.fn.extend({caret:function(e,f){if(this.length==0){return}if(typeof e=="number"){f=(typeof f=="number")?f:e;return this.each(function(){if(this.setSelectionRange){this.focus();this.setSelectionRange(e,f)}else{if(this.createTextRange){var g=this.createTextRange();g.collapse(true);g.moveEnd("character",f);g.moveStart("character",e);g.select()}}})}else{if(this[0].setSelectionRange){e=this[0].selectionStart;f=this[0].selectionEnd}else{if(document.selection&&document.selection.createRange){var d=document.selection.createRange();e=0-d.duplicate().moveStart("character",-100000);f=e+d.text.length}}return{begin:e,end:f}}},unmask:function(){return this.trigger("unmask")},mask:function(j,d){if(!j&&this.length>0){var f=a(this[0]);var g=f.data("tests");return a.map(f.data("buffer"),function(l,m){return g[m]?l:null}).join("")}d=a.extend({placeholder:"_",completed:null},d);var k=a.mask.definitions;var g=[];var e=j.length;var i=null;var h=j.length;a.each(j.split(""),function(m,l){if(l=="?"){h--;e=m}else{if(k[l]){g.push(new RegExp(k[l]));if(i==null){i=g.length-1}}else{g.push(null)}}});return this.each(function(){var r=a(this);var m=a.map(j.split(""),function(x,y){if(x!="?"){return k[x]?d.placeholder:x}});var n=false;var q=r.val();r.data("buffer",m).data("tests",g);function v(x){while(++x<=h&&!g[x]){}return x}function t(x){while(!g[x]&&--x>=0){}for(var y=x;y<h;y++){if(g[y]){m[y]=d.placeholder;var z=v(y);if(z<h&&g[y].test(m[z])){m[y]=m[z]}else{break}}}s();r.caret(Math.max(i,x))}function u(y){for(var A=y,z=d.placeholder;A<h;A++){if(g[A]){var B=v(A);var x=m[A];m[A]=z;if(B<h&&g[B].test(x)){z=x}else{break}}}}function l(y){var x=a(this).caret();var z=y.keyCode;n=(z<16||(z>16&&z<32)||(z>32&&z<41));if((x.begin-x.end)!=0&&(!n||z==8||z==46)){w(x.begin,x.end)}if(z==8||z==46||(b&&z==127)){t(x.begin+(z==46?0:-1));return false}else{if(z==27){r.val(q);r.caret(0,p());return false}}}function o(B){if(n){n=false;return(B.keyCode==8)?false:null}B=B||window.event;var C=B.charCode||B.keyCode||B.which;var z=a(this).caret();if(B.ctrlKey||B.altKey||B.metaKey){return true}else{if((C>=32&&C<=125)||C>186){var x=v(z.begin-1);if(x<h){var A=String.fromCharCode(C);if(g[x].test(A)){u(x);m[x]=A;s();var y=v(x);a(this).caret(y);if(d.completed&&y==h){d.completed.call(r)}}}}}return false}function w(x,y){for(var z=x;z<y&&z<h;z++){if(g[z]){m[z]=d.placeholder}}}function s(){return r.val(m.join("")).val()}function p(y){var z=r.val();var C=-1;for(var B=0,x=0;B<h;B++){if(g[B]){m[B]=d.placeholder;while(x++<z.length){var A=z.charAt(x-1);if(g[B].test(A)){m[B]=A;C=B;break}}if(x>z.length){break}}else{if(m[B]==z[x]&&B!=e){x++;C=B}}}if(!y&&C+1<e){r.val("");w(0,h)}else{if(y||C+1>=e){s();if(!y){r.val(r.val().substring(0,C+1))}}}return(e?B:i)}if(!r.attr("readonly")){r.one("unmask",function(){r.unbind(".mask").removeData("buffer").removeData("tests")}).bind("focus.mask",function(){q=r.val();var x=p();s();setTimeout(function(){if(x==j.length){r.caret(0,x)}else{r.caret(x)}},0)}).bind("blur.mask",function(){p();if(r.val()!=q){r.change()}}).bind("keydown.mask",l).bind("keypress.mask",o).bind(c,function(){setTimeout(function(){r.caret(p(true))},0)})}p()})}})})(jQuery);

// get current page
cur_page = location.pathname;

// embed flash header
var flashvars = {
	HEADER_XML_PATH: "/includes/header_swf/?url=" + cur_page,
	MENU_SWF_PATH: "/_assets/swf/menu.swf",
	MENU_XML_PATH: "/includes/menu/"
};

var params = {
	allowScriptAccess: 'sameDomain',
	wmode: 'transparent'
};
var attributes = {};

swfobject.embedSWF("/_assets/swf/header.swf", "header", "975", "387", "9.0.0", false, flashvars, params, attributes);

// activates all sifr objects
function activateSIFR(){
	sIFR.activate(meta, metaLeafs);

	sIFR.replace(meta,{
		selector: 'h2',
		wmode: 'transparent',
		ratios: [6, 1.24, 11, 1.13, 12, 1.12, 21, 1.07, 29, 1.04, 30, 1.05, 49, 1.03, 53, 1.02, 54, 1.03, 74, 1.02, 77, 1.01, 78, 1.02, 83, 1.01, 84, 1.02, 89, 1.01, 90, 1.02, 95, 1.01, 96, 1.02, 1.01]
	});

	sIFR.replace(metaHome,{
		selector: '#support p.meta',
		wmode: 'transparent',
		ratios: [6, 1.24, 11, 1.13, 12, 1.12, 21, 1.07, 29, 1.04, 30, 1.05, 49, 1.03, 53, 1.02, 54, 1.03, 74, 1.02, 77, 1.01, 78, 1.02, 83, 1.01, 84, 1.02, 89, 1.01, 90, 1.02, 95, 1.01, 96, 1.02, 1.01]
	});

	sIFR.replace(metaLeafs,{
		selector: '#main .leafs_meta li',
		tuneHeight: -7,
		offsetTop: -1,
		wmode: 'transparent',
		ratios: [6, 1.41, 8, 1.28, 9, 1.16, 12, 1.12, 21, 1.07, 29, 1.04, 30, 1.05, 49, 1.03, 53, 1.02, 54, 1.03, 74, 1.02, 77, 1.01, 78, 1.02, 83, 1.01, 84, 1.02, 89, 1.01, 90, 1.02, 95, 1.01, 96, 1.02, 1.01]
	});
}

var meta = {
	src: '/_assets/swf/meta.swf',
	css: {'.sIFR-root': {'font-weight': 'normal', 'leading': '5', 'color': '#00732E'}}
};

var metaLeafs = {
 	src: '/_assets/swf/meta.swf'
	,css: {'.sIFR-root': {'font-weight': 'normal', 'color': '#3E3E3E'}}
};

var metaHome = {
	src: '/_assets/swf/meta.swf',
	css: {'.sIFR-root': {'font-weight': 'normal', 'leading': '12', 'color': '#6E9AB1'}}
};

sIFR.domains = ['*'];
sIFR.useStyleCheck = true;
activateSIFR();

// resizes fonts
function resize(newSize){
	if($.cookie('font-size') != newSize){
		$('#content').css('font-size', newSize);
		
		if($.browser.msie){
			$('#main h2').css('font-size', 10 * parseFloat(newSize) + 8 + 'px');
		}
		
		$('#careers_frame').livequery(function(){
			var careerSize = parseFloat(newSize) - .2 + 'em';

			$(this).css('font-size', careerSize);
		});

		//$.cookie('font-size', newSize);
		$.cookie('font-size', newSize, { path: '/', domain: document.domain });

		$('.sIFR-replaced').each(function(index){
			var text = $('.sIFR-alternate', this).text();

			$('.sIFR-flash', this).remove();
			$(this).text(text).removeClass('sIFR-replaced').css('visibiilty', 'visible');
			$('.sIFR-active').removeClass('sIFR-active');
			$('.sIFR-dummy').remove();
		});

		activateSIFR();
	}
}

// apply exmple values
function setExamples(){
	$('form input.field, form textarea').example(function(){
		return $(this).attr('title');
	});
}

function handleErrors(){
	$('#main p#required_text').text("All fields outlined in red are required.").addClass('highlighted');
	
	$('form input.field, form textarea, form select').livequery(function(){
		if($(this).val() == ''){
			$(this).example(function(){
				return $(this).attr('title');
			});
		}
	});
}

// Sets iFrame for Careers Modal
function setIframe(url){
	var stringURL = url.replace('&', '&amp;');

	$('#careers_frame iframe#webconnect').livequery(function(){
		$(this).attr('src', url);
	});
}

// Creates Careers Modal
function careersModal(url){
	 $.nyroModalManual({
		ajax:{
			url: '/careers/career-center/'
		},
		endShowContent: function(){
			setIframe(url);
		}
	});
}

// Function to detect if flash header has been previously loaded
function flashLoaded(){
	if(!$.cookie('flashLoaded')){
		$.cookie('flashLoaded', true);
		return false;
	}
	else{
		return true;
	}
}

$(document).ready(function(){
	// preload images
	$.preloadImages('/_assets/img/icon_arrow_over.gif', '/_assets/img/icon_arrow_toggle_over.gif', '/_assets/img/icon_download_over.gif', '/_assets/img/nyromodal/close_over.gif');

	// initial font resizing
	var fontSize = $.cookie('font-size');
	if(fontSize != ''){
		$('#content').css('font-size', fontSize);

		$('#careers_frame').livequery(function(){
			var careerSize = parseFloat(fontSize) - .2 + 'em';

			$(this).css('font-size', careerSize);
		});
		
		if($.browser.msie){
			if(fontSize != null){
				$('#main h2').css('font-size', 10 * parseFloat(fontSize) + 8 + 'px');
			}
		}
	}

	// asynchronous font resizing
	$('#small').click(function(){
		resize('1.2em');
		return false;
	});
	$('#medium').click(function(){
		resize('1.4em');
		return false;
	});
	$('#large').click(function(){
		resize('1.6em');
		return false;
	});
	
	// solution accordion
	$('#home #solutions .solution:first-child').addClass('first');
	$('.content_container', $('#home #solutions .solution').not('.first')).hide();
	$('#home #solutions').accordion({
	    header: 'h3',
		autoHeight: true,
		event: 'mouseover'
	});
	
	// faq accoridion
	$('#faqs .faq:last-child').addClass('last');
	$('#faqs').accordion({
		header: 'p.question',
		autoHeight: false
	});
	$('.faq .question').hover(function(){
		$(this).addClass('over');
	}, function(){
		$(this).removeClass('over');
	});

	// opens all external links in new window
	$('a[href^=http]').not('[href*=mindcomet.net], [href*=webconnect.sendouts.net], [href*=ultirecruit.com], [href*=peachtreefinancial.com]').bind("click", function(){
		return !window.open(this.href);
	});

	// opens all pdf links in new window
	$('a[href*=.pdf]').bind("click", function(){
		return !window.open(this.href);
	});

	$('#zip').mask("99999");
	$('#phone').mask("999-999-9999");
	$('#fax').mask("999-999-9999");
	
	// set form defaults
	setExamples();
	
	
	jQuery.validator.addMethod("phoneUS", function(phone_number, element) {
		phone_number = phone_number.replace(/\s+/g, ""); 
		return this.optional(element) || phone_number.length >= 9 &&
			phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
	}, "Please specify a valid phone number");
	
	jQuery.validator.addMethod("noDigits", function(the_value, element) {
		return this.optional(element) || !the_value.match(/(\d+|\d)/g);
	}, "Name and City fields cannot contain numbers");

	// validate signup form on keyup and submit
	$("#main form.contact_form").validate({
		rules: {
			subject: 'required',
			firstname: {
				required: true,
				noDigits: true
			},
			lastname: {
				required: true,
				noDigits: true
			},
			city: {
				noDigits: true
			},
			zip: {
				digits: true,
				minlength: 5,
				maxlength: 5
			},
			phone: {
				required: true
			},
			fax: {
			},
			email: {
				required: true,
				email: true
			},
			confirm: {
				required: true,
				equalTo: '#email'
			}
		},
		invalidHandler: handleErrors
	});
	
	
	// advanced search toggle
	$('#advanced a').toggle(function() {
		$('.advanced').slideDown(400, function(){
			$('#advanced a').addClass('active');
		});

		if(!$('.advanced').hasClass('activated')){
			// $('select').selectbox({hoverClass: 'current'});
			$('.advanced').addClass('activated')
		};

	}, function() {
		$('.advanced').slideUp(400, function(){
			$('#advanced a').removeClass('active');
		});
	});
	
	// expanding sub-nav toggle
	$('#support .actions li.expand > a').toggle(function(){
		$('ul', $(this).parent('li')).slideDown(300);
		$(this).addClass('active');
	}, function(){
		$('ul', $(this).parent('li')).slideUp(300);
		$(this).removeClass('active');
	});

	// print page
	$('#print a').click(function(){
		window.print();

		return false;
	});
	
	// Modal Panel Settings
	$.nyroModalSettings({
		bgColor: '#000',
		minWidth: 43,
		minHeight: 43
	});
	
	$('a.customModal').click(function(e){
		e.preventDefault();
	
		var url = $(this).attr('href');
		
		careersModal(url);

		return false;
	});

	// Careers Modal Panel
	$('#nav_careers li a').livequery('click', function(){
		var location = $(this).attr('href');
		
		$('iframe#webconnect').attr('src', location);
		
		$('#nav_careers li a').removeClass('active');
		$(this).addClass('active');

		return false;
	});

	// support active
	$('#support .actions li a').each(function(i) {
                var current_url = location.pathname.replace(/^\//,'');
                var last_char = current_url.charAt(current_url.length - 1);

                if (last_char != '/') {
                        current_url = current_url + "/";
                }

		if (this.pathname.replace(/^\//,'') == current_url) {
			$(this).addClass("active");
		}
	});
	
	// breadcrumb
	$('#breadcrumb a').each(function(i) {
		var current_url = location.pathname.replace(/^\//,'');
		var last_char = current_url.charAt(current_url.length - 1);
		
		if (last_char != '/') {
			current_url = current_url + "/";
		}

		if (this.pathname.replace(/^\//,'') == current_url) {
			$(this).wrap("<em></em>");
		}
	});
	
	// results styling
	$("#results .result:odd").addClass("odd");
});
