/***************************************************************************
*
* IMPORTANT: This is a commercial product made by AntonLV and cannot be modified for other than personal usage. 
* This product cannot be redistributed for free or a fee without written permission from AntonLV. 
* This notice may not be removed from the source code.
*
***************************************************************************/

var AlVComposer = {
    
    jQuery : $,
    this_html : '',
	params : {
		myBlocks : null,
		mainPMenuItems: null,
		blocksPMenuItems: null,
		popupMessages: null,
		memSettings: null
	},
    
	settings : {
        columns : '.column',
        widgetSelector: '.groupItem',
        handleSelector: '.boxFirstHeader',
        contentSelector: '.boxContent',
        widgetDefault : {
            movable: true,
            removable: true,
            collapsible: true,
            editable: true,
			menu: true
        },
        widgetIndividual : {
            intro : {
                movable: false,
                removable: false,
                collapsible: false,
                editable: false
            }
        }
    },

    init : function () {
        this.addWidgetControls();
        this.makeSortable();
    },
    
	getWidgetSettings : function (id) {
        var $ = this.jQuery,
            settings = this.settings;
        return (id&&settings.widgetIndividual[id]) ? $.extend({},settings.widgetDefault,settings.widgetIndividual[id]) : settings.widgetDefault;
    },
    
	
	popupMenu : function(e){
	
	var element = this;
	var cover = getPageEventCoords(e);
	var coverLeft = cover.left;
	var coverTop = cover.top;
	var coverWidth = element.width;
	var coverHeight = element.height;
	
	obj = this;
	
	var text = '';
	var sharetext = '';
	var membtext = '';
	var nontext = '';
	var frtext = '';
	var content = $('div.boxContent', obj.parentNode.parentNode);
	if (content.css('display') == 'none') text = popupBlockMenu.show; else text = popupBlockMenu.hide; 
	
	if ($('#menu').length > 0) 
	{	
		$('#'+ id + ' object').css('visibility','visible');
		$('#'+ id + ' embed').css('visibility','visible');
		$('#menu').remove();
	}	
	
	id = obj.parentNode.parentNode.id;
	
	if (checkshared(id) == true) sharetext = popupBlockMenu.unshare;
		else
			sharetext = popupBlockMenu.share;
	
	if (checkVis(id, 2) == true) 
	{	
		membtext = popupBlockMenu.unavail + ' ' + popupBlockMenu.formem;
	}	
		else
		{	
			membtext = popupBlockMenu.avail + ' ' + popupBlockMenu.formem;
		}	

	$('#'+ id + ' object').css('visibility','hidden');
	$('#'+ id + ' embed').css('visibility','hidden');
	
	if (checkVis(id, 4) == true) nontext = popupBlockMenu.unavail + ' ' + popupBlockMenu.fornonmem;
		else
			nontext = popupBlockMenu.avail + ' ' + popupBlockMenu.fornonmem;			

	if (checkVis(id, 1) == true) frtext = popupBlockMenu.unavail + ' ' + popupBlockMenu.forfriends;
		else
			frtext = popupBlockMenu.avail + ' ' + popupBlockMenu.forfriends;			
			
	var sharing = '';
	
	var reg = /_c_/g;
	
	if (memSettings.sharing == 1 && memSettings.owner == 1 && id.match(reg) != null && isMy(id) == true && sharedAllow(id) == true)
		sharing = '<a href="javascript:void(0)" id="alv_show_canbe_shar" class="alv_hide_b">' + sharetext + '</a>';
		
	var mem_avail = '';
	
	var reg_stand = /_t_/g;
	
	if (memSettings.owner == 1)
	{
		if (id.match(reg_stand) != null && memSettings.allow_stand_remove == 1)
		{	
			mem_avail = '<a href="javascript:void(0)" id="alv_remove_b" class="alv_hide_b">' + popupBlockMenu.remove + '</a><br/>';
		}	
		else if (id.match(reg_stand) == null)	
		{   
			mem_avail = '<a href="javascript:void(0)" id="alv_remove_b" class="alv_hide_b">' + popupBlockMenu.remove + '</a><br/>';
		}	
		
	if (id.match(reg_stand) != null && memSettings.allow_stand_change == 1)
	{	
		mem_avail += '<a href="javascript:void(0)" id="alv_show_mem" class="alv_hide_b">' + membtext + '</a><br/><a href="javascript:void(0)" id="alv_show_non" class="alv_hide_b">' + nontext + '</a><br/><a href="javascript:void(0)" id="alv_show_only_friend" class="alv_hide_b">' + frtext + '</a><br/>' + sharing + '</div>';
	}	
		else if (id.match(reg_stand) == null)
	{	
		mem_avail += '<a href="javascript:void(0)" id="alv_show_mem" class="alv_hide_b">' + membtext + '</a><br/><a href="javascript:void(0)" id="alv_show_non" class="alv_hide_b">' + nontext + '</a><br/><a href="javascript:void(0)" id="alv_show_only_friend" class="alv_hide_b">' + frtext + '</a><br/>' + sharing + '</div>';
	}	
	}
	
	$('<div id="menu" class = "sample_attach"><a href="javascript:void(0)" id="alv_hide_b" class="alv_hide_b">' + text + '</a><br/>'+ mem_avail).appendTo('body');
	$('#menu').css('top',coverTop + 15);
	$('#menu').css('left',coverLeft - 5);
	
	
	
	$('#menu').hover(function() {
		
	}, function() {
		$('#menu').remove();
		var trestID = getIbMainPart(id);
		$("div[@id^='" + trestID + "'] object").css('visibility','visible');
		$("div[@id^='" + trestID + "'] embed").css('visibility','visible');
	});

	$('#alv_hide_b').bind('click', toggleContent);
	$('#alv_remove_b').bind('click', removeContent);
	
	$('#alv_show_mem').bind('click', showForMem);
	$('#alv_show_non').bind('click', showForNonMem);
	$('#alv_show_only_friend').bind('click', showForFriends);
	
	if (memSettings.sharing == 1)
		$('#alv_show_canbe_shar').bind('click', shareBlock);		
	
	return false;
	},
	
	addToSortableList: function(){
		var $ = this.jQuery;
		$(this.settings.columns).sortable('refresh');
	},

	addWidgetControls : function () {
        var AlVComposer = this,
            $ = this.jQuery,
            settings = this.settings;
            
        $(settings.widgetSelector, $(settings.columns)).each(function () {
            var thisWidgetSettings = AlVComposer.getWidgetSettings(this.id);
                       
			if (thisWidgetSettings.menu) {
                $('<a href="javascript:void(0)" id = "popupM" class="closeM"><img src="alv/hpcomposer/icon/menu.gif" /></a>').mousedown(popupMenu).prependTo($(settings.handleSelector,this));
            }
			
        });
        
    },
       
    makeSortable : function () {
        var AlVComposer = this,
            $ = this.jQuery,
            settings = this.settings,
            $sortableItems = (function () {
                var notSortable = '';
                $(settings.widgetSelector,$(settings.columns)).each(function (i) {
                    if (!AlVComposer.getWidgetSettings(this.id).movable) {
                       
					   if(!this.id) {
                            this.id = 'widget-no-id-' + i;
                        }
                        notSortable += '#' + this.id + ',';
                    }
                });
                
				return $('> div:not(' + notSortable + ')', settings.columns);
            })();
        
        $sortableItems.find(settings.handleSelector).css({
            cursor: 'move'
        }).mousedown(function (e) {
            $sortableItems.css({width:''});
            $(this).parent().css({
                width: $(this).parent().width() + 'px'
            });
        }).mouseup(function () {
            if(!$(this).parent().hasClass('dragging')) {
               ; 					
            } else {
                $(settings.columns).sortable('disable');
            }
        });
		
		
		function sortObject(e,ui){
		    //ui.helper.css('z-index', 195);
		    //ui.item.css('z-index', 195);
		    ui.placeholder.css('z-index', 1).css('opacity', .6).css('-moz-opacity', .6);
		}; 

    	$(settings.columns).sortable({
            items: '.groupItem',
            connectWith: $(settings.columns),
            handle: settings.handleSelector,
            placeholder: 'widget-placeholder',
            forcePlaceholderSize: true,
            revert: 200,
            opacity: 0.6,
			distance: 0.1,
			helper: 'sortHelper',
			containment: 'document',
			tolerance:'tolerance',
			dropOnEmpty: true, 
			sort:sortObject,
			appendTo: 'body',
			
			start: function (e,ui) {
				$(ui.helper).addClass('dragging');
				this_html = $('div.boxContent', ui.item).html();
				$('object').css('visibility','hidden');
				$('embed').css('visibility','hidden');
		    },
			beforeStop :function (e,ui) {
				$('div.boxContent', ui.item).html(this_html);
			},
            stop: function (e,ui) {
                	
				if (!$.browser.msie) 				
					$('div.disignBoxFirst', ui.item).css('width', '');
				else
					$('div.disignBoxFirst', ui.item).css('width', '99.5%');
											
			    $(settings.columns).sortable('enable');
				serialize();
					
					var id = $('div.disignBoxFirst', ui.item).attr('id');
					
					$('object').css('visibility','visible');
					$('embed').css('visibility','visible');
					
					
					$('#' + id + ' object').each(function() {
						$(this)[0].width = '100%';
					})
					
					$('#' + id + ' embed').each(function() {
						$(this)[0].width = '100%';
					})				
            }
        });
  }
};