var ShareDialog = Class.create();
ShareDialog.prototype = {

	container    : null,
	dialog       : null,
	backCover    : null,
	dialogTitle  : null,
	dialogBorder : null,

	initialize : function() {

		// Configure the container.
		this.container = $( 'shareDialogContainer' );

		// Configure the dialog.
		this.dialog = $( 'shareDialog' );

		// Configure the back cover.
		this.backCover = $( 'shareDialogBackCover' );
		Event.observe( this.backCover, 'click', this.hide.bind( this ), false );

		// Configure the dialog title.
		this.dialogTitle = $( 'shareDialogTitle' );

		// Configure the dialog border.
		this.dialogBorder = $( 'shareDialogBorder' );

		// Set the close button action.
		var closeShareDialogLink = $( 'closeShareDialogLink' );
		Event.observe( closeShareDialogLink, 'click', this.hide.bind( this ), false );

		Event.observe( window, 'resize', this.updateSize.bind( this ), false );
		Event.observe( window, 'scroll', this.updateSize.bind( this ), false );

	}, // End initialize().

	show : function( my_shareUrl, my_shareTitle, my_dialogTitle ) {

		this.updateLinks( my_shareUrl, my_shareTitle );

		if ( !my_dialogTitle ) my_dialogTitle = 'Share';

		this.dialogTitle.update( my_dialogTitle );
		this.container.className = 'shareDialogContainerOn';
		this.updateSize();

	}, // End show().

	hide : function() {

		this.container.className = 'shareDialogContainerOff';

	}, // End hide().

	updateLinks : function( shareUrl, shareTitle ) {

		var escapeUrl = escape( shareUrl );
		var escapeTitle = escape( shareTitle );

		var shareDialogLink_email = $( 'shareDialogLink_email' );
		var shareDialogLink_facebook = $( 'shareDialogLink_facebook' );
		var shareDialogLink_twitter = $( 'shareDialogLink_twitter' );
		var shareDialogLink_ask = $( 'shareDialogLink_ask' );
		var shareDialogLink_bebo = $( 'shareDialogLink_bebo' );
		var shareDialogLink_delicious = $( 'shareDialogLink_delicious' );
		var shareDialogLink_digg = $( 'shareDialogLink_digg' );
		var shareDialogLink_google = $( 'shareDialogLink_google' );
		var shareDialogLink_linkedIn = $( 'shareDialogLink_linkedIn' );
		var shareDialogLink_liveJournal = $( 'shareDialogLink_liveJournal' );
		var shareDialogLink_netvibes = $( 'shareDialogLink_netvibes' );
		var shareDialogLink_stumbleUpon = $( 'shareDialogLink_stumbleUpon' );

		shareDialogLink_email.href = '../color/send-to-friend.do?url=' + escapeUrl;
		shareDialogLink_facebook.href = 'http://www.facebook.com/share.php?u=' + escapeUrl;
		shareDialogLink_twitter.href = 'http://twitter.com/home?status=' + escapeTitle + '%20-%20' + escapeUrl;
		shareDialogLink_ask.href = 'http://myjeeves.ask.com/mysearch/BookmarkIt?v=1.2&t=webpages&url=' + escapeUrl + '&title=' + escapeTitle;
		shareDialogLink_bebo.href = 'http://bebo.com/c/share?Url=' + escapeUrl + '&Title=' + escapeTitle;
		shareDialogLink_delicious.href = 'http://delicious.com/post?url=' + escapeUrl + '&title=' + escapeTitle;
		shareDialogLink_digg.href = 'http://digg.com/submit?url=' + escapeUrl + '&title=' + escapeTitle + '&bodytext=';
		shareDialogLink_google.href = 'http://www.google.com/bookmarks/mark?op=add&bkmk=' + escapeUrl + '&title=' + escapeTitle + '&annotation=';
		shareDialogLink_linkedIn.href = 'http://www.linkedin.com/shareArticle?mini=true&url=' + escapeUrl + '&title=' + escapeTitle + '&ro=false&summary=&source=';
		shareDialogLink_liveJournal.href = 'http://www.livejournal.com/update.bml?subject=' + escapeTitle + '&event=' + escapeUrl;
		shareDialogLink_netvibes.href = 'http://netvibes.com/share?url=' + escapeUrl + '&title=' + escapeTitle;
		shareDialogLink_stumbleUpon.href = 'http://www.stumbleupon.com/submit?url=' + escapeUrl + '&title=' + escapeTitle;

	}, // End updateLinks().

	updateSize : function() {

		var vp = new Viewport();
		var x = vp.scrollX;
		var y = vp.scrollY;
		var w = vp.windowX;
		var h = vp.windowY;

		var dialogLeft = ( ( w - this.dialog.getWidth() ) / 2 ) + x;
		var dialogTop = ( ( h - this.dialog.getHeight() ) / 2 ) + y;

		var dialogBorderLeft = dialogLeft - 10;
		var dialogBorderTop = dialogTop - 10;

		this.dialog.style.left = dialogLeft + 'px';
		this.dialog.style.top = dialogTop + 'px';

		this.dialogBorder.style.left = dialogBorderLeft + 'px';
		this.dialogBorder.style.top = dialogBorderTop + 'px';

	} // End updateSize().

} // End class ShareDialog.

var shareDialog = new ShareDialog();
