var tID = [];
var adultConfirmSize = "";
var adultConfirmPhotoId = 0;
var adultConfirmElement = null;
var adultIsAdult = false;

var a2a_config = a2a_config || {};
a2a_config.track_links = 'ga';

tweetmeme_source = 'viewbug';

var FBuserAttrs = ['username', 'first_name', 'last_name', 'current_location', 'about_me', 'email_hashes', 'timezone', 'proxied_email', 'email', 'status'];

function ViewBugFBConnectLogout() {
	window.location.href = "/?signout";
}

function ViewBugFacebookConnect(autologinOnly) {
	if (connectedWithFacebook) {
		return;
	}

	if (autologinOnly == true) {
		autologinOnly = 1;
	} else {
		autologinOnly = 0;
	}

	var fbuid = FB.Facebook.apiClient.get_session().uid;

	jQuery.post(
		'/actions/fbconnect.php',
		{
			fbuid: fbuid,
			autologinOnly: autologinOnly
		},
		function(data) {
			if (data == 'already') {
				return;
			}
			if (data == 'new') {
				var fbPermissions = function(permissions) {
					jQuery(function() {
						'/actions/fbcheck.php',
						null,
						function(data) {
							window.location.reload();
						}
					});
				}

				FB.Connect.showPermissionDialog('publish_stream, offline_access, email', fbPermissions, false, null);
				return;
			}
			if (data.match(/^nomatch/)) {
				return;
			}
			window.location.reload();
		}
	);

/*
	FB.Facebook.apiClient.users_getInfo(fbuid, FBuserAttrs, function(res, ex) {
		res = res[0];
		var uid = res.uid;
		var proxyEmail = res.proxied_email;
		var firstName = res.first_name;
		var lastName = res.last_name;
		var timezone = res.timezone;
		var aboutMe = res.about_me;
		var username = res.username;


		jQuery.post(
			'/actions/fbconnect.php',
			{
				fbuid: uid,
				proxyEmail: proxyEmail,
				firstName: firstName,
				lastName: lastName,
				timezone: timezone,
				aboutMe: aboutMe,
				username: username
			},
			function(data) {
				if (data == 'already') {
					return;
				}
				if (data == 'new') {
					return;
				}
				window.location.reload();
			}
		);
//		FB.Facebook.apiClient.users_hasAppPermission('offline_access',
//			function(x) {
//				alert(x);
//			}
//		);

	});
*/

}

function ViewBugConnectedUserHandler() {
	ViewBugFacebookConnect(true);
}

function ViewBugUnconnectedUserHandler() {

}

function moderatePhoto(photoId, context) {
	jQuery.post(
		"/actions/ajaxServ.php",
		{
			content: "moderatePhoto",
			mediaId: photoId,
			context: context
		},
		function(data) {
			alert('Thank you for notifying us.');
		}
	);
}

function featureUser(userId) {
	jQuery.post(
		"/actions/ajaxServ.php",
		{
			content: "featureUser",
			featuredUserId: userId
		},
		function(data) {
			alert('user has been featured');
		}
	)
}

function pgNextWithoutThis(next, spec, pgnt, extra, divId, callback) {
	var jsTargetDiv = '';
	var targetDiv = 'myphotos';

	if (divId) {
		targetDiv = divId;
		jsTargetDiv = "&jsTargetDiv=" + divId;
	}

	var url = '/lib/user.php?page='+next+'&noThis=1' + jsTargetDiv + '&get=photos&spec='+spec+'&pgnt='+pgnt+extra;

	if (next > 0) {
		if (callback) {
			new Ajax.Updater({ success: targetDiv }, url, { onComplete: callback });
		} else {
			new Ajax.Updater({ success: targetDiv }, url);
		}
	}
}

function pgNext(next, spec, pgnt, extra, divId, callback) {
	var url = '/lib/user.php?page='+next+'&get=photos&spec='+spec+'&pgnt='+pgnt+'&this='+sid+extra;

	var targetDiv = 'myphotos';

	if (divId) {
		targetDiv = divId;
	}

	if (next > 0) {
		if (callback) {
			new Ajax.Updater({ success: targetDiv }, url, { onComplete: callback });
		} else {
			new Ajax.Updater({ success: targetDiv }, url);
		}
	}
}

function navSearchBoxSubmit(myfield,e) {
	var keycode;

	if (window.event) {
		keycode = window.event.keyCode;
	} else if (e) {
		keycode = e.which;
	} else {
		return true;
	}

	if (keycode == 13) {
		document.getElementById('navSearchBox').submit();
		return false;
	} else {
		return true;
	}
}


function loadSearchPage(type, page, query) {
	jQuery.get(
		"/actions/ajaxServ.php",
		{
			content: "getSearchResultPage",
			type: type,
			page: page,
			query: query
		},
		function(data) {
			var tabId;
			switch (type) {
				case 'photo':
					tabId = '#photoSearchTab';
					break;
				case 'otherMedia':
					tabId = '#otherMediaSearchTab';
					break;
				case 'community':
					tabId = '#communitySearchTab';
					break;
				case 'journal':
					tabId = '#journalSearchTab';
					break;
				case 'storePhoto':
					tabId = '#storeTab';
					break;
			}

			jQuery(tabId).html(data);
		}
	);
}

function unsubscribeFromCommunity(communityId) {
	jQuery.post(
		"/actions/ajaxServ.php",
		{
			content: "unsubscribeFromCommunity",
			communityId: communityId
		},
		function() {
			window.location.reload();
		}
	);
}

function showDialog(dialog) {
	jQuery(dialog).dialog('open');
}

function submitContestSuggestion() {
	var suggestion = jQuery("#challenge_suggest_text").val();

	if (suggestion != '') {
		jQuery.post(
			"/actions/ajaxServ.php",
			{
				content: "contestSuggestion",
				suggestion: suggestion
			},
			function() {
				alert('Thank you for the suggestion!');
			}
		);
	}

	return false;
}


function adultProtectSmall() {
	if (adultIsAdult == true) {
		jQuery("img.adultSmallImage").unbind();
		jQuery("img.adultSmallImage").click(
			function(event) {
				adultConfirmSize = "small";
				adultConfirmPhotoId = event.target.id.split(/_/)[1];
				adultConfirmElement = event.target;

				doConfirm();
				jQuery(adultConfirmElement).unbind('click');
			}
		);
	} else {
		jQuery("img.adultSmallImage").click(
			function(event) {
				adultConfirmSize = "small";
				adultConfirmPhotoId = event.target.id.split(/_/)[1];
				adultConfirmElement = event.target;

				jQuery("#adultConfirm").dialog('open');
			}
		);
	}
}

function doConfirm() {
	jQuery.getJSON(
		'/actions/ajaxServ.php',
		{
			content: 'adultConfirm',
			size: adultConfirmSize,
			photoId: adultConfirmPhotoId,
			permanent: Number(jQuery("#adultConfirm .noWarning")[0].checked)
		},
		function(data) {
			var tag = jQuery(adultConfirmElement)[0].tagName;
			
			if (tag == 'DIV') {
				jQuery("#photo_"+adultConfirmPhotoId).attr('src', data.path);
			} else if (tag == 'IMG') {
				jQuery(adultConfirmElement).attr('src', data.path);
			} else if (tag == 'CANVAS') {
				var canvas = adultConfirmElement;

				var image = jQuery("<img />");
				
				image.load(function(event) {
					var img = event.target;
					var canvasContext = canvas.getContext('2d');

					canvasContext.clearRect(0,0, canvas.width, canvas.height);

					//canvasContext.globalAlpha = 1;

//					canvas.setAttribute('width', 680);
//					canvas.setAttribute('height', this.height);
					canvasContext.drawImage(img, 0, 0);
				});
				image.attr('src', data.path);
				
			}
			
			jQuery("#adultConfirm").dialog('close');
		}
	);
}

function adultConfirm() {
	if (Number(jQuery("#adultConfirm .noWarning")[0].checked)) {
		adultIsAdult = true;
		jQuery("img.adultSmallImage").unbind();
		jQuery("img.adultMediumImage").unbind();
		jQuery("div.adultMediumImage").unbind();
		adultProtectSmall();
	}

	doConfirm();
}

function sendMessageToUser(userId, username) {

	if (!userId) {
		return;
	}

	messageId = 0;

	jQuery("#sendMessage .message_id").val(messageId);
	jQuery("#sendMessage .user_id").val(userId);

	jQuery("#sendMessage .type").val('none');

	jQuery("#sendMessage .singleUser").html('');

	jQuery("#sendMessage .userSelect").css('display', 'none');
	jQuery("#sendMessage .singleUser").css('display', '');

	jQuery("#sendMessage .singleUser").html(username);

	jQuery("#sendMessage input.userSelect").val('');
	jQuery("#sendMessage").dialog('open');
}


function composeMessage(messageId, userId, user) {

	if (!userId) {
		return;
	}
	
	if (!messageId) {
		messageId = 0;
	}
	
	jQuery("#sendMessage .message_id").val(messageId);
	jQuery("#sendMessage .user_id").val(userId);
	
	if (user) {
		jQuery("#sendMessage .type").val(user.type);
	} else {
		jQuery("#sendMessage .type").val('sent');
	}

	jQuery("#sendMessage .singleUser").html('');

	if (user) {
		jQuery("#sendMessage .userSelect").css('display', 'none');
		jQuery("#sendMessage .singleUser").css('display', '');
		
		jQuery("#sendMessage .singleUser").html(user.username);
	} else {
		jQuery("#sendMessage .userSelect").css('display', '');
		jQuery("#sendMessage .singleUser").css('display', 'none');
	}


	jQuery("#sendMessage input.userSelect").val('');
	jQuery("#sendMessage").dialog('open');
}


function blockUser(messageId, userId) {
	jQuery("#blockUser .message_id").val(messageId);
	jQuery("#blockUser .user_id").val(userId);
	jQuery("#blockUser").dialog('open');
}

function deleteMessage(messageId) {
	jQuery("#deleteMessage .message_id").val(messageId);
	jQuery("#deleteMessage").dialog('open');
}

function setContestWinner(contestId, photoId) {
	jQuery.get(
		'/actions/ajaxServ.php',
		{
			content: 'setContestWinner',
			contestId: contestId,
			photoId: photoId
		},
		function(data) {
			alert('Photo has been made winner of this contest');
		}
	);
}

function fameThisPhoto(photoId) {
	jQuery.get(
		'/actions/ajaxServ.php',
		{
			content: 'fameThisPhoto',
			photoId: photoId
		},
		function(data) {
			alert('Photo has been featured');
		}
	);
}

function featureThisPhoto(photoId) {
	jQuery.get(
		'/actions/ajaxServ.php',
		{
			content: 'featureThisPhoto',
			photoId: photoId
		},
		function(data) {
			alert('Photo has been featured');
		}
	);
}

// setting user's featured photo
function featureUserPhoto(photoId) {
	jQuery.get(
		'/actions/ajaxServ.php',
		{
			content: 'featureUserPhoto',
			photoId: photoId
		},
		function(data) {
			alert('Photo has been featured');
		}
	);
}


function imageProtect() {
	var images = jQuery("img.imageProtect");
	for (var i=0; i < images.length; i++) {
		var el = jQuery(images[i]);
		var width = el.css('width')
		var height = el.css('height');
		var dummy = el.clone();
		var src = el.attr('src');
		
		var img = el.replaceWith(dummy);
		
		var outerDiv = jQuery("<div style=\"border: 0; margin: 0; padding: 0;\" />");
		var innerDiv = jQuery("<div style=\"border: 0; margin: 0; padding: 0;\" />");
		
		outerDiv.css('background', 'transparent url(' + src + ') no-repeat top left');
		innerDiv.css('background', 'transparent url(/assets/local/spacer.gif) repeat top left');
		img.attr('src', '/assets/local/spacer.gif');
		img.removeClass('imageProctect');
	
		img.css('height', height);
		img.css('width', width);
		outerDiv.css('height', height);
		outerDiv.css('width', width);
		
		img.appendTo(innerDiv);
		innerDiv.appendTo(outerDiv);
	
		dummy.replaceWith(outerDiv);
	}
}

function getDimensions(width, height, maxwidth, maxheight)
{
	var newWidth = 0;
	var newHeight = 0;
	
	if ( width > maxwidth) {
		var ratio = maxwidth / width;
		newWidth = maxwidth;
		newHeight = height * ratio;
	} else if (height > maxheight) {
		var ratio = maxheight / height;
		newHeight = height;
		newWidth = width * ratio;
	} else {
		newWidth = width;
		newHeight = height;
	}
	
	return { width: newWidth, height: newHeight};
}

function imageProtect2() {
	var images = jQuery("img.imageProtect");
	for (var i=0; i < images.length; i++) {
		var el = jQuery(images[i]);
		var width = el.width();
		var height = el.height();
		
		var isAdultImage = (el.hasClass('adultMediumImage')) ? true : false;
		
		var parent = el.parent();

		var image = el.clone();
		image.css('width','');
		image.css('height','');
		image.attr('width','');
		image.attr('height','');

/*
		var width = image.width();
		var height = image.height();
*/

		var dim = getDimensions(width, height, 680, 680);

		var canvas = document.createElement('canvas');
		
		canvas.id = el.attr('id');
		
		canvas.style.display = 'none';
		
		parent.append(canvas);

		var canvasContext = canvas.getContext('2d');

		//canvasContext.globalAlpha = 0.2;

		canvas.setAttribute('width', 680);
		canvas.setAttribute('height', dim.height);
		canvasContext.drawImage(el[0], 0, 0, dim.width, dim.height);
		canvas.style.display = 'block';
		el.remove();

		if (isAdultImage) {
			jQuery(canvas).click(
				function(event) {
					adultConfirmSize = "medium";
					adultConfirmPhotoId = event.target.id.split(/_/)[1];
					adultConfirmElement = event.target;
	
					jQuery("#adultConfirm").dialog('open');
				}
			);
		}
	}
}


var canvasPhotoData = {};

function savePhotoRotation(photoId) {
	var angle = 0;

	if (typeof canvasPhotoData[photoId] != "undefined") {
		angle = canvasPhotoData[photoId].angle;
	}
	
	jQuery.post(
		"/actions/ajaxServ.php",
		{
			content: 'photoRotate',
			photoId: photoId,
			angle: angle
		}
	);
}

function doCanvaseRotateImage(oid, p_deg) {
	var image = document.getElementById(oid);
	var canvas = document.getElementById('canvas_'+oid);


	if(canvas && canvas.getContext) {
		var canvasContext = canvas.getContext('2d');
		
		if (typeof canvasPhotoData[oid] == "undefined") {
			canvasPhotoData[oid] = {
				width: image.width,
				height: image.height,
				angle: 0
			}
		}
		
		var dim = canvasPhotoData[oid];
		
		canvasPhotoData[oid].angle = p_deg;
		
		switch(p_deg) {
			case 90 :
				canvas.setAttribute('width', dim.height);
				canvas.setAttribute('height', dim.width);
				canvasContext.rotate(p_deg * Math.PI / 180);
				canvasContext.drawImage(image, 0, -dim.height);
				break;
			case 180 :
				canvas.setAttribute('width', dim.width);
				canvas.setAttribute('height', dim.height);
				canvasContext.rotate(p_deg * Math.PI / 180);
				canvasContext.drawImage(image, -image.width, -dim.height);
				break;
			case 270 :
			case -90 :
				canvas.setAttribute('width', dim.height);
				canvas.setAttribute('height', dim.width);
				canvasContext.rotate(p_deg * Math.PI / 180);
				canvasContext.drawImage(image, -dim.width, 0);
				break;
			case 0 :
			default :
				canvas.setAttribute('width', dim.width);
				canvas.setAttribute('height', dim.height);
				canvasContext.rotate(p_deg * Math.PI / 180);
				canvasContext.drawImage(image, 0, 0);
				break;
		};

		image.style.display = 'none';		
		canvas.style.display = '';
		
	} else {
		/*
		Ok!: MSIE 6 et 7
		*/
		switch(p_deg) {
			default :
			case 0 :
				image.style.filter = 'progid:DXImageTransform.Microsoft.BasicImage(rotation=0)';
				break;
			case 90 :
				image.style.filter = 'progid:DXImageTransform.Microsoft.BasicImage(rotation=1)';
				break;
			case 180 :
				image.style.filter = 'progid:DXImageTransform.Microsoft.BasicImage(rotation=2)';
				break;
			case 270 :
			case -90 :
				image.style.filter = 'progid:DXImageTransform.Microsoft.BasicImage(rotation=3)';
				break;
		};
		
	};
};
