/**
 * GAY.NL
 *
 * @access  public
 */

var GAYPROFILE = new Class({
	
	mbStatsOpen : false,
	msProfileName : '',
	miProfileID : '',
	
	initialize : function() {
		
	},
	
	DOMReady : function() {
		this.msProfileName = $('profile-username').get('text').trim().toLowerCase();
		this.miProfileID = $('profile-userid').get('text').trim();
		var o_this = this, s_profile_name = this.msProfileName, i_profile_id = this.miProfileID, o_more_info = $('profileMoreInfo');
		
		// get static url
		if ($('staticURL') && $('serverURL')){
			this.s_static_url = $('staticURL').get('text').trim();
			this.s_server_url = $('serverURL').get('text').trim();
		} else {
			this.s_static_url = '';
			this.s_server_url = '';
		}
		
		/*
		 *	Tweens
		 */	
		if ($('videoBoxBody')){
			$('videoBoxBody').set('tween', {duration: 'normal', transition: Fx.Transitions.Expo.easeOut});
		}
		if ($('profileBoxBody')){
			$('profileBoxBody').set('tween', {duration: 'normal', transition: Fx.Transitions.Expo.easeOut});
		}
		
		/*
		 *	Extra stats
		 */	
		if ($('profileStats')){
			$('profileStats').slide('hide');
			$('profileStats').set('slide', {
				duration: 'normal', 
				transition: Fx.Transitions.Expo.easeOut
			});
		}
		
		if (o_more_info){
			o_more_info.addEvent('click', function(oEvent) {
				if ($('addBuddyLayer')){
					$('addBuddyLayer').addClass('hidden');
				}
				o_this.mbStatsOpen = !o_this.mbStatsOpen;
				var s_add = (!o_this.mbStatsOpen) ? 'profileMoreInfoOff' : 'profileMoreInfoOn', s_remove = (!o_this.mbStatsOpen) ? 'profileMoreInfoOn' : 'profileMoreInfoOff';
				o_more_info.removeClass(s_remove);
				o_more_info.addClass(s_add);
				$('profileStats').slide('toggle');
			});
			$('profileStats').slide('hide');
		}
		
		// lose unnecessary detail dl's
		$A(['general', 'body', 'sex']).each(function(s_type){
			if ($('details-' + s_type) && $('details-' + s_type).getElements('dd').length < 2){
				$('details-' + s_type).destroy();
			}
		});
		
		// birthdayalert
		if ($('profileBirthdayAlert')){
			$('profileBirthdayAlert').addEvent('click', function(){
				var o_req = new Request({
					'url': '/ajax/add_birthdayalert/',
					'data': $H({
						'userid': o_this.miProfileID
					}).toQueryString(),
					'onComplete': function(){
						location = '/my/friends/alerts/';
					}
				});
				o_req.send();
			});
		}
		
		// icons
		var pI = new profileIcons($$('div.profileIcons ul')[0]);
		// sendMessage
		pI.register('sendMessage', function(){
			if (typeof o_messenger != 'object'){
				location = '/accessdenied/';
				return;
			}
			
			o_messenger.sendMessage(s_profile_name);
		});
		// addBuddy
		pI.register('addBuddy', function(){
			if (typeof o_messenger != 'object'){
				location = '/accessdenied/';
				return;
			}
			
			if (!$('addBuddyLayer')){
				return;
			}
			
			$('addBuddyLayer').setStyles({
				'left': (this.getPosition().x + this.getScrollSize().x),
				'top': (this.getPosition().y - 7)
			});
			
			$('addBuddyLayerSubmit').addEvent('click', (function(){
				$('addBuddyLayerSubmit').addClass('hidden');
				$('addBuddyLayerLoading').removeClass('hidden');
				
				var o_data = $H({});
				$$('div#addBuddyLayer input').each(function(oEl){
					if (oEl.checked !== true){
						return;
					}
					o_data[oEl.name] = true;
				});
				o_data.buddyid = i_profile_id;
				
				var o_req = new Request({
					'url': '/ajax/add_request',
					'method': 'post',
					'data': o_data.toQueryString(),
					'onComplete': (function(){
						$('addBuddyLayerLoading').addClass('hidden');
						$('addBuddyLayerContent').addClass('hidden');
						$('addBuddyLayerDone').removeClass('hidden');
						(function(){
							$('addBuddyLayer').addClass('hidden');
							this.addClass('blurred');
						}).bind(this).delay(1000);
					}).bind(this)
				});
				o_req.send();
				
			}).bind(this)).setStyle('cursor', 'pointer');
			
			$('addBuddyLayerCancel').addEvent('click', function(){
				$('addBuddyLayer').addClass('hidden');
			});
			
			$('addBuddyLayer').removeClass('hidden');
		});
		// addFavorite
		pI.register('addFavorite', function(){
			if (typeof o_messenger != 'object'){
				location = '/accessdenied/';
				return;
			}
			
			this.addClass('loading');
			
			var o_req = new Request({
				'url': '/ajax/add_favorite/',
				'method': 'post',
				'data': $H({
					'userid': i_profile_id
				}).toQueryString(),
				'onComplete': (function(sResponse){
					if (sResponse === 'x'){
						location = '/my/friends/favorites/full/';
						return;
					}
					
					this.removeClass('loading').addClass('blurred');
				}).bind(this)
			});
			o_req.send();
		});
		// removeTraces
		pI.register('removeTraces', function(){
			if (typeof o_messenger != 'object'){
				location = '/accessdenied/';
				return;
			}
			
			if (this.hasClass('goldmember')){
				location = '/goldmember/';
				return;
			}
			
			this.addClass('loading');
			
			var o_req = new Request({
				'url': '/ajax/remove_traces/',
				'data': $H({
					'userid': i_profile_id
				}).toQueryString(),
				'onComplete': (function(){
					this.removeClass('loading').addClass('blurred');
				}).bind(this)
			});
			o_req.send();
		});
		// addAlert
		pI.register('addAlert', function(){
			if (typeof o_messenger != 'object'){
				location = '/accessdenied/';
				return;
			}
			
			var o_req = new Request({
				'url': '/ajax/add_onlinealert/',
				'data': $H({
					'userid': i_profile_id
				}).toQueryString(),
				'onComplete': function(){
					location = '/my/friends/alerts/';
				}
			});
			o_req.send();
		});
		
		// reportProfile
		pI.register('reportProfile', function(){
			var i_height = 290;
			if (Browser && navigator.userAgent.match(/chrome/i)){
				i_height += (Browser.Platform.mac === true ? 60 : 8);
			}
			
			window.open('/report_profile.html?userid=' + i_profile_id, 'report_profile_' + i_profile_id, 'width=548,height=' + i_height + ',location=false,status=false,menubar=false,directories=false,toolbar=false,resizable=false,scrollbars=false');
		});
		
		/*
		*	SlideShows
		*/
		
		if ($('photoSWFContainer')){
			var o_photolist = new SlideShow('photoSWFContainer', {
				'url': '/json/profile/' + this.miProfileID + '/photo.json',
				'hideTypeAndCaption': true
			});
		}
		
		if ($('videoSWFContainer')){
			(new SlideShow('videoSWFContainer', {
				'url': '/json/profile/' + this.miProfileID + '/video.json',
				'hideTypeAndCaption': true
			}));
		}
		
		if ($('friendsSWFContainer')){
			(new SlideShow('friendsSWFContainer', {
				'url': '/json/profile/' + this.miProfileID + '/friends.json'
			}));
		}
		
		// make profile photo clickable
		$('profilePhotoBox').addEvent('click', (function(oEvent){
			var a_images = [];
			if ($type(o_photolist)){
				a_images = o_photolist.getContent();
			}
			
			try {
				var a_photo = $(oEvent.target).getStyle('background-image').match(/http:\/\/(.+)\.jpg/);
				if (a_photo !== null && a_photo.length > 1){
					var s_photo = a_photo[0].replace(/fullsize\.jpg$/, 'original.jpg');
					a_images = $A([[s_photo, this.msProfileName]]).combine(a_images);
				}
			} catch (oEx){}
			
			Slimbox.open(a_images, 0, {resizeDuration: 100});
		}).bind(this));
		
		/* 
		 *	Shoutbox
		 */
		
		this.setDeleteShout();
		this.setApproveShout();
		
		var o_add = $('b-add-shout'), o_compose = $('t-shout'), o_shoutlist = $('shoutList');
		if (o_add && o_compose && o_shoutlist){
			o_add.addEvent('click', (function(){
				var s_text = o_compose.get('value').trim();
				o_compose.set('value', '');
				(new Request({
					url: '/ajax/shout/',
					data: $H({
						'message': s_text,
						'userid': o_this.miProfileID
					}).toQueryString(),
					onComplete: (function(s_html){
						var o_shout = new Element('div').set('html', s_html);
						o_shout.inject(o_shoutlist, 'top');
						var oFx = new Fx.Scroll(window);
						oFx.toElement('shoutbox');
						this.setDeleteShout();
					}).bind(this)
				})).send();
			}).bind(this));
		}
		
		// fix shout image links
		var o_shout_images = $$('.shoutimage');
		o_shout_images.each(function(o_image){
			o_image.addEvent('click', function(){
				top.location = '/' + this.get('text');
			}, o_image);
			o_image.setStyle('cursor', 'pointer');
		});
		
		// comment
		if ($('profileComment')){
			$('commentMessage').addEvent('blur', function(oEvent){
				var s_text = oEvent.target.get('value').trim();
				var i_userid = $('profile-userid').get('text').trim();
				var o_req = new Request({
					'url': '/ajax/save_comment/',
					'method': 'post',
					'data': $H({
						'userid': i_userid,
						'comment': s_text
					}).toQueryString(),
					'onComplete': function(s_response){
						$('commentMeta').set('text', $('commentSaved-text').get('text'));
						$('commentMeta').addClass('commentSaved');
					}
				});
				o_req.send();
			});
		}
		
		// init weblog
		if (typeof Weblog != 'undefined'){
			(new Weblog(this.miProfileID));
		}
	},
	
	setDeleteShout: function(){
		$$('a.deleteShout').each(function(oA){
			oA.removeEvents();
			oA.addEvent('click', this.DeleteShout);
		}, this);
	},
	
	DeleteShout: function(oEvent) {
		oEvent.stop();
		
		var s_id;
		try {
			s_id = this.get('id').replace(/shout\-delete\-(\d+)/, '$1');
		} catch(oEx){return;}
		
		// check parents
		var o_parent = this.getParents('div[id^=shout-]');
		if (o_parent.length === 0){
			return;
		}
		
		// check for confirm text
		var s_confirm_text = $('shout-delete-text').get('text');
		if (!confirm(s_confirm_text)){
			return false;
		}
		
		var o_shout = o_parent[0];
		o_shout.set('tween', {duration: 'fast'});
		var o_req = new Request({
			'url': '/ajax/delete_shout/',
			'method': 'post',
			'data': $H({
				'shoutid': s_id
			}).toQueryString(),
			'onComplete': function(){
				o_shout.slide('out');
			}
		});
		o_req.send();
	},
	
	setApproveShout: function(){
		$$('a.approveShout').each(function(oA){
			oA.removeEvents();
			oA.addEvent('click', this.ApproveShout);
		}, this);
	},
	
	ApproveShout: function(oEvent){
		oEvent.stop();
		
		var s_id;
		try {
			s_id = this.get('id').replace(/shout\-approve\-(\d+)/, '$1');
		} catch(oEx){return;}
		
		var o_parent = this.getParents('div[id^=shout-]');
		if (o_parent.length === 0){
			return;
		}
		
		var o_shout = o_parent[0];
		(new Request({
			'url': '/ajax/approve_shout',
			'method': 'post',
			'data': $H({
				'shoutid': s_id
			}).toQueryString(),
			'onComplete': (function(){
				o_shout.removeClass('unapproved');
				this.getParent().destroy();
			}).bind(this)
		})).send();
	}
});


/**
 * Create new class instance
 */
var moGAYPROFILE = new GAYPROFILE();

/**
 * DOM Ready callback
 *
 * @access  public
 * @param   event
 * @return  void
 */
window.addEvent('domready', function(oEvent) {
	moGAYPROFILE.DOMReady();
});
