var eyeem = {};

jQuery.fn.reverse = [].reverse;

jQuery.fn.makeAbsolute = function(rebase) {
	return this.each(function() {
		var el = $(this);
		var vis = el.is(":visible");
		if (!vis) {
			el.show();
		}
		var pos = el.position();
		el.css({
			position : "absolute",
			top : pos.top,
			left : pos.left
		});
		if (!vis) {
			el.hide();
		}
		if (rebase)
			el.remove().appendTo("body");
	});
}


var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-28213889-1']);
_gaq.push(['_trackPageview']);

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

function trackClick(link,title) {
	_gaq.push(['_trackEvent','web',link,title]);
};

base64_encode = function(input) {
	 var keyStr = "ABCDEFGHIJKLMNOP" + "QRSTUVWXYZabcdef" +"ghijklmnopqrstuv" +"wxyz0123456789+/" + "=";
	 var output = "";
     var chr1, chr2, chr3 = "";
     var enc1, enc2, enc3, enc4 = "";
     var i = 0;
     do {
        chr1 = input.charCodeAt(i++);
        chr2 = input.charCodeAt(i++);
        chr3 = input.charCodeAt(i++);
        enc1 = chr1 >> 2;
        enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
        enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
        enc4 = chr3 & 63;
        if (isNaN(chr2)) {
           enc3 = enc4 = 64;
        } else if (isNaN(chr3)) {
           enc4 = 64;
        }
        output = output +
           keyStr.charAt(enc1) +
           keyStr.charAt(enc2) +
           keyStr.charAt(enc3) +
           keyStr.charAt(enc4);
        chr1 = chr2 = chr3 = "";
        enc1 = enc2 = enc3 = enc4 = "";
     } while (i < input.length);
     return output;
}

function checkKey(e){	
	var charCode = (e.which) ? e.which : e.keyCode
	//alert(charCode);
     switch (charCode) {
        case 37:
        	window.location = $prev_photo;
            break;
        case 39:
        	window.location = $next_photo;
            break;
    }
}   
     
jQuery(document).ready(function() {
	eyeem.initIE();
//	eyeem.checkRedirect();
	eyeem.initObjects();
	eyeem.initClickHandlers();
	eyeem.initUploader();
	eyeem.initScrollBars();
	eyeem.initFlip();
	eyeem.initAjaxForms();
	eyeem.initAjaxButtons();
	eyeem.initAjaxInputs();
	eyeem.initMorePhotosButton();
	eyeem.initTooltips(jQuery(this));
	eyeem.initSearch();
/* 	eyeem.initMouseFader(); */
//	eyeem.checkAutoPop();
	eyeem.autoResize();
	eyeem.initFacebookshare();
	eyeem.initFacebookstreamshare();
	eyeem.initRadioGroups();
	eyeem.initSellingFunctions();
	eyeem.initTrackedButtons();
	eyeem.initPlaceHolders();
	if($showGeoMap){
		initialize();
		//google.setOnLoadCallback(initialize);
		document.onunload="GUnload()";									
	}
	if ((typeof $photoShow !== 'undefined') && ($photoShow=="yes")){
		if ($.browser.mozilla) {
		    $(document).keypress (checkKey);
		} else {
		    $(document).keydown (checkKey);
		}   	
	}	
	jQuery('#showfollowers').click(function() {
		$('#followinglist').hide();
		$('#followerslist').toggle();
	});	
	jQuery('#showfollowing').click(function() {
		$('#followerslist').hide();	
		$('#followinglist').toggle();
	});		
	jQuery('.notifications').jScrollPane();

	$(function() {
		$(".subnavi").hide();
	});
	var $div = $('#left');
	var $ul = $('ul', $div);
	$('li', $ul).bind('mouseover.hover', function() {
		var $li = $(this);
		$('.subnavi', $li).show();
		$li.bind('mouseout.out', function() {
			var $li = $(this);
			$('.subnavi', $li).hide();
		});
	});
	jQuery('.selling').jScrollPane();
	jQuery('#hideSelling').click(function() {
		$('.selling').hide();
	});
	jQuery('#showSelling').click(function() {
		$('.selling').show();
	});
	// inits the landingpage sliding
	eyeem.initLandingpage();	
	// intits the watermarks of the forms
	eyeem.initWatermark();
	// 
	eyeem.initCenterImage();
	eyeem.initExpand();
	
	jQuery('#eyeem_photo_comment_comment').autoGrow();
	
	eyeem.notificate();
});
eyeem.initIE = function() {
	if (jQuery.browser.msie) {
		jQuery('body').addClass('msie');
	}
}
eyeem.initRadioGroups = function() {
	jQuery('a.radio').live('click', function() {
		var $link = jQuery(this);
		$link.closest('.radiogroup').find('a.radio').removeClass('active');
		$link.addClass('active');
		$meta = $link.metadata();
		if (typeof $meta.url !== 'undefined') {
			jQuery.ajax({
				url : $meta.url
			});
		}
		return false;
	});
	jQuery('a.checkbox').live(
			'click',
			function() {
				$link = jQuery(this);
				$link.toggleClass('active');
				$meta = $link.metadata();
				if (typeof $meta.url !== 'undefined') {
					jQuery.ajax({
						url : $meta.url
								+ ($link.hasClass('active') ? '1' : '0')
					});
				}
				return false;
			});
};
eyeem.autoResize = function() {
	jQuery(window).resize(function() {
		jQuery('.streamcontainer').height(jQuery(window).height());
	});
	jQuery(window).trigger('resize');
};

// führt bei nem /uc/xyz aufruf nen redirect auf #/uc/xyz aus
/*eyeem.checkRedirect = function() {
	var l = window.location.pathname;
	if (l.indexOf('/uc/') >= 0 || l.indexOf('/streams/show') >= 0) {
		window.location = ($dev ? '/frontend_dev.php' : '') + '/#' + l;
	}
	return false;
}*/
eyeem.checkAutoPop = function() {
	var l = window.location.hash;
	if (l.indexOf('#') >= 0) {
		l = l.substr(1);
	}
	if (l.indexOf('/uc/') >= 0 || l.indexOf('/streams/show') >= 0) {
		jQuery(
				'<a href="' + l
						+ '"></a>').trigger('click');
	}
};
eyeem.comingFromStream = false;
eyeem.comingFromStreamPage = false;
eyeem.initClickHandlers = function() {
	// thumbnail show in fancybox
	jQuery('a.thumbnail').live(
			'click',
			function(e) {
				var $link = jQuery(this);
				var $href = $link.attr('href');
				var $meta = $link.metadata();
				if ($meta.photo_id && $meta.stream_id) {
					$href = '/p/'
							+ $meta.photo_id + '/' + $meta.stream_id;
				}
				if ($meta.inStream === 1) {
					eyeem.comingFromStream = $meta.stream_id;
					eyeem.comingFromStreamPage = $meta.page;
				}
				jQuery(
						'<a href="' + $href + '" class=" '
								+ $link.attr('class') + '"></a>').removeClass(
						'thumbnail').trigger('click');
				return false;
			});
	jQuery('#direct_to_stream')
			.live(
					'change',
					function() {
						$select = jQuery(this);
						$option = jQuery('option:selected', $select);
						$meta = $option.metadata();
						if ($meta.url) {
							var $link = $meta.url;
							window.location = $link;
						}
					});
	jQuery('.showfancy')
			.live(
					'click.init',
					function(evt) {
						var $meta = jQuery(this).metadata();
						var $options = {
							transitionIn : 'fade',
							transitionOut : 'fade',
							speedIn : 800,
							speedOut : 200,
							overlayShow : true,
							hideOnOverlayClick : false,
							margin : 5,
							padding : 0,
							width : 960,
							titleShow : false,
							overlayOpacity : 0.9,
							overlayColor : '#000',
							onStart : function(selectedArray, selectedIndex,
									selectedOpts) {
								var $href = jQuery(selectedArray[selectedIndex])
										.attr('href');
								if ($href.indexOf('?') >= 0) {
									$href += '&';
								} else {
									$href += '?';
								}
								$href += 'maxheight='
										+ (jQuery(window).height() - 120);
								selectedOpts.href = $href;
								jQuery('.streamcontent').data('fullstop', true);
								return selectedOpts;
							},
							onClosed : function(currentArray, currentIndex,
									currentOpts) {
								if (eyeem.comingFromStream
										&& (currentOpts.href
												.indexOf('/streams/show/') < 0)) {
									jQuery('body')
											.oneTime(
													500,
													function() {
														jQuery(
																'<a class="" href="'
													
																		+ '/streams/show/'
																		+ eyeem.comingFromStream
																		+ '?page='
																		+ eyeem.comingFromStreamPage
																		+ '"></a>')
																.trigger(
																		'click');
														eyeem.comingFromStream = false;
														eyeem.comingFromStreamPage = false;
													});
								}
								jQuery('.streamcontent')
										.data('fullstop', false);
							},
							onComplete : function() {
								jQuery.fancybox.resize();
								eyeem.initWatermark();
								eyeem.initTooltips(jQuery('#fancybox-inner'));
								jQuery('.streamcontent').data('fullstop', true);
								jQuery('.scrollpane').jScrollPane();
								jQuery('.jScrollPaneDrag').addClass('fading');
								jQuery(
										'#fancybox-inner #orderform input, #fancybox-inner #orderform textarea')
										.each(
												function() {
													$inp = jQuery(this);
													var $label = jQuery('label[for='
															+ $inp.attr('id')
															+ ']');
													if ($label.length == 1) {
														if ($inp.attr('type') !== 'file') {
															var $text = $label
																	.html();
															$inp.attr('title',
																	$text);
															if ($inp.val() == '') {
																$inp.val($text);
															}
															$inp
																	.focus(function() {
																		var $i = jQuery(this);
																		if ($i
																				.val() == $i
																				.attr('title')) {
																			$i
																					.val('');
																		}
																	});
														}
														if ($inp.attr('type') !== 'checkbox') {
															$label.hide();
														}
													}
												});
							}
						};
						$options = jQuery.extend($options, $meta);
						jQuery(this).fancybox($options);
						jQuery(this).unbind('click.init');
						jQuery('.streamcontent').data('fullstop', true);
						jQuery(this).click();
						return false;
					});
	// expandable objects - expand / shrink in template
	jQuery('.more').live('click.expandable', function(evt) {
		$elm = jQuery(this);
		$expandObj = $elm.closest('.expandable');
		if ($expandObj.data('tpl')) {
			$expandObj.data('tpl').expand();
		}
		return false;
	});
	jQuery('.less').live('click.expandable', function(evt) {
		$elm = jQuery(this);
		$expandObj = $elm.closest('.expandable');
		if ($expandObj.data('tpl')) {
			$expandObj.data('tpl').shrink();
		}
		return false;
	});
	jQuery('.toggle').live('click.toggle', function(evt) {
		var $elm = jQuery(this);
		var $meta = $elm.metadata();
		jQuery($meta.element).toggle();
		return false;
	});
	jQuery('a.close').live('click.close', function() {
		jQuery.fancybox.close();
		return false;
	});
	jQuery('a.ajax').live('click.call', function(evt) {
		var $elm = jQuery(this);
		var $meta = $elm.metadata();
		jQuery.getJSON($meta.url, null, function(data) {
			$meta.callback(data, $elm);
		});
		return false;
	});
	jQuery('.copyinput').live('click.copy', function() {
		jQuery(this).select();
		return false;
	});
	jQuery('.copyinput').live('keydown', function(evt) {
		if ((evt.metaKey || evt.ctrlKey) && evt.which == 67) {
			return true;
		}
		return false;
	});
	jQuery('.copyinput').live('keyup', function(evt) {
		if ((evt.metaKey || evt.ctrlKey) && evt.which == 67) {
			return true;
		}
		return false;
	});
};

eyeem.voidFunction = function(data) {
};
eyeem.handleSubscribeResponse = function(data) {
	jQuery('a.subscribe').hide();
};
eyeem.initObjects = function() {
	jQuery('.object').each(
			function() {
				var $obj = jQuery(this);
				var meta = $obj.metadata();
				if ((typeof $obj.data('tpl') === 'undefined')
						&& (typeof meta.tpl !== 'undefined')) {
					// tpl
					$obj.data('tpl', new meta.tpl());
					$obj.data('tpl').setContainer($obj);
					$obj.data('tpl').setId(meta.id);
					// update
					if (typeof $obj.data('tpl').update === 'function') {
						$obj.bind('update', $obj.data('tpl').update);
						$obj.trigger('update');
					}
				}
			});
	jQuery('.streams_sorting li:gt(2)').fadeTo(200, 0.5);
	jQuery('.streams_sorting li')
			.each(
					function() {
						var $elm = jQuery(this);
						var $meta = $elm.metadata();
						if ($meta.id.indexOf('tag:') == 0
								|| $meta.id.indexOf('search:') == 0) {
							jQuery(
									'<a href="#" class="remove" style="bottom:-8px;display:none;left:10px;position:absolute;">remove</a>')
									.appendTo($elm)
							$elm.hover(function() {
								jQuery('.remove', $elm).show();
							}, function() {
								jQuery('.remove', $elm).hide();
							});
							jQuery('.remove', $elm).live('click', function() {
								$elm.remove();
								jQuery('.streams_sorting').trigger('save');
							});
						}
					});
	jQuery('.streams_sorting').live('save', eyeem.saveSortable);
	jQuery('.streams_sorting').sortable({
		update : eyeem.saveSortable
	});
};

eyeem.saveSortable = function(event, ui) {
	var $elm = jQuery(this);
	var $meta = $elm.metadata();
	var $list = {
		sorting : []
	};
	jQuery('> li', $elm).each(function() {
		jQuery(this).fadeTo(200, 1);
		var $limeta = jQuery(this).metadata();
		$list.sorting.push($limeta.id);
	});
	jQuery.post($meta.callback, $list);
	jQuery('li:gt(2)', $elm).fadeTo(200, 0.5);
};

eyeem.notificate = function() {
	//jQuery('#notificate').slideUp(300).delay(1200).fadeIn(800).delay(2000).fadeOut(1200);
};

eyeem.initScrollBars = function() {
	$('.caption_box2').tinyscrollbar();
	if($('.thumb2').height() > 149){
		$('.caption_box2 .scrollbar2').hide();
	}
};

eyeem.initUploader = function() {
	var uploader = new qq.FileUploaderBasic({
	    button: document.getElementById('btnUpload'),
	    action: '/file-uploader/server',
	    onSubmit: function(id, fileName){
	    	$('#btnUpload').fadeOut(100);
			$("#progressbar").delay(150).fadeIn(100);
			$('.upload_error').hide();
	    },
	    onProgress: function(id, fileName, loaded, total){
			var progress = (loaded/total) * 100;
			$("#progressbar").progressbar({ value: progress });
	    },
	    onComplete: function(id, fileName, responseJSON){
	    	$("#progressbar").delay(600).fadeOut(100);
	    	$('#photo_filename_uploadify').val(responseJSON['filename']);
	    	$('.photo_preview').append('<img style="display:none" id="thumb_preview" src="/thumb/150/'+responseJSON['filename']+'">');
	    	$('#thumb_preview').load(function(){
	    		pic_real_height = this.height;
	    		var thumbTopMargin = 165 - pic_real_height;
	    		thumbTopMargin = thumbTopMargin / 2;
	    		thumbTopMargin = thumbTopMargin + 25;
	    	$('#thumb_preview').css('margin-top',thumbTopMargin + 'px');
	    	$('#thumb_preview').delay(900).fadeIn(400);
	    	});
	    	$('.photo_upload_restart').delay(900).fadeIn(400);
	    },
	    onCancel: function(id, fileName){},
	});
		jQuery(
			'.uploader input, .uploader textarea, #sf_apply_settings_form input, #sf_apply_settings_form textarea, #orderform input, #orderform textarea, .sf_apply_apply input, .sf_apply_apply textarea, .sharing input, #signup input')
			.each(
					function() {
						$inp = jQuery(this);
						var $label = jQuery('label[for=' + $inp.attr('id')
								+ ']');
						if ($label.length == 1) {
							if ($inp.attr('type') !== 'file'
									&& $inp.attr('type') !== 'password') {
								var $text = $label.html();
								$inp.attr('title', $text);
								//$inp.addClass("watermark {'text':'Caption'}");

								$inp.focus(function() {
									var $i = jQuery(this);
									if ($i.val() == $i.attr('title')) {
										$i.val('');
									}
								});
							}
							if ($inp.attr('type') !== 'checkbox'
									&& $inp.attr('type') !== 'password') {
								$label.hide();
							}
						}
					});
	// Upload-Form Sharing
	jQuery('#photo_share_twitter, #photo_share_facebook, #photo_share_flickr')
			.each(
					function() {
						$elm = jQuery(this);
						$elm.hide();
						$elm.siblings().hide();
						var $clickr = jQuery(
								'<div class="share_handle ' + $elm.attr('id')
										+ '"></div>').insertAfter($elm);
						if ($elm.is(':checked')) {
							$clickr.addClass('active');
						}
					});
	if (jQuery('#photo_share_twitter, #photo_share_facebook, #photo_share_flickr').length === 0) {
		jQuery('<ul class="checkbox_list"></ul>').insertBefore(jQuery('#photo_filename_uploadify'));
	}
	if (jQuery('#photo_share_twitter').length === 0) {
		jQuery('.uploader .checkbox_list')
				.append(
						'<li><div class="photo_share_twitter" title="Go to settings to connect"></div></li>');
	}
	if (jQuery('#photo_share_facebook').length === 0) {
		jQuery('.uploader .checkbox_list')
				.append(
						'<li><div class="photo_share_facebook" title="Go to settings to connect"></div></li>');
	}
	if (jQuery('#photo_share_flickr').length === 0) {
		jQuery('.uploader .checkbox_list')
				.append(
						'<li><div class="photo_share_flickr" title="Go to settings to connect"></div></li>');
	}
	jQuery('.uploader .share_handle').bind('click.share', function() {
		var $elm = jQuery(this);
		var $inp = $elm.prev();
		if ($elm.hasClass('active')) {
			$elm.removeClass('active');
			$inp.attr('checked', false);
		} else {
			$elm.addClass('active');
			$inp.attr('checked', true);
		}
	});
	jQuery('input.uploadify').each(function() {
		$elm = jQuery(this);
		$params.fileDataName = $elm.attr('name');
		$elm.uploadify($params);
	});
	if($("#eyeem_app_icon_button").length != 0){
		var uploader2 = new qq.FileUploaderBasic({
	    	button: document.getElementById('eyeem_app_icon_button'),
	    	action: '/file-uploader/server',
            allowedExtensions: ['jpg', 'png', 'jpeg', 'gif', 'pdf'],
            debug: true,   
		    onSubmit: function(id, fileName){
		    	$('#eyeem_app_icon_button').hide();
				$("#eyeem_app_icon_spinner").show();
		    },   
		    onComplete: function(id, fileName, responseJSON){
				$("#eyeem_app_icon_spinner").hide();
		    	$('#eyeem_app_icon').val(responseJSON['filename']);
		    	$('#eyeem_app_icon_pic_preview').append('<img style="display:none" id="eyeem_app_icon_thumb_preview" src="/thumb/150/'+responseJSON['filename']+'">');

		    	$('#eyeem_app_icon_thumb_preview').load(function(){
		    		pic_real_height = this.height;
		    		var thumbTopMargin = 165 - pic_real_height;
		    		thumbTopMargin = thumbTopMargin / 2;
		    		thumbTopMargin = thumbTopMargin + 25;
		    	$('#eyeem_app_icon_thumb_preview').delay(900).fadeIn(400);
		    	$('#eyeem_app_icon_restart').delay(1100).fadeIn(400);
		    	});
 		    	

		    },
		});
	}
};
eyeem.handleCancelUpload = function(){
	$('#thumb_preview').fadeOut(100).remove();
	$('.photo_upload_restart').hide();
	$('#btnUpload').delay(150).fadeIn(100);
	$('#photo_filename_uploadify').val("");
	return false;
}
eyeem.handleCancelUpload2 = function(){
	$('#eyeem_app_icon_thumb_preview').fadeOut(100).remove();
	$('#eyeem_app_icon_restart').hide();
	$('#eyeem_app_icon_button').delay(150).fadeIn(100);
	$('#eyeem_app_icon').val("");
	return false;
}

eyeem.handleUpload = function(data, $elm) {
	if($('#photo_filename_uploadify').val() != ""){
		return true;
	} else {
		$('.upload_error').fadeIn(400);
		return false;
	}
};
eyeem.handleCopyEmbed = function() {
	//$.copy("bonbon");
};
eyeem.handleFavorite = function(data, $elm) {
/*
	if (data.result === 'success') {
		$('.favorite_link').hide();
		$('.unfavorite_link').show();
	}
*/
};
eyeem.handleUnfavorite = function(data, $elm) {
/*
	if (data.result === 'success') {
		$('.unfavorite_link').hide();
		$('.favorite_link').show();
	}
*/
};

eyeem.handleFollow = function(data, $elm) {
	if (data.result === 'success') {
		$('#follow_'+data.item).hide();
		$('#unfollow_'+data.item).show();
	}
};
eyeem.handleUnfollow = function(data, $elm) {
	if (data.result === 'success') {
		$('#unfollow_'+data.item).hide();
		$('#follow_'+data.item).show();
	}
};

eyeem.handleUnlink = function(data, $elm, $params) {
	if (data.result === 'success') {
		window.location = "/settings/page/share";
	} else {
		alert (data.result);
	}
};

eyeem.handleUnsubscribe = function($url) {
	var answer = confirm("Are you sure you want to unsubscribe this vibe (this action is irreversible)?")
	if (answer){
		jQuery.ajax({
			url : $url,
			success : function(data){
				window.location = '';
			}
		});
	}
	else{
	}
};

displayStreamPreview = function($stream, container){
	var $url = '/s/preview/'+$stream;
	var result = new Array();
	jQuery.ajax({
			url : $url,
			dataType : "html",
			success : function(data, textStatus, jqXHR){
				result.push(data);
			},
			error: function(jqXHR, textStatus, errorThrown){
			},
			complete: function(jqXHR, textStatus){
				$(result.toString()).hide().appendTo("#"+container).fadeIn();
			
			}
	});
	return true;
};
handleFollowersList = function($url, limit, offset, $numFollowers) {
	$('.followers_list .more_followers a').hide();
	$('.followers_list .empty_followers').hide();
	var followers = new Array();
	jQuery.ajax({
			url : $url+"?limit="+limit+"&offset="+offset,
			dataType : "json",
			success : function(data, textStatus, jqXHR){
				var results = data.followers.items;
				for(var i in results){
					var result = new Array(results[i].id, results[i].fullname);
					followers.push(result);
				}
			},
			error: function(jqXHR, textStatus, errorThrown){
			},
			complete: function(jqXHR, textStatus){
				if(followers.length){
					for(var i in followers){
						var container = "stream_preview_user_"+followers[i][0];
						$(".followers_fancy").append('<div id="'+container+'"></div>');
						displayStreamPreview('user:'+followers[i][0], container);
					}
					if(eval('limit + offset') < $numFollowers){
						$('.followers_list .more_followers a').unbind('click').click(function(){
							handleFollowersList($url, limit , limit + offset, $numFollowers);
						}).fadeIn(1000);
					}
				} else {
					$('.more_followers').hide();
					$(".followers_list").append('<p class="empty_followers">No followers yet!</p>');
				}
			}
	});
};
eyeem.handleFollowersButton = function($url, $numFollowers){
	if($(".followers_display").hasClass('hovered')){
		return false;
	}
	$(".photos_display").removeClass('hovered');
	$(".followers_display").addClass('hovered');
	$(".photosList").hide();
	$(".stream_bottom").hide();
	$(".followers_list").show();
	$(".followers_fancy").empty();
	$(".followers_fancy").fadeIn();
	handleFollowersList($url, 20, 0, $numFollowers);
}

handleSubscribersList = function($url, limit, offset, $numSubscribers) {
	$('.followers_list .more_followers a').fadeOut();
	$('.followers_list .empty_subscribers').hide();
	var likers = new Array();
	jQuery.ajax({
			url : $url+"?limit="+limit+"&offset="+offset,
			dataType : "json",
			success : function(data, textStatus, jqXHR){
				var results = data.likers.items;
				if(data.likers.total == 1) {
					var result = new Array(results.id, results.fullname);
					likers.push(result);
				} else {
					for(var i in results){
						var result = new Array(results[i].id, results[i].fullname);
						likers.push(result);
					}
				}
			},
			error: function(jqXHR, textStatus, errorThrown){
			},
			complete: function(jqXHR, textStatus){
				if(likers.length){
					for(var i in likers){
						var container = "stream_preview_user_"+likers[i][0];
						$(".followers_fancy").append('<div id="'+container+'"></div>');
						displayStreamPreview('user:'+likers[i][0], container);
					}
					if(eval('limit + offset') < $numSubscribers){
						$('.followers_list .more_followers a').unbind('click').click(function(){
							handleSubscribersList($url, limit , limit + offset, $numSubscribers);
						}).fadeIn(1000);
					}
				} else {
					$('.more_followers').hide();
					$(".followers_list").append('<p class="empty_subscribers">No subscribers yet!</p>');
				}
			}
	});
};
eyeem.handleSubscribersButton = function($url, $numSubscribers){
	if($(".subscribers_display").hasClass('hovered')){
		return false;
	}
	$(".photos_display").removeClass('hovered');
	$(".subscribers_display").addClass('hovered');
	$(".photosList").hide();
	$(".stream_bottom").hide();
	$(".followers_list").show();
	$(".followers_fancy").empty();
	$(".followers_fancy").fadeIn();
	handleSubscribersList($url, 20, 0, $numSubscribers);
}

eyeem.handlePhotosList = function() {
	if($(".photos_display").hasClass('hovered')){
		return false;
	}
	$('.followers_list .more_followers a').hide();
	$(".photos_display").addClass('hovered');
	$(".subscribers_display").removeClass('hovered');
	$(".followers_display").removeClass('hovered');
	$(".followers_list").hide();
	$(".photosList").fadeIn();
	$(".stream_bottom").fadeIn();
	$(".followers_fancy").empty();
};

eyeem.handleFavoriterMore = function() {
	$("#favoriter_more").hide();
	$(".favorited .expandable").show();
};

eyeem.handleComment = function(){
	if($("#eyeem_photo_comment_comment").val()!=""){
		//$("#comment-button").attr("src","/images/comment_wait.gif");
		var numcomments = parseInt($('.numcomments').html()) + 1;
		$('.numcomments').html(numcomments);
	} else {
		alert("Please enter a comment in the text-box!");
		return false;
	}
};

eyeem.initFlip = function() {
	jQuery('.flip')
			.live(
					'click.flip',
					function() {
						var $elm = jQuery(this);
						var meta = $elm.metadata();
						jQuery('#' + meta.front)
								.flip(
										{
											direction : 'lr',
											content : jQuery('#' + meta.back),
											onEnd : function() {
												if ($elm.siblings('.unflip').length == 0) {
													$elm
															.after('<a href="#" class="comments unflip">'
																	+ $elm
																			.html()
																	+ '</a>');
													$elm
															.siblings('.unflip')
															.bind(
																	'click.flip',
																	function() {
																		jQuery(
																				'#'
																						+ meta.front)
																				.revertFlip();
																		return false;
																	});
												}
												jQuery('#' + meta.front).css(
														'background', '#000');
												$elm.hide();
											}
										});
						return false;
					});
};
eyeem.initAjaxForms = function() {
	jQuery('form.ajax').live(
			'submit.ajax',
			function() {
				var $form = jQuery(this);
				jQuery('input, textarea', $form).each(function() {
					var $i = jQuery(this);
					if ($i.val() == $i.attr('title')) {
						$i.val('');
					}
				});
				var meta = $form.metadata();
				var wrapper = $form.closest(meta.wrap);
				var $params = $form.formSerialize();
				$href = $form.attr('action');
				$href += '?maxheight=' + (jQuery(window).height() - 120);
				jQuery.ajax({
					url : $href,
					data : $params,
					dataType : 'html',
					type : 'POST',
					complete : function(res, status) {
						if (status == "success" || status == "notmodified") {
							wrapper.html(jQuery("<div/>").append(
									res.responseText.replace(
											/<script(.|\s)*?\/script>/g, ""))
									.find(meta.wrap));
							eyeem.initTooltips(wrapper);
							jQuery.fancybox.resize();
							eyeem.initScrollBars();
						}
					}
				});
				return false;
			});
};
eyeem.initAjaxInputs = function() {
	jQuery('input.ajax').live(
			'change',
			function() {
				var $link = jQuery(this);
				var meta = $link.metadata();
				$href = meta.url;
				jQuery.ajax({
					url : $href,
					dataType : 'html',
					error : function(jqXHR, textStatus, errorThrown){
						alert('Something went wrong. Please send a mail to hello@eyeem.com'+jqXHR+' : '+textStatus+' : '+errorThrown+' : ');
					},					
					complete : function(res,status){
					}
				});
			}
		);
};
eyeem.initAjaxButtons = function() {
	jQuery('a.ajax').live(
		'click',function(){
			var $link = jQuery(this);
			var meta = $link.metadata();
			var wrapper = $(meta.wrap);
			$href = meta.action;
			jQuery.ajax({
				url : $href,
				dataType : 'html',
				complete : function(res,status){
					if(status == "success"){
						switch(meta.type){
							case "favorite":
								if(meta.favoriters != 0){
									$('.favorite_link').hide();
									$('.unfavorite_link').show();
									wrapper.prepend("<a class='favorite_current_user'>You</a><span class='favorite_current_user'>, </span>");
								} else {
									$('.not_favorited').html("<a class='favorite_current_user'><h2>You</h2></a>");
									$('.favorite_link').hide();
									$('.unfavorite_link').show();
								}
							break;
							case "unfavorite":
								if(meta.favoriters != 0){
									$('.unfavorite_link').hide();
									$('.favorite_link').show();
									$('.favorite_current_user').each(function(index){
										$(this).hide();
									});
								} else {
									$('.favorite_current_user').html('<span class="not_favorited">not favorited yet<span/>');
									$('.unfavorite_link').hide();
									$('.favorite_link').show();					
								}
							break;

						}
					}
				}
			});
		}
	)
}
eyeem.initMorePhotosButton = function() {
	jQuery('.stream_preview .more_photos a').live(
		'click',function(){
			var num_total_photos = $('.hidden_num_total_photos').html();
			var stream_id = $('.hidden_stream_id').html();
			var num_limit = $('.hidden_num_limit').html();
			var num_displayed_photo = $('.thumblist li').size();
			var limit = num_total_photos - num_displayed_photo;
			if(limit > num_limit){
				limit = num_limit;
			}
			var url_call = '/api/v2/albums/'+stream_id+'/photos?limit='+limit+'&offset='+num_displayed_photo+'&detailed=1';
			//url_call = '/api.php/albums/'+stream_id+'/photos?limit='+limit+'&offset='+num_displayed_photo+'&detailed=1';
			var photos = new Array();
			jQuery.ajax({
					url : url_call + '&client_id=qWRkvLNYv5RFksuG5BcAWBIenb7SCtqY',
					dataType : "json",
					success : function(data, textStatus, jqXHR){
						var results = data.photos.items;
						if(limit == 1){
							var result = new Array(results.id, results.photoUrl, results.user.fullname);
							photos.push(result);
						} else {
							for(var i in results){
								var result = new Array(results[i].id, results[i].photoUrl, results[i].user.fullname);
								photos.push(result);
							}
						}
					},
					error: function(jqXHR, textStatus, errorThrown){	
					},
					complete: function(jqXHR, textStatus){
						if(photos.length){
							for(var i in photos){
								num_displayed_photo = num_displayed_photo +1;
								//alert(photos[i][2]);
								var thumbUrl = photos[i][1];
								var username = photos[i][2];
								var username64 = base64_encode(username);
								var filename_array = thumbUrl.split('/');
								filename = filename_array[filename_array.length-1];
								
								thumbUrl = '/thumb/h/170/'+filename;
								
								var img = new Image();
								img.src = thumbUrl;
								var content = "<li id='"+filename+"' style='display:none'><a class='tooltip {tooltip: \""+username64+"\"}' href='/p/"+photos[i][0]+"/"+stream_id+"'> <img src='"+img.src+"'></a></li>";
								img.onload = function(){
									var filename_array2 = this.src.split('/');
									filename2 = filename_array2[filename_array2.length-1];
									$("#"+filename2).fadeIn();
								};
							
								$(".thumblist").append(content);
							}
							if(true){
							}
						} else {
						}
						if(num_displayed_photo >= num_total_photos){
							$('.more_photos .more').fadeOut();
						}
						eyeem.initTooltips(".thumblist");
					}
			});
		}
	)
}
eyeem.initTooltips = function(wrapper) {
	jQuery('.tooltip', wrapper).wTooltip({
		content : true,
		className : "tooltip_bubble",
		id: "yoo",
		style : {
			zIndex : '1300',
			border : '0',
			background : '#3300FF',
			color : '#DED9FC',
			textAlign : 'left',
			padding : '4px 10px 0',
			height : '27px',
			fontWeight : 'bold',
		},
		callBefore : function(tooltip, node) {
			var $meta = jQuery(node).metadata();
			jQuery(tooltip).html(jQuery.base64Decode($meta.tooltip));
		}
	});
};
eyeem.initSearch = function() {
/*
	jQuery('input.search_text').focus(function() {
		jQuery(this).val('');
	});
*/
};
eyeem.streamSelector = function(){}
eyeem.mouseFaded = false;

eyeem.initMouseFader = function() {
	jQuery(document).bind('mousemove click keydown', function(event) {
		jQuery(this).stopTime("hide");
		if (eyeem.mouseFaded) {
			jQuery('.fading').fadeTo(200, 1);
			eyeem.mouseFaded = false;
		}
		jQuery(this).oneTime(5000, "hide", function() {
			jQuery(".fading").fadeTo(800, 0);
			eyeem.mouseFaded = true;
		});
	});
};
eyeem.facebook = false;
eyeem.initFacebookshare = function() {
	jQuery('.facebookshare').live(
			'click',
			function() {
				var $meta = jQuery(this).metadata();
				if (!eyeem.facebook) {
					eyeem.facebook = true;
					jQuery('<div id="fb-root"></div>').appendTo('body');
					window.fbAsyncInit = function() {
						FB.init({
							appId : '138146182878222',
							status : true,
							cookie : true,
							xfbml : true
						});
						eyeem.shareFacebook($meta);
					};
					(function() {
						var e = document.createElement('script');
						e.async = true;
						e.src = document.location.protocol
								+ '//connect.facebook.net/en_US/all.js';
						document.getElementById('fb-root').appendChild(e);
					}());
				} else {
					eyeem.shareFacebook($meta);
				}
				return false;
			});
};
eyeem.shareFacebook = function($meta) {
	var publish = {
		method : 'stream.publish',
		message : 'likes this mobile photo on EyeEm',
		attachment : {
			name : 'EyeEm - ' + $meta.title,
			caption : $meta.description,
			description : (''),
			media : [ {
				type : 'image',
				src : 'http://www.eyeem.com/thumb/90/' + $meta.filename,
				href : $meta.url
			} ],
			href : $meta.url
		},
		user_prompt_message : 'share this photo on facebook'
	};
	FB.ui(publish);
};
eyeem.initFacebookstreamshare = function() {
	jQuery('.streamdescription .facebook').live(
			'click',
			function() {
				var $meta = jQuery(this).metadata();
				if (!eyeem.facebook) {
					eyeem.facebook = true;
					jQuery('<div id="fb-root"></div>').appendTo('body');
					window.fbAsyncInit = function() {
						FB.init({
							appId : '138146182878222',
							status : true,
							cookie : true,
							xfbml : true
						});
						eyeem.shareStreamFacebook($meta);
					};
					(function() {
						var e = document.createElement('script');
						e.async = true;
						e.src = document.location.protocol
								+ '//connect.facebook.net/en_US/all.js';
						document.getElementById('fb-root').appendChild(e);
					}());
				} else {
					eyeem.shareStreamFacebook($meta);
				}
				return false;
			});
};
eyeem.shareStreamFacebook = function($meta) {
	var publish = {
		method : 'stream.publish',
		message : 'likes this vibe on EyeEm.',
		attachment : {
			name : 'EyeEm - ' + $meta.title,
			caption : $meta.description,
			description : (''),
			media : [ {
				type : 'image',
				src : 'http://www.eyeem.com/thumb/90/' + $meta.filename,
				href : $meta.url
			} ],
			href : $meta.url
		},
		user_prompt_message : 'share this vibe on facebook'
	};
	FB.ui(publish);
};
eyeem.initFacebookAutoshare = function() {

}
eyeem.initSellingFunctions = function() {
	jQuery('.selling .win').live('focus', function() {
		$field = jQuery(this);
		if ($field.val() == 'WIN') {
			$field.val(0);
		}
	});
	jQuery('.selling .win').live(
			'blur',
			function() {
				$field = jQuery(this);
				if ($field.val().match(/^[0-9]+$/)) {
					$meta = $field.metadata();
					$val = parseInt($field.val(), 10);

					$url = '/api/setPhotoPrize/photo_id/' + $meta.photo_id
							+ '/win/' + $val;
					jQuery.ajax({
						url : $url
					});
					$field.siblings('.total').text($meta.prize + $val);
					if ($val == 0) {
						$field.val('WIN');
					}
				} else {
					$field.val('WIN');
				}
			});
	jQuery('#orderform #makepayment').live('click', function() {
		jQuery('#orderform input').trigger('focus');
		jQuery('#orderform input, #orderform select').each(function() {
			jQuery(this).removeClass('error');
			if (!jQuery(this).val()) {
				jQuery(this).addClass('error');
				jQuery(this).val(jQuery(this).attr('title'));
			}
		});
		if (jQuery('#orderform .error').length === 0) {
			var $param = jQuery('#orderform').serialize();
		}
	});
};

eyeem.initLandingpage = function() {
	jQuery('#landingpage .slideshow').cycle({
		fx: 'scrollHorz',
		easing: 'easeOutExpo',
		speed:  1500,
		timeout: 9000,
		pager: '#pag',
		cleartypeNoBg: true
	});	 
	jQuery('#landingpage .mobile').cycle({
		fx: 'fade',
		easing: 'easeInOutExpo',  
		speed:  1000,
		timeout: 1000,
	});
	jQuery('#landingpage .landingpage_stream ').cycle({
		fx: 'scrollLeft',
		easing: 'easeInOutExpo',  
		speed:  1500,
		timeout: 3000,
	});	
	jQuery('#landingpage #party').everyTime(10, function(){
		jQuery("#landingpage #party").animate({left:"210px",easing:'easeInOutExpo'}, 3000).animate({left:"100px", easing:'easeInOutExpo'}, 3000);
	});
};

eyeem.initWatermark = function() {
	jQuery('.watermark').each(function(){
		var $field = jQuery(this);
		var $meta = $field.metadata();
		var $text = $meta.text;
		$field.watermark($text);
	});
};

// centers an image vertical
eyeem.initCenterImage = function() {
	var $div = jQuery('.viewport');
	var $img = jQuery('.viewport img');
	$img.load(function(){
		var $height = $img.height();
		var $heightDiv = $div.height();
		if ($heightDiv > $height && $height > 1) {
			var $diff = ($heightDiv-$height)/2;
			$img.css('margin-top',+$diff+'px');
		}		
	});
	
};
// replace default placeholders
    // Set caret at the beginning of the input
    setCaret = function (evt) {
        if (this.value === this.getAttribute("data-placeholder")) {
        	if(this.className == "active"){
        		this.className = 'active focus';
        	} else {
        		this.className = 'focus';
        	}
            this.setSelectionRange(0, 0);
            evt.preventDefault();
            evt.stopPropagation();
            return false;
        }
    },

    // Clear placeholder value at user input
    clearPlaceholder = function (evt) {
    	
        if (!(evt.shiftKey && evt.keyCode === 16) && evt.keyCode !== 9) {
            if (this.value === this.getAttribute("data-placeholder")) {
                this.value = "";
                this.className = "active";
                if (this.getAttribute("data-type") === "password") {
                    this.type = "password";
                }
            }
        }
    },


    restorePlaceHolder = function () {
    	if (this.className === "focus"){
    		this.className = "";
    	}
        if (this.value.length == 0) {
            this.value = this.getAttribute("data-placeholder");
           // setCaret.apply(this, arguments);
            this.className = "";
            if (this.type === "password") {
                this.type = "text";
            }
        }
    },

    clearPlaceholderAtSubmit = function (dataPlaceholders) {   
    	l = dataPlaceholders.length; 	
        for (var i=0, placeholder; i<l; i++) {
            placeholder = dataPlaceholders[i];
            if (placeholder.value === placeholder.getAttribute("data-placeholder")) {
                placeholder.value = "";
            }
        }
    };
eyeem.initPlaceHolders = function() {

	var dataPlaceholders = document.querySelectorAll(".sf_apply_apply input[placeholder]"),
    l = dataPlaceholders.length;

    for (var i=0, placeholder, placeholderVal; i<l; i++) {
        placeholder = dataPlaceholders[i];
        if (placeholder.value.length === 0) {
	        placeholderVal = placeholder.getAttribute("placeholder");
	        placeholder.setAttribute("data-placeholder", placeholderVal);
	        placeholder.value = placeholderVal;
	        placeholder.removeAttribute("placeholder");
	        if (placeholder.type === "password") {
	            placeholder.type = "text";
	        }
    	}
    
    	else {
        	placeholder.className = "active";
    	}
    	// Apply events for placeholder handling
	    placeholder.addEventListener("focus", setCaret, false);
	    placeholder.addEventListener("drop", setCaret, false);
	    placeholder.addEventListener("click", setCaret, false);
	    placeholder.addEventListener("keydown", clearPlaceholder, false);
	    placeholder.addEventListener("keyup", restorePlaceHolder, false);
	    placeholder.addEventListener("blur", restorePlaceHolder, false);
		// Clear all default placeholder values from the form at submit
	 	placeholder.form.addEventListener("submit", function(e){clearPlaceholderAtSubmit(dataPlaceholders);e.stopPropagation();}, false);	

	} 
    
};
eyeem.initTrackedButtons = function() {
	var trackedButtons = ['#android_topbar','#android_middle_startpage','#android_footer_startpage']; // class names or ids
	for(var i=0; i<trackedButtons.length; i++){
		$(trackedButtons[i]).click(function(){s
			var eventCategory = 'android:'+$(this).attr("id");
			var trackURL = window.location.pathname;
			trackClick(trackURL,eventCategory);
		});
	}
	var trackedButtons = ['#iphone_topbar','#iphone_middle_startpage','#iphone_footer_startpage']; // class names or ids
	for(var i=0; i<trackedButtons.length; i++){
		$(trackedButtons[i]).click(function(){
			var eventCategory = 'ios:'+$(this).attr("id");
			var trackURL = window.location.pathname;
			trackClick(trackURL,eventCategory);
		});
	}
};
eyeem.test = function(email) {
	return true;
	if(email == $("#sfApplySettings_email").val()){
		return true;
	} else {
		alert("value changed");
	}
	return false;
};

// expand 
eyeem.initExpand = function() {
	jQuery('.expand').bind('click.expand', function(){
			var $link = jQuery(this);
			var $expandable = $link.siblings('.expandable');
			if ($expandable.hasClass('hidden')) {				
				$expandable.removeClass('hidden');
			} else {
				$expandable.addClass('hidden');
			}
	});
}
	


