jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options=options||{};if(value===null){value='';options.expires=-1;}
var expires='';if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000));}else{date=options.expires;}
expires='; expires='+date.toUTCString();}
var path=options.path?'; path='+(options.path):'';var domain=options.domain?'; domain='+(options.domain):'';var secure=options.secure?'; secure':'';document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('');}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==(name+'=')){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break;}}}
return cookieValue;}};

//TODO: Remove this before going live and any console stuff
// Fake Firebug in IE
if (!('console' in window) || !('firebug' in console)) {
	var names = ['log', 'debug', 'info', 'warn', 'error', 'assert', 'dir', 'dirxml', 'group', 'groupEnd', 'time', 'timeEnd', 'count', 'trace', 'profile', 'profileEnd'];
	window.console = {};
	for (var i = 0; i < names.length; ++i) {
		window.console[names[i]] = function() {};
	}
}

var cookie =
{
	name: 'youversion',
	expires: 365,

	get: function()
	{
		return $.cookie(this.name);
	},

	set: function(object, data)
	{
		var new_cookie = this.get();

		if (new_cookie === null)
		{
			new_cookie = {
				interfaces: {
					www: {},
					iphone: {},
					blackberry: {},
					mobile: {}
				}
			};
		}
		else
		{
			new_cookie = $.evalJSON(new_cookie);
		}

		new_cookie.interfaces.www[object] = data;

		$.cookie(this.name, $.toJSON(new_cookie), {expires: this.expires});
	}
}

function setUndefinedValue(variable, default_value) {
	
	return (typeof(variable) === 'undefined') ? default_value : variable;
}

Array.prototype.compare = function(testArr) {
    if (this.length != testArr.length) return false;
    for (var i = 0; i < testArr.length; i++) {
        if (this[i].compare) { 
            if (!this[i].compare(testArr[i])) return false;
        }
        if (this[i] !== testArr[i]) return false;
    }
    return true;
}

String.prototype.limit_words = function(limit, endChar) {

	var longDescription = this;

	//limit = (typeof(limit) === 'undefined') ? 100 : limit;
	limit = setUndefinedValue(limit, 100);

	if (longDescription.length > limit) {
		//endChar = (typeof(endChar) === 'undefined') ? '&#8230;' : endChar;
		endChar = setUndefinedValue(endChar, '&#8230;');
		
		description = longDescription.substring(0, limit);
		description = description.replace(/\w+$/, '');
		description += endChar;
		
		return description;
	}
	
	return longDescription;
}

var search_boxes = false;

$(function() {

	// External links
	$('a[rel*="external"]').live('click', function() {
        window.open($(this).attr('href'));
        return false;
    });

	// Report links
	$('li.report > a, a.report').live('click', function(event) {
		var confirmation = confirm('Are you sure you want to report this?');

		if (confirmation === false) {
			event.preventDefault();
		}
	});

	var search_box_focus = function() {
		var el = $(this);
		if (el.hasClass('placeholder')) {
			if (this.value === this.title) {
				this.value = '';
				el.removeClass('placeholder');
			}
		}
	};

	var search_box_blur = function() {
		if (this.value === '') {
			this.value = this.title;
			$(this).addClass('placeholder');
		}
	};

	// Search placeholder
	search_boxes = $('div.search-box input.search');
	search_boxes.focus(search_box_focus);
	search_boxes.blur(search_box_blur);

	// Add placeholder on load if empty
	$.each(search_boxes, function() {
		if (this.value === '' || this.value === this.title) {
			this.value = this.title;
			$(this).addClass('placeholder');
		}
	});

	// Prevent submit of empty value
	$('div.search-box form').submit(function(e) {
		var search_field = $(this).find('input.search');

		if (search_field.val() === search_field.attr('title') || search_field.val() === '') {
			e.preventDefault();
		}
	});

	// Load in Google Analytics dynamically, only in production
	if (IN_PRODUCTION === true) {
		$(window).load(loadGA);
	}
});

String.prototype.osis_to_human = function() {
	// TODO: Make this function accept which pane they are in so we use correct book list
	var osis = this.split(/[._]/);
	
	if (typeof(reader.main.books.osis_to_human[osis[0]]) !== 'undefined') {
		if (osis.length === 3) {
			return reader.main.books.osis_to_human[osis[0]][0] + ' ' + osis[1] + ':' + osis[2];
		} else if (osis.length === 2) {
			return reader.main.books.osis_to_human[osis[0]][0] + ' ' + osis[1];
		}
	}

	return false;
}

String.prototype.human_to_osis = function(book_human_to_osis, separator, allow_range) {
	var reference = this;
	var reference_original = reference;

	separator = (typeof(separator) === 'undefined') ? '.' : separator;
	allow_range = (typeof(allow_range) === 'undefined') ? false : allow_range;

	// Adjust Song of Solomon
	reference = reference.replace(/(Song of Solomon|Song of Soloman|Song of Songs)/i, 'Song');

	var regexp = /((?:[1-3] )?(?:.*?)) (?:(\d{1,3})(?::(\d{1,3})(?:-(\d{1,3}))?)?)?/;
	
	reference = reference.match(regexp);

	if (reference !== null && typeof(reference[1]) !== 'undefined' && typeof(reference[2]) !== 'undefined') {

		if (reference[1] === 'Song') {
			reference[1] = 'Song of Solomon';
		}

		var book = reference[1].uc_first();

		var chapter = Number(reference[2]);
		chapter = (chapter > 0) ? chapter : 1;

		var verse = Number(reference[3]);
		verse = (verse > 0) ? verse : false;
		
		var range = Number(reference[4]);
		range = (range > 0) ? range : false;

	} else if (reference_original.length > 0) {
		var book = reference_original.replace(/^\s+|\s+$/g, '');
		var chapter = 1;
		var verse   = false;
	} else {
		return false;
	}

	// See if book is valid
	if (typeof(book_human_to_osis[book]) !== 'undefined') {
		book = book_human_to_osis[book][0];
	} else {
		return false;
	}

	if (verse === false) {
		return book + separator + chapter;
	} else if (range === false || allow_range === false) {
		return book + separator + chapter + separator + verse;
	} else {
		return book + separator + chapter + separator + verse + '-' + range;
	}
}

String.prototype.uc_first = function (i) {

	// Determine if first is numeric
	var fchar = this.substr(0,1);

	if (fchar == parseInt(fchar)) {
		return this.substr(0,1) + this.substr(1,1).toUpperCase() + this.substr(2);
	}
	
	return this.substr(0,1).toUpperCase() + this.substr(1);
}

String.prototype.join = function(obj) {
	var out = "";
	
	for (val in obj)
	{
		out += "," + val;
	}
	
	return out.substring(1);
}

// Reference Suggest

var ref_suggest = {
	input: undefined,
	hidden: undefined,
	selectedItem: false,
	references: {},
	
	init: function(input, hidden, initial_values, results_name, callbacks) {

		results_name = (results_name || 'main');

		ref_suggest.input = $(input);
		ref_suggest.hidden = $(hidden);

		ref_suggest.input.unbind();
		ref_suggest.hidden.unbind();

		ref_suggest.input.bind('blur.ref_suggest', function(e) {
			ref_suggest.deselect();
		});

		ref_suggest.references = {};
		ref_suggest.input.parents('ul.reference_suggest').find('li:not(.input)').remove();

		ref_suggest.addValues(initial_values || "");

		ref_suggest.input.reference_suggest(
			results_name,
			{onSelect: function() {}}
		);

		// I really hate browser detection, but I don't see any other way
		if ($.browser.mozilla)
		{
			ref_suggest.input.keypress(ref_suggest.processKey);	// onkeypress repeats arrow keys in Mozilla/Opera
		}
		else
		{
			ref_suggest.input.keydown(ref_suggest.processKey);	// onkeydown repeats arrow keys in IE/Safari
		}

		// LIVE events
		$('form ul.reference_suggest li a').live('click', function(e) {
			ref_suggest.removeItem($(this).parent());
		});

		$('form ul.reference_suggest li').live('click', function(e) {
			ref_suggest.select($(this));
		});

		ref_suggest.input.closest('form')
			.unbind('submit.ref_suggest')
			.bind('submit.ref_suggest', function(event) {
				event.preventDefault();
	
				if (ref_suggest.input.val() != '')
				{
					ref_suggest.addValues(ref_suggest.input.val());
				}
				else
				{
					// join prototype similar to python
					ref_suggest.hidden.val('+'.join(ref_suggest.references).replace(/_/g,'.'));
	
					if (typeof(callbacks) === 'object') {
						$.each(callbacks, function(i, callback) {
							callback();
						});
					} else {
						this.submit();
					}
				}
			});

		ref_suggest.input.closest('ul').click(function() {
			ref_suggest.input.focus();
		});
	},

	updateInput: function() {
		var width = ((ref_suggest.input.val().length * 1) + 1);
		if (width > 15) { width = 15; }
		
		ref_suggest.input.css('width',  width+'em');
	},
	
	processKey: function(e) {

		ref_suggest.input.closest('ul').removeClass('error');
		
		ref_suggest.updateInput();

		if (ref_suggest.input.val() != "") {
			return;
		}

		var KEY = {
			LEFT: 37,
			UP: 38,
			RIGHT: 39,
			DOWN: 40,
			BACKSPACE: 8,
			DEL: 46,
			TAB: 9,
			RET: 13,
			ESC: 27,
			COMMA: 188,
			PAGEUP: 33,
			PAGEDOWN: 34
		};
			
		switch(e.keyCode) {
			case KEY.LEFT:
				ref_suggest.selectPrev();
				break;
			case KEY.RIGHT:
				ref_suggest.selectNext();
				break;
			case KEY.BACKSPACE:
				if (ref_suggest.selectedItem === false) {
					ref_suggest.selectPrev();
				} else {
					ref_suggest.removeSelected();
				}
				break;
			case KEY.DEL:
				ref_suggest.removeSelected();
				break;
			default:
//				ref_suggest.input.css('visibility', 'visible');
				if (ref_suggest.selectedItem !== false) {
					ref_suggest.selectedItem.removeClass('selected');
					ref_suggest.selectedItem = false;
				}
				return;
		}
		
		if (e.preventDefault) {
			e.preventDefault();
		}

		if (e.stopPropagation) {
			e.stopPropagation();
		}

		e.cancelBubble = true;
		e.returnValue = false;
	},

	deselect: function() {
		if (ref_suggest.selectedItem !== false)
		{
			ref_suggest.selectedItem.removeClass('selected');
			ref_suggest.selectedItem = false;
		}
	},

	select: function(li) {
		ref_suggest.deselect();
		
		ref_suggest.selectedItem = li;
		
		if (ref_suggest.selectedItem.length == 0 || ref_suggest.selectedItem.hasClass('input'))
		{
			ref_suggest.selectedItem = false;
		}
		else
		{
			ref_suggest.selectedItem.addClass('selected');
		}
	},
	
	selectPrev: function() {
		var e = ref_suggest.selectedItem || ref_suggest.input.parent();
		ref_suggest.select(e.prev('li'));
	},
	
	selectNext: function() {
		var e = ref_suggest.selectedItem || ref_suggest.input.parent();
		var li = e.next('li');
		if (li.length == 0)	//wrap around
		{
			li = e.siblings('li:first-child');
		}

		ref_suggest.select(li);
	},
	
	removeSelected: function() {
		if (ref_suggest.selectedItem === false) { return; }
		
		ref_suggest.removeItem(ref_suggest.selectedItem);
	},
	
	removeItem: function(li) {
		if (ref_suggest.selectedItem == li)
		{
			ref_suggest.selectedItem = false;
		}
		
		var ref = li.attr('rel');
		
		delete ref_suggest.references[ref];

		li.remove();
	},
	
	addValues: function(values) {
		var parts = values.split('+');

		for (var i = 0; i < parts.length; i++)
		{
			var str = $.trim(parts[i]);

			if (str == '') { continue; }
			str = str.uc_first();

			var ref = str.human_to_osis(reader.main.books.human_to_osis, '_', true);

			if (ref === false) {
				parts[i] = str.osis_to_human();

				if (parts[i] !== false)
				{
					ref = parts[i].human_to_osis(reader.main.books.human_to_osis, '_', true);
				}
			}

			if (ref !== false) {
				var osis = ref.split('_');
	
				if (osis.length < 3) {
					ref += '_1';
				}
			}

			if (ref === false || ref_suggest.references[ref]) { // Show error and then leave function
				ref_suggest.input.closest('ul').addClass('error');
				continue;
			}

			ref_suggest.input.closest('ul').removeClass('error');

			ref_suggest.references[ref] = ref;

			//get human
			var human = ref.osis_to_human();
			ref_suggest.input.parent().before('<li rel=\"'+ref+'\">'+human+'<a class=\"x\">x</a></li>');
		}
		ref_suggest.input.val('');
		ref_suggest.updateInput();
		ref_suggest.input.focus();
	},
	
	clear: function() {
		ref_suggest.input.closest('ul').find('li:not(li.input)').remove();
		ref_suggest.hidden.val('');
		ref_suggest.references = {};
	},
	
	removeValues: function(values) {
		var parts = values.split(',');

		for (var i = 0; i < parts.length; i++)
		{
			var str = $.trim(parts[i]);

			if (str == '') { continue; }
			str = str.uc_first();

			var ref = str.human_to_osis(reader.main.books.human_to_osis, '_', true);

			if (ref === false) {
				parts[i] = str.osis_to_human();

				if (parts[i] !== false)
				{
					ref = parts[i].human_to_osis(reader.main.books.human_to_osis, '_', true);
				}
			}

			if (ref !== false) {
				var osis = ref.split('_');
	
				if (osis.length < 3) {
					ref += '_1';
				}
			}

//			if (ref === false || ref_suggest.references[ref]) { // Show error and then leave function
//				ref_suggest.input.closest('ul').addClass('error');
//				continue;
//			}

			var item = ref_suggest.input.closest('ul').find('li[rel='+ref+']');
			if (item.length === 1)
			{
				ref_suggest.removeItem(item);
			}
		}
		ref_suggest.input.val('');
		ref_suggest.updateInput();
		ref_suggest.input.focus();
	}
};

// Google Analytics
// Load in dynamically

function loadGA() {
    var s1 = document.createElement('script');
    s1.setAttribute('id', 'googleanalytics');
    s1.setAttribute('src', 'http://www.google-analytics.com/urchin.js');
    s1.setAttribute('type', 'text/javascript');

    $(s1).bind('readystatechange', function () {
	    if ((s1.readyState == 'complete') || (s1.readyState == 'loaded')) {
			callGA();
	    }
	});

    $(s1).load(callGA);
    document.getElementsByTagName('head').item(0).appendChild(s1);
}

function callGA() {
    var s2 = document.createElement('script');
    s2.setAttribute('type', 'text/javascript');
    s2.text = '_uacct="UA-351257-4"; urchinTracker();';
    document.getElementsByTagName('body').item(0).appendChild(s2);

}

// Avatar Expand

var avatars = {
	init: function() {
		$('body').append('<div id="img_slide" style="padding: 5px; position: absolute; display: none;"><div id="img_bground" style="width: 100%; height: 100%"></div></div>');
		
		$('a.user-avatar.expand').bind('click', avatars.expand);
		
		$('#img_slide').click();
	},
	
	expand: function(event) {
		event.preventDefault();
		$(this).unbind('click', avatars.expand);
			
		var img_url = $(this).find('img').attr('src');
		img_url = img_url.replace(/\d+x\d+/, '512x512');
		
		var e = $('#img_slide');
		var i = $('#img_bground');
		
		i.css('background', '#EEE url('+img_url+')');
		i.hide();
		
		e.css('opacity', 0);
		e.show();
		
		var img = $(this).find('img');
		var offset = img.offset();
		
		e.css('height', '48px');
		e.css('width', '48px');
		
		e.css('top', offset.top - 6);
		e.css('left', offset.left - 6);
		
		//url(/img/loader_lg_black_on_lt_gray.gif) no-repeat center center
		e.css('background', '#EEE');
		e.css('border', '1px solid #CDCDCD');
		
		e.fadeTo(300, 1, function() {			
			e.animate({ width: "512px", height: "512px" }, 
				{ 
					duration: 150, 
					queue: false, 
					complete: function() {
						i.show();
						e.bind('click', avatars.contract);
					}
				}
			);
		});
	},
	
	contract: function(event) {
		var e = $(this);
		var i = $(this).find('#img_bground');
		
		e.unbind('click', avatars.contract);
		
		e.animate({ width: "48px", height: "48px" },
			{
				queue: false, 
				duration: 150, 
				complete: 
					function() { 
						i.hide(); 
						
						e.fadeTo(300, 0, function() {
							e.css('display', 'none');
						});
						
						$('a.user-avatar.expand').bind('click', avatars.expand);
					} 
			}
		);
	}
};

$(function() {
	avatars.init();

	// Focus username or password fields on sign-in page
	if ($('#password').val() === '') {
		$('#username').select();
	} else {
		$('#password').select();
	}

	// Country filtering
	$("select[name='country']").change(function() {  
		if ($(this).val() == 'US') { 
			$('div.state').css({display:'block'}); 
			$('div.province').css({display:'none'}); 
		} else { 
			$('div.state').css({display:'none'}); 
			$('div.province').css({display:'block'}); 
		} 
		
		var tz = $('#timezone').val();
		$.getJSON('/my/edit-profile/timezones/'+$(this).val(), function(data){ 
		
			var html_f = '<option value=""></option>'; 
			
			$.each(data, function(key, val) 
			{ 
				var selected = (tz == key) ? ' selected="selected"' : '';
				html_f += '<option value="'+key+'"'+selected+'>'+val[1]+'</option>'; 
			}); 
			
			$('#timezone').html(html_f); 
		}); 
	}); 
});
jQuery.easing['jswing']=jQuery.easing['swing'];jQuery.extend(jQuery.easing,{def:'easeOutQuad',swing:function(x,t,b,c,d){return jQuery.easing[jQuery.easing.def](x,t,b,c,d);},easeInQuad:function(x,t,b,c,d){return c*(t/=d)*t+b;},easeOutQuad:function(x,t,b,c,d){return-c*(t/=d)*(t-2)+b;},easeInOutQuad:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t+b;return-c/2*((--t)*(t-2)-1)+b;},easeInCubic:function(x,t,b,c,d){return c*(t/=d)*t*t+b;},easeOutCubic:function(x,t,b,c,d){return c*((t=t/d-1)*t*t+1)+b;},easeInOutCubic:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t+b;return c/2*((t-=2)*t*t+2)+b;},easeInQuart:function(x,t,b,c,d){return c*(t/=d)*t*t*t+b;},easeOutQuart:function(x,t,b,c,d){return-c*((t=t/d-1)*t*t*t-1)+b;},easeInOutQuart:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t+b;return-c/2*((t-=2)*t*t*t-2)+b;},easeInQuint:function(x,t,b,c,d){return c*(t/=d)*t*t*t*t+b;},easeOutQuint:function(x,t,b,c,d){return c*((t=t/d-1)*t*t*t*t+1)+b;},easeInOutQuint:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t*t+b;return c/2*((t-=2)*t*t*t*t+2)+b;},easeInSine:function(x,t,b,c,d){return-c*Math.cos(t/d*(Math.PI/2))+c+b;},easeOutSine:function(x,t,b,c,d){return c*Math.sin(t/d*(Math.PI/2))+b;},easeInOutSine:function(x,t,b,c,d){return-c/2*(Math.cos(Math.PI*t/d)-1)+b;},easeInExpo:function(x,t,b,c,d){return(t==0)?b:c*Math.pow(2,10*(t/d-1))+b;},easeOutExpo:function(x,t,b,c,d){return(t==d)?b+c:c*(-Math.pow(2,-10*t/d)+1)+b;},easeInOutExpo:function(x,t,b,c,d){if(t==0)return b;if(t==d)return b+c;if((t/=d/2)<1)return c/2*Math.pow(2,10*(t-1))+b;return c/2*(-Math.pow(2,-10*--t)+2)+b;},easeInCirc:function(x,t,b,c,d){return-c*(Math.sqrt(1-(t/=d)*t)-1)+b;},easeOutCirc:function(x,t,b,c,d){return c*Math.sqrt(1-(t=t/d-1)*t)+b;},easeInOutCirc:function(x,t,b,c,d){if((t/=d/2)<1)return-c/2*(Math.sqrt(1-t*t)-1)+b;return c/2*(Math.sqrt(1-(t-=2)*t)+1)+b;},easeInElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4;}
else var s=p/(2*Math.PI)*Math.asin(c/a);return-(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;},easeOutElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4;}
else var s=p/(2*Math.PI)*Math.asin(c/a);return a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b;},easeInOutElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d/2)==2)return b+c;if(!p)p=d*(.3*1.5);if(a<Math.abs(c)){a=c;var s=p/4;}
else var s=p/(2*Math.PI)*Math.asin(c/a);if(t<1)return-.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*.5+c+b;},easeInBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;return c*(t/=d)*t*((s+1)*t-s)+b;},easeOutBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b;},easeInOutBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;if((t/=d/2)<1)return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b;},easeInBounce:function(x,t,b,c,d){return c-jQuery.easing.easeOutBounce(x,d-t,0,c,d)+b;},easeOutBounce:function(x,t,b,c,d){if((t/=d)<(1/2.75)){return c*(7.5625*t*t)+b;}else if(t<(2/2.75)){return c*(7.5625*(t-=(1.5/2.75))*t+.75)+b;}else if(t<(2.5/2.75)){return c*(7.5625*(t-=(2.25/2.75))*t+.9375)+b;}else{return c*(7.5625*(t-=(2.625/2.75))*t+.984375)+b;}},easeInOutBounce:function(x,t,b,c,d){if(t<d/2)return jQuery.easing.easeInBounce(x,t*2,0,c,d)*.5+b;return jQuery.easing.easeOutBounce(x,t*2-d,0,c,d)*.5+c*.5+b;}});

/*
 * jQuery Cycle Plugin (core logic only)
 * Examples and documentation at: http://jquery.malsup.com/cycle/
 * Copyright (c) 2007-2009 M. Alsup
 * Version: 2.63 (17-MAR-2009)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 * Requires: jQuery v1.2.6 or later
 *
 * Originally based on the work of:
 *	1) Matt Oakes
 *	2) Torsten Baldes (http://medienfreunde.com/lab/innerfade/)
 *	3) Benjamin Sterling (http://www.benjaminsterling.com/experiments/jqShuffle/)
 */
;(function($){var ver="2.63";if($.support==undefined){$.support={opacity:!($.browser.msie)};}function log(){if(window.console&&window.console.log){window.console.log("[cycle] "+Array.prototype.join.call(arguments," "));}}$.fn.cycle=function(options,arg2){var o={s:this.selector,c:this.context};if(this.length==0&&options!="stop"){if(!$.isReady&&o.s){log("DOM not ready, queuing slideshow");$(function(){$(o.s,o.c).cycle(options,arg2);});return this;}log("terminating; zero elements found by selector"+($.isReady?"":" (DOM not ready)"));return this;}return this.each(function(){options=handleArguments(this,options,arg2);if(options===false){return;}if(this.cycleTimeout){clearTimeout(this.cycleTimeout);}this.cycleTimeout=this.cyclePause=0;var $cont=$(this);var $slides=options.slideExpr?$(options.slideExpr,this):$cont.children();var els=$slides.get();if(els.length<2){log("terminating; too few slides: "+els.length);return;}var opts=buildOptions($cont,$slides,els,options,o);if(opts===false){return;}if(opts.timeout||opts.continuous){this.cycleTimeout=setTimeout(function(){go(els,opts,0,!opts.rev);},opts.continuous?10:opts.timeout+(opts.delay||0));}});};function handleArguments(cont,options,arg2){if(cont.cycleStop==undefined){cont.cycleStop=0;}if(options===undefined||options===null){options={};}if(options.constructor==String){switch(options){case"stop":cont.cycleStop++;if(cont.cycleTimeout){clearTimeout(cont.cycleTimeout);}cont.cycleTimeout=0;$(cont).removeData("cycle.opts");return false;case"pause":cont.cyclePause=1;return false;case"resume":cont.cyclePause=0;if(arg2===true){options=$(cont).data("cycle.opts");if(!options){log("options not found, can not resume");return false;}if(cont.cycleTimeout){clearTimeout(cont.cycleTimeout);cont.cycleTimeout=0;}go(options.elements,options,1,1);}return false;default:options={fx:options};}}else{if(options.constructor==Number){var num=options;options=$(cont).data("cycle.opts");if(!options){log("options not found, can not advance slide");return false;}if(num<0||num>=options.elements.length){log("invalid slide index: "+num);return false;}options.nextSlide=num;if(cont.cycleTimeout){clearTimeout(this.cycleTimeout);cont.cycleTimeout=0;}if(typeof arg2=="string"){options.oneTimeFx=arg2;}go(options.elements,options,1,num>=options.currSlide);return false;}}return options;}function removeFilter(el,opts){if(!$.support.opacity&&opts.cleartype&&el.style.filter){try{el.style.removeAttribute("filter");}catch(smother){}}}function buildOptions($cont,$slides,els,options,o){var opts=$.extend({},$.fn.cycle.defaults,options||{},$.metadata?$cont.metadata():$.meta?$cont.data():{});if(opts.autostop){opts.countdown=opts.autostopCount||els.length;}var cont=$cont[0];$cont.data("cycle.opts",opts);opts.$cont=$cont;opts.stopCount=cont.cycleStop;opts.elements=els;opts.before=opts.before?[opts.before]:[];opts.after=opts.after?[opts.after]:[];opts.after.unshift(function(){opts.busy=0;});if(!$.support.opacity&&opts.cleartype){opts.after.push(function(){removeFilter(this,opts);});}if(opts.continuous){opts.after.push(function(){go(els,opts,0,!opts.rev);});}saveOriginalOpts(opts);if(!$.support.opacity&&opts.cleartype&&!opts.cleartypeNoBg){clearTypeFix($slides);}if($cont.css("position")=="static"){$cont.css("position","relative");}if(opts.width){$cont.width(opts.width);}if(opts.height&&opts.height!="auto"){$cont.height(opts.height);}if(opts.startingSlide){opts.startingSlide=parseInt(opts.startingSlide);}if(opts.random){opts.randomMap=[];for(var i=0;i<els.length;i++){opts.randomMap.push(i);}opts.randomMap.sort(function(a,b){return Math.random()-0.5;});opts.randomIndex=0;opts.startingSlide=opts.randomMap[0];}else{if(opts.startingSlide>=els.length){opts.startingSlide=0;}}opts.currSlide=opts.startingSlide=opts.startingSlide||0;var first=opts.startingSlide;$slides.css({position:"absolute",top:0,left:0}).hide().each(function(i){var z=first?i>=first?els.length-(i-first):first-i:els.length-i;$(this).css("z-index",z);});$(els[first]).css("opacity",1).show();removeFilter(els[first],opts);if(opts.fit&&opts.width){$slides.width(opts.width);}if(opts.fit&&opts.height&&opts.height!="auto"){$slides.height(opts.height);}var reshape=opts.containerResize&&!$cont.innerHeight();if(reshape){var maxw=0,maxh=0;for(var i=0;i<els.length;i++){var $e=$(els[i]),e=$e[0],w=$e.outerWidth(),h=$e.outerHeight();if(!w){w=e.offsetWidth;}if(!h){h=e.offsetHeight;}maxw=w>maxw?w:maxw;maxh=h>maxh?h:maxh;}if(maxw>0&&maxh>0){$cont.css({width:maxw+"px",height:maxh+"px"});}}if(opts.pause){$cont.hover(function(){this.cyclePause++;},function(){this.cyclePause--;});}if(supportMultiTransitions(opts)===false){return false;}if(!opts.multiFx){var init=$.fn.cycle.transitions[opts.fx];if($.isFunction(init)){init($cont,$slides,opts);}else{if(opts.fx!="custom"&&!opts.multiFx){log("unknown transition: "+opts.fx,"; slideshow terminating");return false;}}}var requeue=false;options.requeueAttempts=options.requeueAttempts||0;$slides.each(function(){var $el=$(this);this.cycleH=(opts.fit&&opts.height)?opts.height:$el.height();this.cycleW=(opts.fit&&opts.width)?opts.width:$el.width();if($el.is("img")){var loadingIE=($.browser.msie&&this.cycleW==28&&this.cycleH==30&&!this.complete);var loadingOp=($.browser.opera&&this.cycleW==42&&this.cycleH==19&&!this.complete);var loadingOther=(this.cycleH==0&&this.cycleW==0&&!this.complete);if(loadingIE||loadingOp||loadingOther){if(o.s&&opts.requeueOnImageNotLoaded&&++options.requeueAttempts<100){log(options.requeueAttempts," - img slide not loaded, requeuing slideshow: ",this.src,this.cycleW,this.cycleH);setTimeout(function(){$(o.s,o.c).cycle(options);},opts.requeueTimeout);requeue=true;return false;}else{log("could not determine size of image: "+this.src,this.cycleW,this.cycleH);}}}return true;});if(requeue){return false;}opts.cssBefore=opts.cssBefore||{};opts.animIn=opts.animIn||{};opts.animOut=opts.animOut||{};$slides.not(":eq("+first+")").css(opts.cssBefore);if(opts.cssFirst){$($slides[first]).css(opts.cssFirst);}if(opts.timeout){opts.timeout=parseInt(opts.timeout);if(opts.speed.constructor==String){opts.speed=$.fx.speeds[opts.speed]||parseInt(opts.speed);}if(!opts.sync){opts.speed=opts.speed/2;}while((opts.timeout-opts.speed)<250){opts.timeout+=opts.speed;}}if(opts.easing){opts.easeIn=opts.easeOut=opts.easing;}if(!opts.speedIn){opts.speedIn=opts.speed;}if(!opts.speedOut){opts.speedOut=opts.speed;}opts.slideCount=els.length;opts.currSlide=opts.lastSlide=first;if(opts.random){opts.nextSlide=opts.currSlide;if(++opts.randomIndex==els.length){opts.randomIndex=0;}opts.nextSlide=opts.randomMap[opts.randomIndex];}else{opts.nextSlide=opts.startingSlide>=(els.length-1)?0:opts.startingSlide+1;}var e0=$slides[first];if(opts.before.length){opts.before[0].apply(e0,[e0,e0,opts,true]);}if(opts.after.length>1){opts.after[1].apply(e0,[e0,e0,opts,true]);}if(opts.next){$(opts.next).click(function(){return advance(opts,opts.rev?-1:1);});}if(opts.prev){$(opts.prev).click(function(){return advance(opts,opts.rev?1:-1);});}if(opts.pager){buildPager(els,opts);}exposeAddSlide(opts,els);return opts;}function saveOriginalOpts(opts){opts.original={before:[],after:[]};opts.original.cssBefore=$.extend({},opts.cssBefore);opts.original.cssAfter=$.extend({},opts.cssAfter);opts.original.animIn=$.extend({},opts.animIn);opts.original.animOut=$.extend({},opts.animOut);$.each(opts.before,function(){opts.original.before.push(this);});$.each(opts.after,function(){opts.original.after.push(this);});}function supportMultiTransitions(opts){var txs=$.fn.cycle.transitions;if(opts.fx.indexOf(",")>0){opts.multiFx=true;opts.fxs=opts.fx.replace(/\s*/g,"").split(",");for(var i=0;i<opts.fxs.length;i++){var fx=opts.fxs[i];var tx=txs[fx];if(!tx||!txs.hasOwnProperty(fx)||!$.isFunction(tx)){log("discarding unknown transition: ",fx);opts.fxs.splice(i,1);i--;}}if(!opts.fxs.length){log("No valid transitions named; slideshow terminating.");return false;}}else{if(opts.fx=="all"){opts.multiFx=true;opts.fxs=[];for(p in txs){var tx=txs[p];if(txs.hasOwnProperty(p)&&$.isFunction(tx)){opts.fxs.push(p);}}}}if(opts.multiFx&&opts.randomizeEffects){var r1=Math.floor(Math.random()*20)+30;for(var i=0;i<r1;i++){var r2=Math.floor(Math.random()*opts.fxs.length);opts.fxs.push(opts.fxs.splice(r2,1)[0]);}log("randomized fx sequence: ",opts.fxs);}return true;}function exposeAddSlide(opts,els){opts.addSlide=function(newSlide,prepend){var $s=$(newSlide),s=$s[0];if(!opts.autostopCount){opts.countdown++;}els[prepend?"unshift":"push"](s);if(opts.els){opts.els[prepend?"unshift":"push"](s);}opts.slideCount=els.length;$s.css("position","absolute");$s[prepend?"prependTo":"appendTo"](opts.$cont);if(prepend){opts.currSlide++;opts.nextSlide++;}if(!$.support.opacity&&opts.cleartype&&!opts.cleartypeNoBg){clearTypeFix($s);}if(opts.fit&&opts.width){$s.width(opts.width);}if(opts.fit&&opts.height&&opts.height!="auto"){$slides.height(opts.height);}s.cycleH=(opts.fit&&opts.height)?opts.height:$s.height();s.cycleW=(opts.fit&&opts.width)?opts.width:$s.width();$s.css(opts.cssBefore);if(opts.pager){$.fn.cycle.createPagerAnchor(els.length-1,s,$(opts.pager),els,opts);}if($.isFunction(opts.onAddSlide)){opts.onAddSlide($s);}else{$s.hide();}};}$.fn.cycle.resetState=function(opts,fx){fx=fx||opts.fx;opts.before=[];opts.after=[];opts.cssBefore=$.extend({},opts.original.cssBefore);opts.cssAfter=$.extend({},opts.original.cssAfter);opts.animIn=$.extend({},opts.original.animIn);opts.animOut=$.extend({},opts.original.animOut);opts.fxFn=null;$.each(opts.original.before,function(){opts.before.push(this);});$.each(opts.original.after,function(){opts.after.push(this);});var init=$.fn.cycle.transitions[fx];if($.isFunction(init)){init(opts.$cont,$(opts.elements),opts);}};function go(els,opts,manual,fwd){if(manual&&opts.busy&&opts.manualTrump){$(els).stop(true,true);opts.busy=false;}if(opts.busy){return;}var p=opts.$cont[0],curr=els[opts.currSlide],next=els[opts.nextSlide];if(p.cycleStop!=opts.stopCount||p.cycleTimeout===0&&!manual){return;}if(!manual&&!p.cyclePause&&((opts.autostop&&(--opts.countdown<=0))||(opts.nowrap&&!opts.random&&opts.nextSlide<opts.currSlide))){if(opts.end){opts.end(opts);}return;}if(manual||!p.cyclePause){var fx=opts.fx;curr.cycleH=curr.cycleH||$(curr).height();curr.cycleW=curr.cycleW||$(curr).width();next.cycleH=next.cycleH||$(next).height();next.cycleW=next.cycleW||$(next).width();if(opts.multiFx){if(opts.lastFx==undefined||++opts.lastFx>=opts.fxs.length){opts.lastFx=0;}fx=opts.fxs[opts.lastFx];opts.currFx=fx;}if(opts.oneTimeFx){fx=opts.oneTimeFx;opts.oneTimeFx=null;}$.fn.cycle.resetState(opts,fx);if(opts.before.length){$.each(opts.before,function(i,o){if(p.cycleStop!=opts.stopCount){return;}o.apply(next,[curr,next,opts,fwd]);});}var after=function(){$.each(opts.after,function(i,o){if(p.cycleStop!=opts.stopCount){return;}o.apply(next,[curr,next,opts,fwd]);});};if(opts.nextSlide!=opts.currSlide){opts.busy=1;if(opts.fxFn){opts.fxFn(curr,next,opts,after,fwd);}else{if($.isFunction($.fn.cycle[opts.fx])){$.fn.cycle[opts.fx](curr,next,opts,after);}else{$.fn.cycle.custom(curr,next,opts,after,manual&&opts.fastOnEvent);}}}opts.lastSlide=opts.currSlide;if(opts.random){opts.currSlide=opts.nextSlide;if(++opts.randomIndex==els.length){opts.randomIndex=0;}opts.nextSlide=opts.randomMap[opts.randomIndex];}else{var roll=(opts.nextSlide+1)==els.length;opts.nextSlide=roll?0:opts.nextSlide+1;opts.currSlide=roll?els.length-1:opts.nextSlide-1;}if(opts.pager){$.fn.cycle.updateActivePagerLink(opts.pager,opts.currSlide);}}var ms=0;if(opts.timeout&&!opts.continuous){ms=getTimeout(curr,next,opts,fwd);}else{if(opts.continuous&&p.cyclePause){ms=10;}}if(ms>0){p.cycleTimeout=setTimeout(function(){go(els,opts,0,!opts.rev);},ms);}}$.fn.cycle.updateActivePagerLink=function(pager,currSlide){$(pager).find("a").removeClass("activeSlide").filter("a:eq("+currSlide+")").addClass("activeSlide");};function getTimeout(curr,next,opts,fwd){if(opts.timeoutFn){var t=opts.timeoutFn(curr,next,opts,fwd);if(t!==false){return t;}}return opts.timeout;}$.fn.cycle.next=function(opts){advance(opts,opts.rev?-1:1);};$.fn.cycle.prev=function(opts){advance(opts,opts.rev?1:-1);};function advance(opts,val){var els=opts.elements;var p=opts.$cont[0],timeout=p.cycleTimeout;if(timeout){clearTimeout(timeout);p.cycleTimeout=0;}if(opts.random&&val<0){opts.randomIndex--;if(--opts.randomIndex==-2){opts.randomIndex=els.length-2;}else{if(opts.randomIndex==-1){opts.randomIndex=els.length-1;}}opts.nextSlide=opts.randomMap[opts.randomIndex];}else{if(opts.random){if(++opts.randomIndex==els.length){opts.randomIndex=0;}opts.nextSlide=opts.randomMap[opts.randomIndex];}else{opts.nextSlide=opts.currSlide+val;if(opts.nextSlide<0){if(opts.nowrap){return false;}opts.nextSlide=els.length-1;}else{if(opts.nextSlide>=els.length){if(opts.nowrap){return false;}opts.nextSlide=0;}}}}if($.isFunction(opts.prevNextClick)){opts.prevNextClick(val>0,opts.nextSlide,els[opts.nextSlide]);}go(els,opts,1,val>=0);return false;}function buildPager(els,opts){var $p=$(opts.pager);$.each(els,function(i,o){$.fn.cycle.createPagerAnchor(i,o,$p,els,opts);});$.fn.cycle.updateActivePagerLink(opts.pager,opts.startingSlide);}$.fn.cycle.createPagerAnchor=function(i,el,$p,els,opts){var a=($.isFunction(opts.pagerAnchorBuilder))?opts.pagerAnchorBuilder(i,el):'<a href="#">'+(i+1)+"</a>";if(!a){return;}var $a=$(a);if($a.parents("body").length==0){$a.appendTo($p);}$a.bind(opts.pagerEvent,function(){opts.nextSlide=i;var p=opts.$cont[0],timeout=p.cycleTimeout;if(timeout){clearTimeout(timeout);p.cycleTimeout=0;}if($.isFunction(opts.pagerClick)){opts.pagerClick(opts.nextSlide,els[opts.nextSlide]);}go(els,opts,1,opts.currSlide<i);return false;});if(opts.pauseOnPagerHover){$a.hover(function(){opts.$cont[0].cyclePause++;},function(){opts.$cont[0].cyclePause--;});}};$.fn.cycle.hopsFromLast=function(opts,fwd){var hops,l=opts.lastSlide,c=opts.currSlide;if(fwd){hops=c>l?c-l:opts.slideCount-l;}else{hops=c<l?l-c:l+opts.slideCount-c;}return hops;};function clearTypeFix($slides){function hex(s){s=parseInt(s).toString(16);return s.length<2?"0"+s:s;}function getBg(e){for(;e&&e.nodeName.toLowerCase()!="html";e=e.parentNode){var v=$.css(e,"background-color");if(v.indexOf("rgb")>=0){var rgb=v.match(/\d+/g);return"#"+hex(rgb[0])+hex(rgb[1])+hex(rgb[2]);}if(v&&v!="transparent"){return v;}}return"#ffffff";}$slides.each(function(){$(this).css("background-color",getBg(this));});}$.fn.cycle.commonReset=function(curr,next,opts,w,h,rev){$(opts.elements).not(curr).hide();opts.cssBefore.opacity=1;opts.cssBefore.display="block";if(w!==false&&next.cycleW>0){opts.cssBefore.width=next.cycleW;}if(h!==false&&next.cycleH>0){opts.cssBefore.height=next.cycleH;}opts.cssAfter=opts.cssAfter||{};opts.cssAfter.display="none";$(curr).css("zIndex",opts.slideCount+(rev===true?1:0));$(next).css("zIndex",opts.slideCount+(rev===true?0:1));};$.fn.cycle.custom=function(curr,next,opts,cb,speedOverride){var $l=$(curr),$n=$(next);var speedIn=opts.speedIn,speedOut=opts.speedOut,easeIn=opts.easeIn,easeOut=opts.easeOut;$n.css(opts.cssBefore);if(speedOverride){if(typeof speedOverride=="number"){speedIn=speedOut=speedOverride;}else{speedIn=speedOut=1;}easeIn=easeOut=null;}var fn=function(){$n.animate(opts.animIn,speedIn,easeIn,cb);};$l.animate(opts.animOut,speedOut,easeOut,function(){if(opts.cssAfter){$l.css(opts.cssAfter);}if(!opts.sync){fn();}});if(opts.sync){fn();}};$.fn.cycle.transitions={fade:function($cont,$slides,opts){$slides.not(":eq("+opts.currSlide+")").css("opacity",0);opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts);opts.cssBefore.opacity=0;});opts.animIn={opacity:1};opts.animOut={opacity:0};opts.cssBefore={top:0,left:0};}};$.fn.cycle.ver=function(){return ver;};$.fn.cycle.defaults={fx:"fade",timeout:4000,timeoutFn:null,continuous:0,speed:1000,speedIn:null,speedOut:null,next:null,prev:null,prevNextClick:null,pager:null,pagerClick:null,pagerEvent:"click",pagerAnchorBuilder:null,before:null,after:null,end:null,easing:null,easeIn:null,easeOut:null,shuffle:null,animIn:null,animOut:null,cssBefore:null,cssAfter:null,fxFn:null,height:"auto",startingSlide:0,sync:1,random:0,fit:0,containerResize:1,pause:0,pauseOnPagerHover:0,autostop:0,autostopCount:0,delay:0,slideExpr:null,cleartype:!$.support.opacity,nowrap:0,fastOnEvent:0,randomizeEffects:1,rev:0,manualTrump:true,requeueOnImageNotLoaded:true,requeueTimeout:250};})(jQuery);

$(function() {
	var cycle_options = {
		'fx': 'fade',
		'speed': 1000,
		'timeout': 5000,
		'easing': 'easeInOutQuad'
	};
	
	$('div.mobile.iphone div.screenshots a').cycle(cycle_options);
	$('div.mobile.blackberry div.screenshots').cycle(cycle_options);
	$('div.mobile.android div.screenshots a').cycle(cycle_options);
});
