
/**
 * @author Vadim
 * @copyright Hire-Experts LLC
 * @version Pages 3.02
 */

var he_pages_map = 
{
	pages_array: {},
	markers_array: {},
	map_bounds: {},
	zoom: 4,
	
	construct: function(pages_array, markers_array, zoom, map_bounds) {
		this.pages_array = pages_array;
		this.markers_array = markers_array;
		this.map_bounds = map_bounds;
		this.zoom = zoom;

		window.map = new GMap2(document.getElementById("map_canvas"));
		window.map.setUIToDefault();
	},
	
	show_map: function() {
		
		if( this.markers_array.length==0 ) { return false; }

		
		window.map.clearOverlays();

		for( var i=0; i<this.markers_array.length; i++ )
		{
			var marker = this.markers_array[i];

			var point = new GLatLng(marker.lat, marker.lng);

			marker_obj = new GMarker(point);

			window.map.addOverlay(marker_obj);
			if (!marker.desc) { marker.desc=''; }
			marker_obj.bindInfoWindow('<table width="500"><tr valign="top"><td width="110"><img src="' + marker.pages_photo + '" width="100"></td><td width="400"><h3 style="margin-top:0; margin-bottom:6px;"><a href="pages.php?pages_id=' + marker.pages_id + '">' + marker.title + '</a></h3>' + marker.desc + '</td></tr></table>');
			//bindInfoWindow(content:Node, opts?:GInfoWindowOptions) 
		}
			window.map.setCenter(new GLatLng(marker.lat, marker.lng), 4);

		if (this.map_bounds && this.map_bounds.min_lat && this.map_bounds.max_lng && this.map_bounds.min_lat && this.map_bounds.max_lng) {
			var bds = new GLatLngBounds(new GLatLng(this.map_bounds.min_lat, this.map_bounds.min_lng), new GLatLng(this.map_bounds.max_lat, this.map_bounds.max_lng));
		}

		if (this.map_bounds && this.map_bounds.map_center_lat && this.map_bounds.map_center_lng) {
			window.map.setCenter(new GLatLng(this.map_bounds.map_center_lat, this.map_bounds.map_center_lng), 4);
		} else {
			window.map.setCenter(new GLatLng(marker.lat, marker.lng), this.zoom);
		}

		if (bds) { window.map.setZoom(window.map.getBoundsZoomLevel(bds)); }
	},
	
	show_list: function() {
	}
};

var he_pages =
{
	pages_id: 0,
	
	video_id: 0,
	video_total: 0,
	videos: {},
	
	photo_id: 0,
	photo_total: 0,
	photos: {},
	
	construct_video: function()
	{
		var self = this;

		if( this.videos.length < 1  ) return;
		
		this.$video_actions = $('pages_videos').getElement('.video_actions');
		
		this.prepare_videos(this.videos, true);
		
		this.video_slide = new he_slider({
			total: this.video_total,
			count: 3,
			size: 164,
			duration: 500,
			$container: $('pages_videos_cont'),
			$left_btn: $('video_move_left'),
			$right_btn: $('video_move_right'),
			
			load_function: function(page, direction)
			{
				self.load_videos(page, direction);
			}
		});
		
		this.$video_actions.getElement('.video_edit').addEvent('click', function()
		{
			self.show_edit_video();
		});
		this.$video_actions.getElement('.video_delete').addEvent('click', function()
		{
			self.show_delete_video();
		});
	},
	
	construct_photo: function()
	{
		var self = this;
		
		if( this.photos.length < 1) return;
		
		this.$photo_info = $('he_carousel_info');
		this.$photo_fullsize = $('he_carousel_photo');
		
		this.photo_slide = new he_slider({
			total: this.photo_total,
			count: 5,
			size: 114,
			duration: 500,
			$container: $('he_carousel_thumbs'),
			$left_btn: $('he_moveleft'),
			$right_btn: $('he_moveright'),
			
			load_function: function(page, direction)
			{
				self.load_photos(page, direction);
			}
		});
		
		this.prepare_photos(this.photos, true);
		
		
		this.$photo_info.getElement('.photo_delete').addEvent('click', function()
		{
			self.show_delete_photo();
		});		
	},
	
	prepare_videos: function(videos, init)
	{
		var self = this;
		for ( var video_id in videos)
		{
			var $video_btn = $('video_' + video_id);
			
			$video_btn.addEvent('click', function()
			{
				var video_id = $(this).getProperty('id').substr(6);
				self.show_video(video_id);
			});
			
			if ( init )
			{
				self.show_video(video_id);
				init = false;
			}
		}
	},
	
	prepare_photos: function(photos, init)
	{	
		var self = this;
		
		for (var photo_id in photos)
		{						
			var $photo_btn = $('photo_thumb_' + photo_id);
			
			$photo_btn.addEvent('click', function()
			{
				var photo_id = $(this).getProperty('id').substr(12);
				
				self.show_photo(photo_id);
			});
			
			if ( init )
			{
				self.show_photo(photo_id);
				init = false;
			}
		}
	},
	
	show_video: function( video_id )
	{
		this.video_id = video_id;
		var video_info = this.videos[video_id];
		
		var $pages_videos_cont = $('pages_videos');
		var $video_player = $pages_videos_cont.getElement('.pages_video_player');
		var $video_owner_url = $pages_videos_cont.getElements('.video_owner_url');
		var $video_owner_photo = $pages_videos_cont.getElement('.video_owner_photo');
		var $video_owner = $pages_videos_cont.getElement('.video_owner');
		var $video_upload_date = $pages_videos_cont.getElement('.video_upload_date');
		var $video_title = $pages_videos_cont.getElement('.video_title');
		var $video_description = $pages_videos_cont.getElement('.video_description');
		
		$video_player.set('html', video_info.video_player);
		$video_owner_url[0].setProperty('href', video_info.video_owner_url);
		$video_owner_url[1].setProperty('href', video_info.video_owner_url);
		$video_owner_photo.setProperty('src', video_info.video_owner_photo);
		$video_owner_photo.setProperty('width', video_info.video_owner_photo_size);
		$video_owner.set('html', video_info.video_owner);
		$video_upload_date.set('html', video_info.video_upload_date);
		$video_title.set('html', video_info.video_title);
		
		video_info.video_description = ( video_info.video_description ) ? video_info.video_description : '';
		$video_description.set('html', video_info.video_description);
		
		var visibility = (video_info.video_acts == 1) ? 'visible' : 'hidden';
		
		this.$video_actions.setStyle('visibility', visibility);
		
	},
	
	show_photo: function( photo_id )
	{
		this.photo_id = photo_id;
		var photo_info = this.photos[photo_id];
		
		this.$photo_fullsize.src = photo_info.photo_src;
		this.$photo_info.getElement('.pages_photo_owner')
			.setProperty('href', photo_info.photo_owner_url)
			.set('text', photo_info.photo_username);

		var visibility = (photo_info.photo_acts == 1) ? 'visible' : 'hidden';
		this.$photo_info.getElement('.pages_photo_acts').setStyle('visibility', visibility);		
		
		var $prev_photo = this.photo_slide.$container.getElement('li.active');
		var $cur_photo = this.photo_slide.$container.getElement('#photo_thumb_' + this.photo_id);
		
		if ($prev_photo != null) {
			$prev_photo.removeClass('active');
		}
		
		if ($cur_photo != null && $cur_photo.getParent('li') != null) {
			$cur_photo.getParent('li').addClass('active');
		}
	},
	
	load_videos: function( page, direction )
	{
		var self = this;
		
        new Request.JSON({
            method: 'post',
            url: 'he_carousel_ajax.php',
            data: {	'task': 'video_list', 'pages_id': this.pages_id, 'page': page, 'no_cache': Math.random() },
            onSuccess : function(videos)
            {
            	var first_photo = true;
            	
            	for(var video_id in videos )
            	{
            		self.videos[video_id] = videos[video_id];
            		self.add_video(video_id, videos[video_id]);
            		
            		if (first_photo && page == 1) {
						self.show_video(video_id);
						first_photo = false;
					}
            	}
            	
            	self.prepare_videos(videos);
            	
            	self.video_slide.pages[page] = true;
            	self.video_slide.load_page(direction);
            }
        }).send();
	},
	
	load_photos: function(page, direction)
	{
		var self = this;
		
		new Request.JSON({
			method: 'post',
			url: 'he_carousel_ajax.php',
			data: {	'task': 'photo_list', 'pages_id': this.pages_id, 'page': page, 'no_cache': Math.random() },
			onSuccess : function(photos)
			{
				var first_photo = true;
				
				for(var photo_id in photos)
				{
						
					self.photos[photo_id] = photos[photo_id];
					self.add_photo(photo_id, photos[photo_id]);

					if (first_photo && page == 1) {
						self.show_photo(photo_id);
						first_photo = false;
					}
				}
				
				self.prepare_photos(photos);
				
				self.photo_slide.pages[page] = true;
				self.photo_slide.load_page(direction);
			}
		}).send();
	},
	
	add_video: function( video_id, video_info, top )
	{		
		var where = ( top ) ? 'top' : 'bottom';
		var $video = $('video_tpl').clone();
		
		$video.setProperty('id', 'video_' + video_id);	
		$video.getElement('.video_length').set('html', video_info.video_length);
		
		var $image = new Image();
		
		$($image).setProperties({
			'src': './uploads_pages/' + video_info.video_thumb,
			'class': 'video_thumb',
			'border': '0'
		});
		
		$video.grab($image);
		
		this.video_slide.$container.grab($video, where);
	},
	
	add_photo: function(photo_id, photo_info, top)
	{		
		var where = (top) ? 'top' : 'bottom';
		var $photo_div = new Element('li');
		
		var $image = new Image();
		
		$($image).setProperties({
			'id': 'photo_thumb_' + photo_id,
			'src': './images/he_pages_photo.png',
			'border': '0',
			'width': 100,
			'height': 100
		});
		
		$($image).setStyle('background-image', 'url(' + photo_info.photo_thumb_src + ')');
		
		$photo_div.grab($image);
		
		this.photo_slide.$container.grab($photo_div, where);
	},
	
	upload_video: function( $node )
	{
		var $node = $($node);
		var $parent_cont = $node.getParent('.pages_new_video');
		
		$video_provider = $parent_cont.getElement('.new_video_provider');
		$video_url = $parent_cont.getElement('.video_url');
		
		var video_provider = $video_provider.value.trim();
		var video_url = $video_url.value.trim();
		
		if ( video_provider.length == 0 )
		{
			alert(SELanguage.Translate(690706072));
			$video_provider.focus();
			return false;
		}

		if ( video_url.length == 0 )
		{
			alert(SELanguage.Translate(690706073));
			$video_url.focus();
			return false;
		}
		
		$node.addClass('disabled').disabled = true;
		$node.getNext('.hide_loading').removeClass('display_none');
		
		var self = this;
		
        new Request.JSON({
            method: 'post',
            url: 'he_carousel_ajax.php',
            data: {
        		'task': 'upload_video',
        		'pages_id': this.pages_id,
        		'video_provider': video_provider,
        		'video_url': video_url,
        		'no_cache': Math.random()
        	},
            onSuccess : function(response)
            {
        		if ( response.result == 0 )
        		{
        			alert(response.message);
        		}
        		else
        		{
        			if (self.videos.length == 0) {
						window.location.reload();
					}
        			
        			var video_id = response.video_info.video_id;
        			
        			self.videos[video_id] = response.video_info;
        			
        			self.add_video(video_id, response.video_info, true);
        			
        			var $video_btn = $('video_' + video_id);
        			
        			$video_btn.addEvent('click', function()
        			{
        				var video_id = $(this).getProperty('id').substr(6);
        				self.show_video(video_id);
        			});
        			
        			self.video_total++;
        			self.video_slide.set_count(self.video_slide.item_total+1);
        			
        			TB_remove();
        		}
        		
        		$node.removeClass('disabled').disabled = false;
        		$node.getNext('.hide_loading').addClass('display_none');
            }
        }).send();
	},
	
	select_video_provider: function( $node )
	{
		var $node = $($node);
		var $parent_cont = $node.getParent('.video_provider_div');
		
		$parent_cont.removeClass('youtube_video').removeClass('vimeo_video');
		
		if ( $node.value == 'vimeo' )
		{
			$parent_cont.addClass('vimeo_video');
		}
		else if ( $node.value == 'youtube' )
		{
			$parent_cont.addClass('youtube_video');
		}
	},
	
	post_photo: function($node)
	{
		var self = this;
		
		var $node = $($node);
		
		var $upload_photo_container = $('upload_photo_cont');
		var $upload_title = $node.getElement('.hide_loading');
		var $pages_photo = $node.getElement('.pages_photo');
		var $upload_btn = $node.getElement('.button');

		if ( $pages_photo.value.trim() == '' )
		{
			return false;
		}
		
		return AIM.submit($node, {
			'onStart': function()
			{
				$upload_btn.setProperty('disabled','disabled');
				$upload_btn.addClass('disabled');
				$upload_title.removeClass('display_none');
			},
			'onComplete': function(response)
			{
				eval('var response = ' + response);
				$upload_title.addClass('display_none');
				
				if ( response.result == 1 )
				{
        			if (self.photos.length == 0) {
						window.location.reload();
					}
        			
        			self.photo_total++;
        			self.photo_slide.set_count(self.photo_slide.item_total+1);
        			self.photo_slide.reload_page();
        			
        			TB_remove();
				}
				else
				{
					alert(response.message);
				}
					
				$pages_photo.value = '';
				$upload_btn.removeProperty('disabled').removeClass('disabled');
				$upload_btn.removeClass('disabled');
				
				TB_remove();
			}
		});
	},
	
	show_delete_video: function()
	{
		var self = this;
		
		TB_show(SELanguage.Translate(690704253), 'show?TB_inline=true&inlineId=pages_delete_video&height=80&width=280', './images/trans.gif');
		
		$('TB_ajaxContent').getElement('.cancel_video_act').removeEvent('click').addEvent('click', function()
		{
			TB_remove();
		});
		
		$('TB_ajaxContent').getElement('.delete_video_act').removeEvent('click').addEvent('click', function()
		{
			self.delete_video(this);
		});
	},
	
	show_delete_photo: function()
	{
		var self = this;
		
		TB_show(SELanguage.Translate(690704255), 'show?TB_inline=true&inlineId=pages_delete_photo&height=80&width=280', './images/trans.gif');
		
		$('TB_ajaxContent').getElement('.cancel_photo_act').removeEvent('click').addEvent('click', function()
		{
			TB_remove();
		});
		
		$('TB_ajaxContent').getElement('.delete_photo_act').removeEvent('click').addEvent('click', function()
		{
			self.delete_photo(this);
		});
	},
	
	delete_video: function($node)
	{
		var self = this;
		var $node = $($node);
		
		$node.addClass('disabled').disabled = true;
		$node.getNext('.hide_loading').removeClass('display_none');
		
        new Request.JSON({
            method: 'post',
            url: 'he_carousel_ajax.php',
            data: {
        		'task': 'delete_video',
        		'pages_id': this.pages_id,
        		'video_id': this.video_id,
        		'no_cache': Math.random()
        	},
            onSuccess : function(response)
            {
        		if ( response.result )
        		{
        			self.video_total--;
        			
        			if (self.video_total == 0) {
        				window.location.reload();
        			}
        			
        			delete self.videos[self.video_id];
        			
					self.photo_total--;
					self.video_slide.set_count(self.video_slide.item_total-1);

					self.video_slide.reload_page();
        		}
        		else
        		{        			
        			alert(response.message);
        		}
        		
        		TB_remove();
        		$node.removeClass('disabled').disabled = false;
            }
        }).send();
	},
	
	delete_photo: function($node)
	{
		var self = this;
		var $node = $($node);
		
		$node.addClass('disabled').disabled = true;
		$node.getNext('.hide_loading').removeClass('display_none');
		
		new Request.JSON({
			method: 'post',
			url: 'he_carousel_ajax.php',
			data: 
			{
				'task': 'delete_photo',
				'pages_id': this.pages_id,
				'photo_id': this.photo_id,
				'no_cache': Math.random()
			},
			onSuccess : function(response)
			{
				if ( response.result )
				{					
					self.photo_total--;
					
					if (self.photo_total == 0) {
						window.location.reload();
					}
					
					delete self.photos[self.photo_id]; 
					
					self.photo_slide.set_count(self.photo_slide.item_total-1);
					self.photo_slide.reload_page();
				}
				else
				{        			
					alert(response.message);
				}
				
				TB_remove();
				$node.removeClass('disabled').disabled = false;
			}
		}).send();
	},
	
	show_edit_video: function()
	{
		var self = this;
		var video_info = this.videos[this.video_id];
		
		TB_show(SELanguage.Translate(690704254), 'show?TB_inline=true&inlineId=pages_edit_video&height=220&width=400', './images/trans.gif');
		
		this.$video_title = $('TB_ajaxContent').getElement('.video_title');
		this.$video_description = $('TB_ajaxContent').getElement('.video_description');
		
		this.$video_title.value = video_info.video_title;
		this.$video_description.value = video_info.video_description;
		
		$('TB_ajaxContent').getElement('.cancel_video_act').removeEvent('click').addEvent('click', function()
		{
			TB_remove();
		});
		
		$('TB_ajaxContent').getElement('.edit_video_act').removeEvent('click').addEvent('click', function()
		{
			self.edit_video(this);
		});
	},
	
	edit_video: function($node)
	{
		var self = this;
		var $node = $($node);
		
		$node.addClass('disabled').disabled = true;
		$node.getNext('.hide_loading').removeClass('display_none');
		
        new Request.JSON({
            method: 'post',
            url: 'he_carousel_ajax.php',
            data: {
        		'task': 'edit_video',
        		'pages_id': this.pages_id,
        		'video_id': this.video_id,
        		'video_title': this.$video_title.value,
        		'video_description': this.$video_description.value,
        		'no_cache': Math.random()
        	},
            onSuccess : function(response)
            {
        		if ( response.result )
        		{
        			var video_info = self.videos[self.video_id];
        			
        			video_info.video_title = response.video_title;
        			video_info.video_description = response.video_description;

        			self.show_video(self.video_id);
        		}
        		else
        		{        			
        			alert(response.message);
        		}
        		
        		TB_remove();
        		$node.removeClass('disabled').disabled = false;
            }
        }).send();
	},


	check_alias: function(pages_id)
	{
		var alias = $('he_alias').value;
		$('he_alias_success').addClass('display_none');
		$('he_alias_error').addClass('display_none');

		new Request.JSON({
            method: 'get',
            url: 'pages_ajax.php',
            data: {
        		'task': 'check_alias',
        		'alias': alias,
        		'pages_id': pages_id,
        		'no_cache': Math.random()
        	},
            onSuccess : function(response)
            {
        		if ( response.result )
        		{
					$('he_alias_success').removeClass('display_none');
				}
				else
        		{
					$('he_alias_error').removeClass('display_none');
					$('he_alias_error').innerHTML = '<img class="icon" src="./images/he_message_error.png"> ' + response.message;
				}
            }
        }).send();
	}
};


var browse_pages = {

	construct: function()
	{
	
		var self = this;
		this.$form = $('filter');

		this.results_array = {};

		this.sort = {};
		this.sort = {order: 'date', order_seq: 'desc'};

		this.$view_list = $('view_list');
		this.$view_map = $('view_map');
		
		$('filter_submit').addEvent('click', function()
		{
			self.filter_pages();
			$('he_loading_filtering').removeClass('he_loading');
		});

		$('sort_by_name').addEvent('click', function()
		{
			if (self.sort.order!='alpha') self.sort.order_seq = 'desc';
			self.sort.order = 'alpha';
			self.sort.order_seq = ( self.sort.order_seq == 'desc' ) ? 'asc' : 'desc';

			self.set_active_ordering('name');			

			self.filter_pages();
		});

		$('sort_by_fans').addEvent('click', function()
		{
			if (self.sort.order!='fans') self.sort.order_seq = 'desc';
			self.sort.order = 'fans';
			self.sort.order_seq = ( self.sort.order_seq == 'desc' ) ? 'asc' : 'desc';

			self.set_active_ordering('fans');

			self.filter_pages();
		});
		
		$('sort_by_date').addEvent('click', function()
		{
			if (self.sort.order!='date') self.sort.order_seq = 'desc';
			self.sort.order = 'date';
			self.sort.order_seq = ( self.sort.order_seq == 'desc' ) ? 'asc' : 'desc';

			self.set_active_ordering('date');

			self.filter_pages();
		});


		$('view_list_btn').addEvent('click', function()
		{
			self.$view_list.removeClass('he_display_none');
			self.$view_map.addClass('he_display_none');
			this.addClass('active');
			$('view_map_btn').removeClass('active');
			$('input_view').value = 'list';
		});

		$('view_map_btn').addEvent('click', function()
		{
			self.$view_list.addClass('he_display_none');
			self.$view_map.removeClass('he_display_none');
			this.addClass('active');
			$('view_list_btn').removeClass('active');
			$('input_view').value = 'map';
		});

	},


	filter_pages: function() {
		var self = this;
		var newquery_str = this.$form.toQueryString();
		if ( this.query_str != undefined && this.query_str != newquery_str  )
		{
			this.page = 1;
		}

		this.query_str = newquery_str;

		$('filter_submit').addClass('disabled').disabled = true;
		new Request.JSON({
			method : 'get',
			url : 'pages_ajax.php?task=browse_pages&' + '&' + newquery_str,
			data : {'p': self.page, 'order': self.sort.order, 'order_seq': self.sort.order_seq},
			onSuccess : function(response) {
				if( response ) {
					self.$view_list.innerHTML = response.html;
					he_pages_map.markers_array = response.markers;
					he_pages_map.map_bounds = response.map_bounds;
					he_pages_map.show_map();
				}
				$('filter_submit').removeClass('disabled').removeProperty('disabled');
				$('he_loading_paging').addClass('he_loading');
				$('he_loading_ordering').addClass('he_loading');
				$('he_loading_filtering').addClass('he_loading');
			}
		}).send();
	},


	change_page: function(p) {
		this.page = p;
		$('he_loading_paging').removeClass('he_loading');
		this.filter_pages();
	},



	set_active_ordering: function(sort_by_id) {

		$('sort_by_name').removeClass('active');
		$('sort_by_fans').removeClass('active');
		$('sort_by_date').removeClass('active');

		$('sort_by_name_seq').addClass('sort_by_seq_display');
		$('sort_by_fans_seq').addClass('sort_by_seq_display');
		$('sort_by_date_seq').addClass('sort_by_seq_display');

		if (this.sort.order_seq=='asc') {
			$('sort_by_' + sort_by_id + '_asc').addClass('unactive');
			$('sort_by_' + sort_by_id + '_desc').removeClass('unactive');
		} else {
			$('sort_by_' + sort_by_id + '_asc').removeClass('unactive');
			$('sort_by_' + sort_by_id + '_desc').addClass('unactive');
		}


		$('sort_by_' + sort_by_id).addClass('active');
		$('sort_by_' + sort_by_id + '_seq').removeClass('sort_by_seq_display');

		$('he_loading_ordering').removeClass('he_loading');

	}

};



var he_pages_items = {

	items: null,
	entity: '',
	pages_id: 0,

    choose_item : function( item_id ) {
		if( this.items.indexOf(item_id)==-1 ) { //add item
            $("item_" + item_id).addClass("active");
            this.items[this.items.length] = item_id;
        }
        else { //remove item
            $("item_" + item_id).removeClass("active");
            this.items.splice(this.items.indexOf(item_id), 1);
        }
    },

	save : function() {
        var self = this;
        new Request.JSON({
            method: 'get',
            url: 'pages_ajax.php',
            data: {'task': 'save_'+self.entity+'_items' , 'item_entity': self.entity, 'pages_id': self.pages_id , 'items': self.items.toString()},
            onSuccess: function(response) {
                if( response.status ) {
					$('he_pages_items_epicwin').setStyle('display', 'block');
				} else {
					$('he_pages_items_epicfail').setStyle('display', 'block');
                }
                setTimeout("parent.TB_remove(); parent.window.location.reload();", 2500);
            }
        }).send();
    }

}
