// page init$(function(){	initNavFix();	initClearInputs();	initDrop();	initFadeGallery();});// init fade galleryfunction initFadeGallery(){	$('.carousel').fadeGallery({		slideElements: '.frame > ul > li',		autoRotation:true,		switchTime:3000	});}// drop fix initfunction initNavFix(){	new touchNav({		navBlock: 'nav'	});}// drop initfunction initDrop(){	initNav({		menuId: "nav",		cleverMode: true,		hoverClass: "hover",		flexibility: true,		sideClasses: true,		menuPaddings: 20,		minWidth: 90	});}// clear inputs initfunction initClearInputs(){	clearFormFields({		clearInputs: true,		clearTextareas: true,		passwordFieldText: true,		addClassFocus: "focus",		filterClass: "default"	});}// clear inputs functionfunction clearFormFields(o){	if (o.clearInputs == null) o.clearInputs = true;	if (o.clearTextareas == null) o.clearTextareas = true;	if (o.passwordFieldText == null) o.passwordFieldText = false;	if (o.addClassFocus == null) o.addClassFocus = false;	if (!o.filterClass) o.filterClass = "default";	if(o.clearInputs) {		var inputs = document.getElementsByTagName("input");		for (var i = 0; i < inputs.length; i++ ) {			if((inputs[i].type == "text" || inputs[i].type == "password") && inputs[i].className.indexOf(o.filterClass) == -1) {				inputs[i].valueHtml = inputs[i].value;				inputs[i].onfocus = function ()	{					if(this.valueHtml == this.value) this.value = "";					if(this.fake) {						inputsSwap(this, this.previousSibling);						this.previousSibling.focus();					}					if(o.addClassFocus && !this.fake) {						this.className += " " + o.addClassFocus;						this.parentNode.className += " parent-" + o.addClassFocus;					}				}				inputs[i].onblur = function () {					if(this.value == "") {						this.value = this.valueHtml;						if(o.passwordFieldText && this.type == "password") inputsSwap(this, this.nextSibling);					}					if(o.addClassFocus) {						this.className = this.className.replace(o.addClassFocus, "");						this.parentNode.className = this.parentNode.className.replace("parent-"+o.addClassFocus, "");					}				}				if(o.passwordFieldText && inputs[i].type == "password") {					var fakeInput = document.createElement("input");					fakeInput.type = "text";					fakeInput.value = inputs[i].value;					fakeInput.className = inputs[i].className;					fakeInput.fake = true;					inputs[i].parentNode.insertBefore(fakeInput, inputs[i].nextSibling);					inputsSwap(inputs[i], null);				}			}		}	}	if(o.clearTextareas) {		var textareas = document.getElementsByTagName("textarea");		for(var i=0; i<textareas.length; i++) {			if(textareas[i].className.indexOf(o.filterClass) == -1) {				textareas[i].valueHtml = textareas[i].value;				textareas[i].onfocus = function() {					if(this.value == this.valueHtml) this.value = "";					if(o.addClassFocus) {						this.className += " " + o.addClassFocus;						this.parentNode.className += " parent-" + o.addClassFocus;					}				}				textareas[i].onblur = function() {					if(this.value == "") this.value = this.valueHtml;					if(o.addClassFocus) {						this.className = this.className.replace(o.addClassFocus, "");						this.parentNode.className = this.parentNode.className.replace("parent-"+o.addClassFocus, "");					}				}			}		}	}	function inputsSwap(el, el2) {		if(el) el.style.display = "none";		if(el2) el2.style.display = "inline";	}}// drop functionfunction initNav(o){	if (!o.menuId) o.menuId = "nav";	if (!o.cleverMode) o.cleverMode = false;	if (!o.flexibility) o.flexibility = false;	if (!o.dropExistenceClass) o.dropExistenceClass = false;	if (!o.hoverClass) o.hoverClass = "hover";	if (!o.menuHardCodeClass) o.menuHardCodeClass = "menu-hard-code";	if (!o.sideClasses) o.sideClasses = false;	if (!o.center) o.center = false;	if (!o.menuPaddings) o.menuPaddings = 0;	if (!o.minWidth) o.minWidth = 0;	if (!o.coeff) o.coeff = 1.7;	var n = document.getElementById(o.menuId);	if(n)	{		n.className = n.className.replace(o.menuHardCodeClass, "");		var lfl = [];		var li = n.getElementsByTagName("li");		for (var i=0; i<li.length; i++)		{			li[i].className += (" " + o.hoverClass);			var d = li[i].getElementsByTagName("div").item(0);			if(d)			{				if(o.flexibility)				{					var a = d.getElementsByTagName("a");					for (var j=0; j<a.length; j++)					{						var w = a[j].parentNode.parentNode.offsetWidth;						if(w > 0)						{							if(typeof(o.minWidth) == "number" && w < o.minWidth)								w = o.minWidth;							else if(typeof(o.minWidth) == "string" && li[i].parentNode == n && w < li[i].offsetWidth)								w = li[i].offsetWidth - 3;							a[j].style.width = w - o.menuPaddings + "px";						}					}					d.style.width = li[i].getElementsByTagName("div").item(1).clientWidth + "px";				}				var t = document.documentElement.clientWidth/o.coeff;				if(li[i].parentNode != n && (!o.cleverMode || fPX(li[i]) < t))				{					d.style.right = "auto";					d.style.left = li[i].parentNode.offsetWidth + "px";					d.parentNode.className += " left-side";				}					else if(li[i].parentNode != n && (o.cleverMode || fPX(li[i]) >= t))				{					d.style.left = "auto";					d.style.right = li[i].parentNode.offsetWidth + "px";					d.parentNode.className += " right-side";				}				else if(li[i].parentNode == n && o.cleverMode && fPX(li[i]) >= t)				{					li[i].className += " right-side";				}				if(li[i].parentNode == n && o.center)					d.style.left = -li[i].getElementsByTagName("div").item(1).clientWidth/2 + li[i].clientWidth/2 + "px";			}			if(o.dropExistenceClass && li[i].getElementsByTagName("ul").length > 0)			{				li[i].className += (" " + o.dropExistenceClass);				li[i].getElementsByTagName("a").item(0).className += (" " + o.dropExistenceClass + "-link");				li[i].innerHTML += "<em class='pointer'></em>";			}			if(li[i].parentNode == n) lfl.push(li[i]);		}		if(o.sideClasses)		{			lfl[0].className += " first-child";			lfl[0].getElementsByTagName("a").item(0).className += " first-child-link";			lfl[lfl.length-1].className += " last-child";			lfl[lfl.length-1].getElementsByTagName("a").item(0).className += " last-child-link";		}		for (var i=0; i<li.length; i++)		{			li[i].className = li[i].className.replace(o.hoverClass, "");			li[i].onmouseover = function()			{				this.className += (" " + o.hoverClass);			}			li[i].onmouseout = function()			{				this.className = this.className.replace(o.hoverClass, "");			}		}	}	function fPX(a)	{		var b = 0;		while (a.offsetParent) {b += a.offsetLeft; a = a.offsetParent;}		return b;	}}// mobile browsers detectbrowserPlatform = {	platforms: [		{ uaString:['BlackBerry','midp'], cssFile:'blackberry.css' }, // Blackberry <5		{ uaString:['symbian','midp'], cssFile:'symbian.css' }, // Symbian phones		{ uaString:['opera','mobi'], cssFile:'opera.css' }, // Opera Mobile		{ uaString:['msie','ppc'], cssFile:'ieppc.css' }, // IE Mobile <6		{ uaString:'iemobile', cssFile:'iemobile.css' }, // IE Mobile 6+		{ uaString:'webos', cssFile:'webos.css' }, // Palm WebOS		{ uaString:'Android', cssFile:'android.css' }, // Android		{ uaString:['BlackBerry','6.0','mobi'], cssFile:'blackberry6.0.css' },	// Blackberry 6+		{ uaString:'ipad', cssFile:'ipad.css', miscHead:'<meta name="viewport" content="width=device-width" />' }, // iPad		{ uaString:['safari','mobi'], cssFile:'safari.css', miscHead:'<meta name="viewport" content="width=device-width" />' } // iPhone and other webkit browsers	],	options: {		cssPath:'http://www.frontlinemissions.info/wp-content/themes/frontlinemissionsinternational/css/',		mobileCSS:'allmobile.css'	},	init:function(){		this.checkMobile();		this.parsePlatforms();		return this;	},	checkMobile: function() {		if(this.uaMatch('mobi') || this.uaMatch('midp') || this.uaMatch('ppc') || this.uaMatch('webos')) {			this.attachStyles({cssFile:this.options.mobileCSS});		}	},	parsePlatforms: function() {		for(var i = 0; i < this.platforms.length; i++) {			if(typeof this.platforms[i].uaString === 'string') {				if(this.uaMatch(this.platforms[i].uaString)) {					this.attachStyles(this.platforms[i]);					break;				}			} else {				for(var j = 0, allMatch = true; j < this.platforms[i].uaString.length; j++) {					if(!this.uaMatch(this.platforms[i].uaString[j])) {						allMatch = false;					}				}				if(allMatch) {					this.attachStyles(this.platforms[i]);					break;				}			}		}	},	attachStyles: function(platform) {		var head = document.getElementsByTagName('head')[0], fragment;		var cssText = '<link rel="stylesheet" href="' + this.options.cssPath + platform.cssFile + '" type="text/css"/>';		var miscText = platform.miscHead;		if(platform.cssFile) {			if(document.body) {				fragment = document.createElement('div');				fragment.innerHTML = cssText;				head.appendChild(fragment.childNodes[0]);			} else {				document.write(cssText);			}		}		if(platform.miscHead) {			if(document.body) {				fragment = document.createElement('div');				fragment.innerHTML = miscText;				head.appendChild(fragment.childNodes[0]);			} else {				document.write(miscText);			}		}	},	uaMatch:function(str) {		if(!this.ua) {			this.ua = navigator.userAgent.toLowerCase();		}		return this.ua.indexOf(str.toLowerCase()) != -1;	}}.init();// navigation accesibility modulefunction touchNav(options) {	this.options = {		mobileReg: /(ipad|iphone|ipod|android|blackberry|iemobile)/gi,		hoverClass: 'hover',		followLink: false,		menuItems: 'li',		menuOpener: 'a',		menuDrop: 'div',		navBlock: null	}	for(var p in options) {		this.options[p] = options[p];	}	this.init();}touchNav.prototype = {	init: function() {		this.isMobile = (this.options.mobileReg).test(navigator.userAgent);		if(typeof this.options.navBlock === 'string') {			this.menu = document.getElementById(this.options.navBlock);		} else if(typeof this.options.navBlock === 'object') {			this.menu = this.options.navBlock;		}		if(this.menu) {			this.getElements();			this.addEvents();		}	},	getElements: function() {		this.menuItems = this.menu.getElementsByTagName(this.options.menuItems);	},	hideActiveDropdown: function() {		if(this.activeParent) {			for(var i = 0; i < this.menuItems.length; i++) {				this.removeClass(this.menuItems[i], this.options.hoverClass);			}			this.activeParent = null;		}	},	getOpener: function(obj) {		for(var i = 0; i < obj.childNodes.length; i++) {			if(obj.childNodes[i].tagName && obj.childNodes[i].tagName.toLowerCase() == this.options.menuOpener.toLowerCase()) {				return obj.childNodes[i];			}		}		return false;	},	getDrop: function(obj) {		for(var i = 0; i < obj.childNodes.length; i++) {			if(obj.childNodes[i].tagName && obj.childNodes[i].tagName.toLowerCase() == this.options.menuDrop.toLowerCase()) {				return obj.childNodes[i];			}		}		return false;	},	addEvents: function() {		// mobile event handlers		if(this.isMobile) {			for(var i = 0; i < this.menuItems.length; i++) {				this.menuItems[i].touchNav = this;				if(this.getDrop(this.menuItems[i])) {					this.addHandler(this.getOpener(this.menuItems[i]), 'click', this.bind(this.clickHandler,this.menuItems[i]));				}			}			this.addHandler(document.body, 'click', this.bind(this.outsideHandler, this));			this.addHandler(document.body, 'touchstart', this.bind(this.outsideHandler, this));		}		// desktop event handlers		else {			for(var i = 0; i < this.menuItems.length; i++) {				this.menuItems[i].touchNav = this;				this.addHandler(this.menuItems[i], 'mouseover', this.mouseoverHandler);				this.addHandler(this.menuItems[i], 'mouseout', this.mouseoutHandler);			}		}	},	outsideHandler: function(e) {		var childFlag = false;		if(this.activeParent) {			this.outsideTarget = e.target || e.currentTarget || e.srcElement;			while (this.outsideTarget.parentNode) {				if(this.activeParent == this.outsideTarget) {					childFlag = true;					break;				}				this.outsideTarget = this.outsideTarget.parentNode;			}			if(!childFlag) {				this.hideActiveDropdown();			}		}	},	mouseoverHandler: function() {		this.touchNav.addClass(this, this.touchNav.options.hoverClass);	},	mouseoutHandler: function() {		this.touchNav.removeClass(this, this.touchNav.options.hoverClass);	},	clickHandler: function(e) {		// get current dropdown		var tNav = this.touchNav;		tNav.currentElement = e.currentTarget || e.srcElement;		tNav.currentParent = tNav.currentElement.parentNode;		// hide previous drop (if exists)		if(tNav.activeParent && !tNav.isParent(tNav.activeParent, tNav.currentParent) && tNav.currentParent != tNav.activeParent) {			tNav.hideActiveDropdown();		}		// handle current drop		if(tNav.hasClass(tNav.currentParent, tNav.options.hoverClass)) {			tNav.removeClass(tNav.currentParent, tNav.options.hoverClass);			if(tNav.options.followLink) {				window.location.href = tNav.currentElement.href;			}		} else {			tNav.addClass(tNav.currentParent, tNav.options.hoverClass);			tNav.activeParent = tNav.currentParent;			return tNav.preventEvent(e);		}	},	preventEvent: function(e) {		if(!e) e = window.event;		if(e.preventDefault) e.preventDefault();		if(e.stopPropagation) e.stopPropagation();		e.cancelBubble = true;		return false;	},	isParent: function(parent, child) {		while(child.parentNode) {			if(child.parentNode == parent) {				return true;			}			child = child.parentNode;		}		return false;	},	addHandler: function(object, event, handler) {		if (typeof object.addEventListener != 'undefined') object.addEventListener(event, this.bind(handler,object), false);		else if (typeof object.attachEvent != 'undefined') object.attachEvent('on' + event, this.bind(handler,object));	},	removeHandler: function(object, event, handler) {		if (typeof object.removeEventListener != 'undefined') object.removeEventListener(event, handler, false);		else if (typeof object.detachEvent != 'undefined') object.detachEvent('on' + event, handler);	},	hasClass: function(obj,cname) {		return (obj.className ? obj.className.match(new RegExp('(\\s|^)'+cname+'(\\s|$)')) : false);	},	addClass: function(obj,cname) {		if (!this.hasClass(obj,cname)) obj.className += " "+cname;	},	removeClass: function(obj,cname) {		if (this.hasClass(obj,cname)) obj.className=obj.className.replace(new RegExp('(\\s|^)'+cname+'(\\s|$)'),' ');	},	bind: function(func, scope){		return function() {			return func.apply(scope, arguments);		}	}}// slideshow pluginjQuery.fn.fadeGallery = function(_options){	var _options = jQuery.extend({		slideElements:'div.slideset > div',		pagerLinks:'div.pager a',		btnNext:'a.next',		btnPrev:'a.prev',		btnPlayPause:'a.play-pause',		btnPlay:'a.play',		btnPause:'a.pause',		pausedClass:'paused',		disabledClass: 'disabled',		playClass:'playing',		activeClass:'active',		loadingClass:'ajax-loading',		loadedClass:'slide-loaded',		dynamicImageLoad:false,		dynamicImageLoadAttr:'alt',		currentNum:false,		allNum:false,		startSlide:null,		noCircle:false,		pauseOnHover:true,		autoRotation:false,		autoHeight:false,		onBeforeFade:false,		onAfterFade:false,		onChange:false,		disableWhileAnimating:false,		switchTime:3000,		duration:650,		event:'click'	},_options);	return this.each(function(){		// gallery options		if(this.slideshowInit) return; else this.slideshowInit;		var _this = jQuery(this);		var _slides = jQuery(_options.slideElements, _this);		var _pagerLinks = jQuery(_options.pagerLinks, _this);		var _btnPrev = jQuery(_options.btnPrev, _this);		var _btnNext = jQuery(_options.btnNext, _this);		var _btnPlayPause = jQuery(_options.btnPlayPause, _this);		var _btnPause = jQuery(_options.btnPause, _this);		var _btnPlay = jQuery(_options.btnPlay, _this);		var _pauseOnHover = _options.pauseOnHover;		var _dynamicImageLoad = _options.dynamicImageLoad;		var _dynamicImageLoadAttr = _options.dynamicImageLoadAttr;		var _autoRotation = _options.autoRotation;		var _activeClass = _options.activeClass;		var _loadingClass = _options.loadingClass;		var _loadedClass = _options.loadedClass;		var _disabledClass = _options.disabledClass;		var _pausedClass = _options.pausedClass;		var _playClass = _options.playClass;		var _autoHeight = _options.autoHeight;		var _duration = _options.duration;		var _switchTime = _options.switchTime;		var _controlEvent = _options.event;		var _currentNum = (_options.currentNum ? jQuery(_options.currentNum, _this) : false);		var _allNum = (_options.allNum ? jQuery(_options.allNum, _this) : false);		var _startSlide = _options.startSlide;		var _noCycle = _options.noCircle;		var _onChange = _options.onChange;		var _onBeforeFade = _options.onBeforeFade;		var _onAfterFade = _options.onAfterFade;		var _disableWhileAnimating = _options.disableWhileAnimating;		// gallery init		var _anim = false;		var _hover = false;		var _prevIndex = 0;		var _currentIndex = 0;		var _slideCount = _slides.length;		var _timer;		if(_slideCount < 2) return;		_prevIndex = _slides.index(_slides.filter('.'+_activeClass));		if(_prevIndex < 0) _prevIndex = _currentIndex = 0;		else _currentIndex = _prevIndex;		if(_startSlide != null) {			if(_startSlide == 'random') _prevIndex = _currentIndex = Math.floor(Math.random()*_slideCount);			else _prevIndex = _currentIndex = parseInt(_startSlide);		}		_slides.hide().eq(_currentIndex).show();		if(_autoRotation) _this.removeClass(_pausedClass).addClass(_playClass);		else _this.removeClass(_playClass).addClass(_pausedClass);		// gallery control		if(_btnPrev.length) {			_btnPrev.bind(_controlEvent,function(){				prevSlide();				return false;			});		}		if(_btnNext.length) {			_btnNext.bind(_controlEvent,function(){				nextSlide();				return false;			});		}		if(_pagerLinks.length) {			_pagerLinks.each(function(_ind){				jQuery(this).bind(_controlEvent,function(){					if(_currentIndex != _ind) {						if(_disableWhileAnimating && _anim) return;						_prevIndex = _currentIndex;						_currentIndex = _ind;						switchSlide();					}					return false;				});			});		}		// play pause section		if(_btnPlayPause.length) {			_btnPlayPause.bind(_controlEvent,function(){				if(_this.hasClass(_pausedClass)) {					_this.removeClass(_pausedClass).addClass(_playClass);					_autoRotation = true;					autoSlide();				} else {					_autoRotation = false;					if(_timer) clearTimeout(_timer);					_this.removeClass(_playClass).addClass(_pausedClass);				}				return false;			});		}		if(_btnPlay.length) {			_btnPlay.bind(_controlEvent,function(){				_this.removeClass(_pausedClass).addClass(_playClass);				_autoRotation = true;				autoSlide();				return false;			});		}		if(_btnPause.length) {			_btnPause.bind(_controlEvent,function(){				_autoRotation = false;				if(_timer) clearTimeout(_timer);				_this.removeClass(_playClass).addClass(_pausedClass);				return false;			});		}		// dynamic image loading (swap from ATTRIBUTE)		function loadSlide(slide) {			if(!slide.hasClass(_loadingClass) && !slide.hasClass(_loadedClass)) {				var images = slide.find(_dynamicImageLoad) // pass selector here				var imagesCount = images.length;				if(imagesCount) {					slide.addClass(_loadingClass);					images.each(function(){						var img = this;						img.onload = function(){							img.loaded = true;							img.onload = null;							setTimeout(reCalc,_duration);						}						img.setAttribute('src', img.getAttribute(_dynamicImageLoadAttr));						img.setAttribute(_dynamicImageLoadAttr,'');					}).css({opacity:0});					function reCalc() {						var cnt = 0;						images.each(function(){							if(this.loaded) cnt++;						});						if(cnt == imagesCount) {							slide.removeClass(_loadingClass);							images.animate({opacity:1},{duration:_duration,complete:function(){								if(jQuery.browser.msie && jQuery.browser.version < 9) jQuery(this).css({opacity:'auto'})							}});							slide.addClass(_loadedClass)						}					}				}			}		}		// gallery animation		function prevSlide() {			if(_disableWhileAnimating && _anim) return;			_prevIndex = _currentIndex;			if(_currentIndex > 0) _currentIndex--;			else {				if(_noCycle) return;				else _currentIndex = _slideCount-1;			}			switchSlide();		}		function nextSlide() {			if(_disableWhileAnimating && _anim) return;			_prevIndex = _currentIndex;			if(_currentIndex < _slideCount-1) _currentIndex++;			else {				if(_noCycle) return;				else _currentIndex = 0;			}			switchSlide();		}		function refreshStatus() {			if(_dynamicImageLoad) loadSlide(_slides.eq(_currentIndex));			if(_pagerLinks.length) _pagerLinks.removeClass(_activeClass).eq(_currentIndex).addClass(_activeClass);			if(_currentNum) _currentNum.text(_currentIndex+1);			if(_allNum) _allNum.text(_slideCount);			_slides.eq(_prevIndex).removeClass(_activeClass);			_slides.eq(_currentIndex).addClass(_activeClass);			if(_noCycle) {				if(_btnPrev.length) {					if(_currentIndex == 0) _btnPrev.addClass(_disabledClass);					else _btnPrev.removeClass(_disabledClass);				}				if(_btnNext.length) {					if(_currentIndex == _slideCount-1) _btnNext.addClass(_disabledClass);					else _btnNext.removeClass(_disabledClass);				}			}			if(typeof _onChange === 'function') {				_onChange(_this, _slides, _prevIndex, _currentIndex);			}		}		function switchSlide() {			_anim = true;			if(typeof _onBeforeFade === 'function') _onBeforeFade(_this, _slides, _prevIndex, _currentIndex);				_slides.eq(_prevIndex).stop().animate({opacity:0}, {queue:false, duration:_duration, complete: function(){					$(this).css({opacity:1, display: 'none'})					_anim = false;				}});				_slides.eq(_currentIndex).css({opacity:0, display: 'block'}).stop().animate({opacity:1}, {queue:false, duration:_duration, complete: function(){					if(typeof _onAfterFade === 'function') _onAfterFade(_this, _slides, _prevIndex, _currentIndex);				}});			if(_autoHeight) _slides.eq(_currentIndex).parent().animate({height:_slides.eq(_currentIndex).outerHeight(true)},{duration:_duration,queue:false});			refreshStatus();			autoSlide();		}		// autoslide function		function autoSlide() {			if(!_autoRotation || _hover) return;			if(_timer) clearTimeout(_timer);			_timer = setTimeout(nextSlide,_switchTime+_duration);		}				if(_pauseOnHover) {			_this.hover(function(){				_hover = true;				if(_timer) clearTimeout(_timer);			},function(){				_hover = false;				autoSlide();			});		}		refreshStatus();		autoSlide();	});}
