var viewList = window.viewList || {};
//list autocompete url for list searching
viewList.listsAutocompleteUrl = Listiki.baseUrl + "search/lists";
//item autocompete url
viewList.itemsAutocompleteUrl = Listiki.baseUrl + "search/items";
//tags autocomplete url
viewList.tagsAutocompleteUrl = Listiki.baseUrl + "search/tags";

viewList.masterListUpdateUrl = Listiki.baseUrl + "list/get-master-list-items";
viewList.liveUserUpdateUrl = Listiki.baseUrl + "list/get-live-users";
viewList.loginComplite = {};
viewList.changed = false;
viewList.isIndex = false;

viewList.init =  function(){
	
	
    viewList.initItems();
    viewList.initTags();
    viewList.initSaveLink();
    viewList.initClearLink();
   
    //viewList.initMasterListUpdate();
    //viewList.initLiveUserUpdate();
    /*setInterval(function(){
        viewList.initMasterListUpdate();
        viewList.initLiveUserUpdate();
    },60*1000);*/
    
    viewList.initAddItems();
    
	viewList.initContributors();
    viewList.initShare();
    viewList.initFavourite();
    viewList.initInviteContributors();
    
    viewList.initTitleEdit();
    viewList.initTips();

    viewList.changed = false;
}

viewList.initContributors = function() {
	$('a#more-user').click(function(){
		$('#more-user').hide();
		$('.slide-user').slideDown('normal')
	});
}

viewList.initTips = function() {
	$('#tips').click(function(){
		$('#first-timer').fadeOut("normal");
		createCookie("tips", "true", 300);
	});
}

viewList.initItems = function(){
  
	$("#list-rank").sortable({
		items: 'li.sorted',
		connectWith: ' .sortable',
		start: function(event,ui){
			viewList.startSorting = true;
		},
		update: function(event,ui){	
			viewList.refreshItems();
		}
    });
    viewList.initRemoveItems($(" ul a.delete-item"));
    
}

viewList.initRemoveItems = function($items){
    $items
    .unbind('click')
    .bind('click', function(e){
        e.preventDefault();
        var $element = $(this).parent().parent().parent();
        
        $element.attr('className', '');
        
        $('ul.additional').append($element.clone());
        
        $element.fadeOut("slow",function(){
            $element.remove();
            viewList.startSorting = true;
            viewList.refreshItems();
        });
    });
}

viewList.refreshItems = function(){
	//trigger double update event
	
	if(!isLoggedIn()){
		viewList.need_save = true;
        showGigyaLogin();
        
        return false;
    }
	//alert($("#is-contributors-list").size());
	if($("#is-master-list").size() || $("#is-contributors-list").size()) {
		var postData = viewList.collectListInfo();
		viewList.saveList(postData,true);
	}
	if(viewList.startSorting != undefined && viewList.startSorting){
		viewList.startSorting = false;
	}else if(viewList.startSorting != undefined){
		viewList.startSorting = undefined;
		return false;
	}
	
	viewList.changed = true;
	
    $("ul.sortable > li").each(function(i,obj){
        $(obj).find("div.number").html('<h5>' + (i+1) + '</h5>');
    });

    if($("a.save-own-list").size() == 1) return;
	//if user not logged return

	if(Listiki.user.id==0 && $(".tabs-own-list").size() ){
		$('.reordered').fadeIn();
		return false;
	}
	

	$('.author').html('<a href="/profile">'+Listiki.user.name+'</a>\'s list of:');

    
	var postData = viewList.collectListInfo();
    viewList.saveList(postData, false);
}

viewList.initSaveLink = function(){
    if ($("div.tabs").size() == 2){
        $("a.save-list").hide();
    }

	$('.save-list').click(function(e){		
		e.preventDefault();
		
		if(!isLoggedIn()){
			viewList.need_save = true;
			showGigyaLogin();
			
			return false;
		}
		
		hideFader();
		
		showFader();
		showPopupCenter('#save-list');
	});
	
	$('a.save-own-list').live('click', function(e){
		e.preventDefault();
		
		viewList.need_save = true;
        var postData = viewList.collectListInfo();
        viewList.saveList(postData);
    });
}


viewList.collectListInfo = function(){
    var itemsValues = new Array();
    
    $("ul#list-rank li .item-name").each(function(i,obj){
        var itemName = $(obj).text();
        
        //process amazon link here
        if ($(obj).parent().find("a.amazon-link").size() ){
            var link = $(obj).parent().find("a.amazon-link").attr("href");
            itemName += " (amazon product [link]"+ link +"[/link] )";
        }
	//process item link here
        if ($(obj).parent().find("a.item-url").size() ){
            var link = $(obj).parent().find("a.item-url").attr("href");
            itemName += " (item_url [link]"+ link +"[/link] )";
        }
	//
        itemsValues.push(itemName);
    });
	
	
	var listTags = new Array();
	/*
	$("#tag-name").next().find("li").each(function(i,obj){
		listTags.push($(obj).text());
	});
	*/

    var postData = {
        master_list_id : $("#master-list-id").text(),
        "list-thing[]" : itemsValues,
        "list-runners[]" : '',
        "list-tags" : listTags.join(",")
    }
    /*
    if ( $("#personal-list-id").size() ){
        postData['own_list_id'] = $("#personal-list-id").text();
    }
    */
    return postData;
}

viewList.compareObj = function(x,y){
	var objectsAreSame = true; 
	for(var propertyName in x) {
		if(x[propertyName] !== y[propertyName]) {
			objectsAreSame = false;
			break;
		}
	} 
   return objectsAreSame; 
}

viewList.saveList = function(postData, reload){
    if (typeof reload == 'undefined'){
        reload = true;
    }
   						
	if(Listiki.user.id == undefined || Listiki.user.id == 0){
		return false;
	}

	//$("a.save-list,a.save-own-list").html("<span>Saving...</span>").show();
	
    $.ajax({
        url : Listiki.baseUrl + "list/create-own",
        dataType : "json",
        data : postData,
        type : "post",
        success : function(data){
            $("#content").removeClass("ajax-loading");
			setTimeout(function(){
				//$("a.save-list,a.save-own-list").hide();
				
				$('.meta.saved-time','#my').html("Saved now");

				$('.meta.autosaved','#my').fadeIn(function(){
					$(this).animate({'':''}, 2000, function(e) {
						$(this).fadeOut();
					});
				});
				
			},500);
			
            if (!reload){
                return;
            }
            
            //alert(data.redirect);
            if (data.success == true){
                if(data.redirect){
                	
					window.location.href = Listiki.baseUrl + data.redirect;
				}else{
                    window.location.href = window.location.href.replace(/(.*)#.*/,"$1"+redirect/*"#personal-list"*/);
					window.location.reload();
                }
            }
			
        }
    });
}

viewList.initTags = function(){
    listikiAutocomplete.add($("#tag-name"),viewList.tagsAutocompleteUrl);

    $("#tag-name").tagEditor({
        confirmRemoval: false
    });
    $("#tag-name").keypress(function(){
        viewList.refreshItems();
    });
    $("ul.tagEditor").click(function(){
        viewList.refreshItems();
    });
    $("#tag-name").blur();
}

viewList.initLiveUserUpdate = function(){
	 $.ajax({
	        url  : viewList.liveUserUpdateUrl,
	        type : "POST",
	        dataType : "json",
	        data : {listId : $("#master-list-id").text()},
	        success : function(data){
	        	//alert(data);	
	        	$('#contributors li.user span.online-user').addClass('hidden-object');
	        	
	        	$.each(data.listUsers, function(i, item){
	        		if(!$('#contributors li#user-' + item.id).size()) {
	        			$('#contributors ul#list-rank').append(
	        					$('<li/>')
	        						.attr('id', 'user-' + item.id)
	        						.addClass('user')
	        						.append(
	        								$('<a/>')
	        									.attr('href', Listiki.baseUrl + item.custom_route)
	        									.append(
	        											$('<span/>')
	        												.addClass('online-user')
	        												.addClass('hidden-object')
	        												.html('online')
	        										)
	        							)
	        				)
	        			
	        			
	   	        	}
	        		
	        		$('#contributors li#user-' + item.id).addClass('_ok');
	        		
	        	})
	        	
	        	$('#contributor-counts').html(data.listUsers.length + ' contributor' + ((data.listUsers.length > 1) ? 's' : ''));
	        	
	        	if(data.listUsers.length > 4) {
	        		$('#more-user strong').html(data.listUsers.length - 4);	        		
	        	}
	        	
	        	$('#contributors li.user:not("._ok")').remove();
	        	
	        	$('#contributors li.user').removeClass('_ok');
	        	
	        	$.each(data.liveUsers, function(i, item){
	        		$('#contributors li#user-' + item.user_id + ' span.online-user').removeClass('hidden-object');	        		
	        	})
	        	
	        	_liveCounts = data.liveUsers.length;
	        	if(_liveCounts > 0) {
	        		if($('.live-user').hasClass("hidden-object")) {
	        			$('.live-user').removeClass("hidden-object");
	        		} 	        		   
	        		$('.live-user-result').html(_liveCounts);
	        	//	$('.live-user-result').html(_liveCounts + " user" + ((_liveCounts > 1) ? 's': ''));
	        		
	        	} else {
		        	$('.live-user').addClass("hidden-object");             	
	        	}
	        		        	
	        }
	 })
	
}

viewList.initMasterListUpdate = function(){
    //if there is no personal list, do not make an update
	
	if(viewList.changed || ($("#is-master-list").size() != 1)) return;

    $.ajax({
        url  : viewList.masterListUpdateUrl,
        type : "POST",
        dataType : "json",
        data : {listId : $("#master-list-id").text()},
        success : function(data){        	       
        	
            if (!viewList.masterListHash){
                //if its first update, only saving list items hash and return
                viewList.masterListHash = new Array();
                viewList.masterListHash[data.listId] = data.hash;
                return;
            }
            
            if (viewList.masterListHash[data.listId] == data.hash){
                //this is the same list, we do not need to update it
                return;
            }
            
            //alert(viewList.masterListHash[data.listId]);
            //storing in the viewList object last update data hash
            viewList.masterListHash[data.listId] = data.hash;

            //updating the new list here
            var itemsCount = data.listItems.length;
            
            var new_html = '';
            var items_count = 0;
           
            for (var i in data.listItems){
                var list_item = data.listItems[i];
                var amazon_link = '';
                if (list_item.amazon_item){
                    amazon_link = ' | <a href="'+ list_item.amazon_item +'">Link</a>';
                }
				var item_url= '';
                if (list_item.url){
					var item_url_title = list_item.url.length>50?list_item.url.substr(0,50)+'...':list_item.url;
                    item_url = ' | <a class="item-url" target="_blank" href="'+ list_item.url +'">'+item_url_title+'</a>';
                }
				
				new_html += '<li class="sorted" data-id="'+ list_item.id +'"><div class="number"><h5>'+ (parseInt(i)+1) + '</h5></div>'+
							'<div class="info"><h5 class="item-name">'+  list_item.title +'</h5>'+
							'<div class="tools">'+ ((list_item.url) ? ' <a href="'+ list_item.url +'">View</a>  &#8211; ' : '') +'<a class="delete-item" href="#">Remove</a></div></div>'+
							'</li>';
                           
            }
		
            var item_length = data.listItems.length;
            var runners_up_html = '';
			
			if (new_html){				
	            var $new_html = $(new_html);
	            $("ul#list-rank").quicksand($new_html,function(){
							$('.sortable li').unbind('mouseleave').unbind('mouseenter');
							inithover();
						});
            }else{
            	$("ul#list-rank li").fadeOut("slow",function(){
            		$(".tabs-1 ul.sortable1 li").remove();
				});
			}                                 
            
			//update num of users
			$('.meta.users-num a').html(data.listUsers);
        }
    });
}

viewList.processItem = function(item,number){
    var $element = $(".global-list ul.item-list li:has(a[rel="+ item.id +"])");
    var position = number + 1;
    if ($element.size() == 0){
        $element = $('<li><span class="number"><a rel="'+ item.id +'" href="#">'+ position +'</a></span><h4>'+ item.title +'</h4><p><span>By '+ item.quantity +' '+ ( ( item.quantity == 1 )? 'user' : 'users' )  +'</span></p></li>');
        $element.css("opacity",0);

        viewList.insertElement($element,number);
        
        $element.animate({opacity:1},'fast');
    }else{
        $element.html('<span class="number"><a rel="'+ item.id +'" href="#">'+ position +'</a></span><h4>'+ item.title +'</h4><p><span>By '+ item.quantity +' '+ ( ( item.quantity == 1 )? 'user' : 'users' )  +'</span></p>');
        var index = $(".global-list ul.item-list li").index($element.get(0));
        if (index == number){
            //if the element on its place there is no need to move it
            return
        }
        var $newElement = $element.clone();
        
        $element.css("position","relative");
        var distance = (number - index)*45;
        $element.animate({top: distance+"px"},200,function(){
            viewList.insertElement($newElement,number);
            $element.remove();
        });
    }
}

viewList.insertElement = function($element,number){
    var $beforeElement = $(".global-list ul.item-list li:eq("+ number +")");
    if ( $beforeElement.size() ){
        $element.insertBefore($beforeElement);
    }else{
        $(".global-list ul.item-list").append($element);
    }
}

viewList.initClearLink = function(){
    $("a.clear-my-list,#soc-clear").click(function(e){
    	
        e.preventDefault();       
       // $.blockUI({ message: $("#popup-clear-list") });
        //return;
        //$("#popup-message").find(".popup-info h3").text("Are you sure you want to clear you list?");
		//$.blockUI({ message: $("#popup-clear-list") });
		
		//var r = confirm("Are you sure you want to clear you list?");
		showFader();
        $("#delete-list").show();
        var topOffset = ($(window).height() - $("#delete-list").height() ) /2;
        
        var leftOffset = ($(window).width() - $("#delete-list").width() ) /2;
        $("#delete-list").css({
            top: topOffset + $(window).scrollTop() + "px",
            left: leftOffset + 250+ "px"
        });
		
		$('#delete-list-confirm').click(function(){
			var postData = viewList.collectListInfo();
			postData['list-tags'] = "";
			postData['list-thing[]'] = new Array();
			postData['delete'] = true;
			viewList.saveList(postData, true);
		})
		return false;
   
    });
    
    $("#clear-list-link-yes").click(function(e){
        e.preventDefault();
        var postData = viewList.collectListInfo();
        postData['list-tags'] = "";
        postData['list-thing[]'] = new Array();
        postData['delete'] = true;
        viewList.saveList(postData, true);
    });
    
    $("#clear-list-link-cancel").click(function(e){
        e.preventDefault();
        $.unblockUI();
    });
}

viewList.initAddItems = function(){
    $("#list-add-item").appendTo("body");
    
    //$("a#add-item-popup-link").addClass("need-login");
    $("a#add-item-popup-link").click(function(e){
        e.preventDefault();
        if (!isLoggedIn()){
        	
        	viewList.need_save = true;
            e.preventDefault();
            showGigyaLogin();
            
            return false;
        }
		/*
        if (Listiki.user.id == 0){
        	return;
		}
		*/
        
        showFader();
        showPopupCenter("#list-add-item");
		
		$('#list-item-add-field').addClass("black").focus();
		$('#list-item-add-url').focus(function(){
			$(this).addClass("black");
			if(this.value==this.defaultValue){
				this.value='';
			}
		}).blur(function(){
			if(this.value==this.defaultValue || this.value==''){
				$(this).removeClass('black').val(this.defaultValue);
			}
		});
		$('#list-item-add-field').result(function(event, data, formatted) {
			$("#add-item-link").click();
		});
		return false;
    });
    
    $("ul.additional li").live('click', function(){
		$(this).addClass('sorted');
		viewList.processAddItem($(this).clone());
		//TODO: check hover performance at this point
		$('.sortable li').unbind('mouseleave').unbind('mouseenter');
		inithover();
		$(this).remove();
        //closing popup
        $('#fader_bg').click();
    });
    $('#fader_bg').click(function(){
        $("#list-add-item").hide();
    });
    
    
    $("a.close-add-item").click(function(){
        $('#fader_bg').click();
		return false;
    });
    
    $("a.cancel").click(function(){
    	$('#fader_bg').click();
    	return false;
    });
    
	$('#list-item-add-field, #list-item-add-url').bind('keypress', function(e) {
        if(e.keyCode==13){       
            $("#add-item-link").click();
        }
       
        if(e.keyCode == 27){        	
        	$('#fader_bg').click();
        }
        
	});
    $("#add-item-link").click(function(e){
        e.preventDefault();
		
		if (!viewList.validateAddItem()){
			return;
		}
		
		$('p.empty-list-message').remove();
		
        var item = $("#list-item-add-field").val();
        
       /* var amazon_link = '';
        if ( $("#list-item-add-field").hasClass("amazon-product") ){
            amazon_link = ' <a class="amazon-link" href="'+$("#list-item-add-field").attr("rel")+'">More info</a>';
        }*/
        
		var item_link = '';
		var item_url = $("#list-item-add-url").val();
		if(item_url==$("#list-item-add-url").get(0).defaultValue){
			item_url='';
		}
		if (item_url){
			var item_url_title = item_url.length>50?item_url.substr(0,50)+'...':item_url;
			item_link = '<a class="item-url" href="'+ item_url +'">'+ item_url_title +'</a>';
		}
        
        var html = '<li class="sorted"><div class="number"><h5>0</h5></div>'+
        '<div class="info"><h5 class="item-name">'+  item +'</h5>'+
        '<div class="tools">'+ ((item_url) ? ' <a href="'+ item_url +'" class="item-url">View</a>  &#8211; ' : '') +'<a class="delete-item" href="#">Remove</a></div></div>'+
        '</li>';
								
        viewList.processAddItem($(html));
		
		//TODO: check hover performance at this point
		$('.sortable li').unbind('mouseleave').unbind('mouseenter');
		inithover();
        
        $("#list-item-add-field").attr("value","");
        $("#list-item-add-url").attr("value","");
        $("#list-item-add-field").removeClass("amazon-product");
        
        //closing popup
        $('#fader_bg').click();
    });
    
	/* make add item input wuth black color
    $("#list-item-add-field").click(function(){
        $(this).addClass("black");
    });
	*/
    
    listikiAutocomplete.addItem($("#list-item-add-field"));
}

viewList.processAddItem = function($item){
	$("ul#list-rank").append($item);

    viewList.initRemoveItems($($item).find("a.delete-item"));
    viewList.startSorting = true;
    viewList.refreshItems();
}

viewList.finishSetStatus = function(response){
	//console.log(response);
	var provider = (viewList.provider == 'twitter') ? 'Twitter' : 'Facebook';
	var msg = "Ouch! Something went wrong with that last update. Please try a gain later... you never know!";
	if (response=='1' || response==true){
		msg = "Yay! You successfully updated your "+ provider + " status";
	}
	$("#popup-message").find(".popup-info h3").text(msg);
	$.blockUI({ message: $("#popup-message") }); 
	setTimeout($.unblockUI, 3500);
}

viewList.initShareTwitter  =  function() {
	_counter = $("#share-message .char-counter");
	
	if(viewList.provider == "twitter") {
		
		_counter.removeClass('hidden');
		
		_val = $("#share-message textarea").val().length;
		
		$("#share-message .char-counter-field").html(_val);			

		if(_val < 90) $("#share-message .char-counter-field").css('color', 'green');
		else if (_val >= 90 && _val <= 120) $("#share-message .char-counter-field").css('color', 'orange');
		else if (_val > 120 ) $("#share-message .char-counter-field").css('color', 'red');
				
		$("#share-message textarea").bind('keypress', function(e){
			_val = $(this).val().length;
			
			if(_val >= 140) {			
				return false; 
			}
			
			$("#share-message .char-counter-field").html(_val);	
			
			if(_val < 90) $("#share-message .char-counter-field").css('color', 'green');
			else if (_val >= 90 && _val <= 120) $("#share-message .char-counter-field").css('color', 'orange');
			else if (_val > 120 ) $("#share-message .char-counter-field").css('color', 'red');
		});
		
		$("#share-message textarea").bind('keyup', function(e){
			_val = $(this).val().length;
			
			
			
			$("#share-message .char-counter-field").html(_val);	
			
			if(_val < 90) $("#share-message .char-counter-field").css('color', 'green');
			else if (_val >= 90 && _val <= 120) $("#share-message .char-counter-field").css('color', 'orange');
			else if (_val > 120 ) $("#share-message .char-counter-field").css('color', 'red');
			
		});
	} else {
		$("#share-message textarea").unbind('keyup').unbind('keypress');
		_counter.addClass('hidden');		
	}
	
}


viewList.initInviteTwitter  =  function() {
	
	
	if(viewList.provider == "twitter") {
		_counter = $("#invite-contributors .char-counter");
		
		_counter.removeClass('hidden');
		
		_val = $("#invite-contributors textarea").val().length;
		
		$("#invite-contributors .char-counter-field").html(_val);			

		if(_val < 90) $("#invite-contributors .char-counter-field").css('color', 'green');
		else if (_val >= 90 && _val <= 120) $("#invite-contributors .char-counter-field").css('color', 'orange');
		else if (_val > 120 ) $("#invite-contributors .char-counter-field").css('color', 'red');
				
		$("#invite-contributors textarea").bind('keypress', function(e){
			_val = $(this).val().length;
			
			if(_val >= 140) {			
				return false; 
			}
			
			$("#invite-contributors .char-counter-field").html(_val);	
			
			if(_val < 90) $("#invite-contributors .char-counter-field").css('color', 'green');
			else if (_val >= 90 && _val <= 120) $("#invite-contributors .char-counter-field").css('color', 'orange');
			else if (_val > 120 ) $("#invite-contributors .char-counter-field").css('color', 'red');
		});
		
		$("#invite-contributors textarea").bind('keyup', function(e){
			_val = $(this).val().length;
			
			
			
			$("#invite-contributors .char-counter-field").html(_val);	
			
			if(_val < 90) $("#invite-contributors .char-counter-field").css('color', 'green');
			else if (_val >= 90 && _val <= 120) $("#invite-contributors .char-counter-field").css('color', 'orange');
			else if (_val > 120 ) $("#invite-contributors .char-counter-field").css('color', 'red');
			
		});
	} else {
		$("#invite-contributors textarea").unbind('keyup').unbind('keypress');
		_counter.addClass('hidden');		
	}
	
}


viewList.initInviteContributors = function() {
	$('#side-bar li.invite a').live('click', function(e){
		e.preventDefault();
		
		showFader();
		showPopupCenter('#invite-contributors');
		viewList.initInviteTwitter();
		viewList.loginComplite['invite'] = function() {
			$('#invite-contributors a#post-twitter').removeClass('need-login');
			$('#invite-contributors a#post-facebook').removeClass('need-login');
			/* if(viewList.provider == 'twitter') {
				$('#invite-contributors a#post-facebook').hide();
				$('#invite-contributors a#post-twitter').removeClass('need-login');
			} else if(viewList.provider == 'facebook') {
				$('#invite-contributors #post-twitter').hide();
				$('#invite-contributors #post-facebook').removeClass('need-login');
			} */
		}
	})
	
	$('#invite-contributors a#post-email').click(function(e){
		if($('.user-email:visible').size()) {
			
			$('.email-error').remove();
			if(!$('.invite-emails-to').val() || !$('.invite-email-from').val()) {
				$('<div/>')
					.addClass('email-error')
					.html('insert email')
					.insertAfter($('.invite-emails-to'));
			}
			
			_mails_to = $('.invite-emails-to').val().split(',');
			_mails_from =  $('.invite-email-from').val()
			_mails_test = true;
			for(var a in _mails_to) {
				if(!/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/.test(trim(_mails_to[a]))) _mails_test = false;
			}
			if(!/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/.test(trim(_mails_from))) _mails_test = false;
			
			if(_mails_test){
				hideFader();
				$.blockUI({ message: $("#loading-block") });
				
				$.ajax({
					url : Listiki.baseUrl + "invitations/mail",
					type : "post",
					data: {email_to: $('.invite-emails-to').val() , email_from: $('.invite-email-from').val() , message: $("#invite-contributors textarea").val()},
					dataType: "json",
					success : function(data){
						if(data.send) {
							msg = "mail sent";
						} else{
							msg = "send error";
						}
						
						$("#popup-message").find(".popup-info h3").text(msg);
						$.blockUI({ message: $("#popup-message") }); 
						setTimeout($.unblockUI, 3500);
					}
				});
			} else {
				$('<div/>')
					.addClass('email-error')
					.html('not valid email!')
					.insertAfter($('.invite-emails-to'));
			}
		} else {
			$('.user-email').show();
		}
	});
	
	$('.invite-emails').keypress(function(){
		$('.email-error').remove();
	})
	
	
	$('#invite-contributors a#post-twitter').unbind('click');
	$('#invite-contributors a#post-twitter').click(function(e){
		
		
		if(viewList.provider != 'twitter') {	
			
			link = "http://twitter.com/home?status=" + $("#invite-contributors textarea").val();
			$(this).attr({target:"_blank",href:	link});
			return true;
			
		} else {
			e.preventDefault();
			if(!isLoggedIn()){
				viewList.need_save = true;
				showGigyaLogin();
				
				return false;
			}
			
			if($("#invite-contributors textarea").val().length > 140) {
				return false;
			}
			hideFader();
			
			var statusMessage = $("#invite-contributors textarea").val();

			$.blockUI({ message: $("#loading-block") });

			twSetStatus(statusMessage,viewList.finishSetStatus);
			return true;
		}
	})
	
	$('#invite-contributors a#post-facebook').unbind('click');
	$('#invite-contributors a#post-facebook').click(function(e){
		
		
		if(viewList.provider != 'facebook') {
			
			link = "http://www.facebook.com/sharer.php?u=" + $(this).attr("_link") + "&t=" + $("#invite-contributors textarea").val();
			$(this).attr({target:"_blank",href:	link});
			
			return true;
		} else {
			e.preventDefault();
			if(!isLoggedIn()){
				viewList.need_save = true;
				showGigyaLogin();
				
				return false;
			}
			
			hideFader();
			var statusMessage = $("#invite-contributors textarea").val();

			$.blockUI({ message: $("#loading-block") });

			fbSetStatus(statusMessage,viewList.finishSetStatus);
			return true;
		}
	})
}

viewList.initShare = function(){
		
	$("#share-list-fc").live('click', function(e){
		link = "http://www.facebook.com/sharer.php?u=" + $(this).attr("rel") + "&t=" + $("#share-message textarea").val();
		$(this).attr({target:"_blank",
					  href:	link})
	})
	
	
	$("#share-list-twitter").live('click', function(e){
		link = "http://twitter.com/home?status=" + $("#share-message textarea").val();
		$(this).attr({target:"_blank",
					  href:	link})
	})
	
    $("#share-list,#soc-share-list, .reordered-share-link").live('click', function(e){
        e.preventDefault();
		if (!Listiki.user.id){
			$("#share-message #share-text-link").hide();
			$("#share-message #post-twitter,#share-message #post-facebook").show();
			$("#share-message h3").text("Your message");
		}else{
			$("#share-message #post-twitter,#share-message #post-facebook").hide();
			$("#share-message #share-text-link").show();
			$("#share-message span.provider").text(Listiki.user.provider);
			/*
			$.blockUI({ message: null }); 
			gigya.services.socialize.getUserInfo(GigyaConf,
			{
				callback: function(response){
				if (response.status == "OK"){
					var provider = response.user.loginProvider;
					$("#share-message span.provider").text(provider);
					$.blockUI({ message: $("#share-message") });
				}
				}
			}
			);
			*/
		}
		$.blockUI({ message: $("#share-message") });
		viewList.initShareTwitter();
    });
	
    
    $("a#share-text-link").live('click', function(e){
        e.preventDefault();
		var statusMessage = $("#share-message textarea").val();
        var provider = $("#share-message span.provider").text();
		$.blockUI({ message: $("#loading-block") });
		if(provider=='twitter'){
			twSetStatus(statusMessage,viewList.finishSetStatus);
			return true;
		}
		if(provider=='facebook'){
			fbSetStatus(statusMessage,viewList.finishSetStatus);
			return true;
		}
		/*
        var params =   
            {  
                status: statusMessage,
                useFacebookConnect : true,
                callback : function(response){
                    //window.console.info(response);
                    //alert(response.status)
                    var msg = "Some error with status update happened, please try later";
                    if (response.status == "OK"){
                        msg = "You successfully updated your "+ response.context + " status";
                    }
                    $("#popup-message").find(".popup-info h3").text(msg);
                    $.blockUI({ message: $("#popup-message") }); 
                    setTimeout($.unblockUI, 2000);
                },
                enabledProviders : "facebook,twitter",
                context: provider
            };
        gigya.services.socialize.setStatus(GigyaConf, params);
		*/
    });
    
    $("#side-bar #post-twitter").click(function(e){
		e.preventDefault();
		var message = $("#share-message textarea").text();
		var wnd = window.open('http://twitter.com/home?status='+message);
		$.unblockUI();
    });
    
    $("#side-bar #post-facebook").click(function(e){
		e.preventDefault();
		var message = $("#share-message textarea").text();
		var wnd = window.open('http://www.facebook.com/share.php?u='+message);
		$.unblockUI();
    });
    
    $("#close-share").click(function(e){
        e.preventDefault();
        $.unblockUI();
    });
	
	viewList.loginComplite['share'] = function(){
		var _block = $('#side-bar div.block');
		_block.find('a')
			.removeClass('need-login')
			.unbind('click');
		if(viewList.provider == 'twitter') {
			_block.find('li.twitter a').attr('id', 'share-list');
			_block.find('li.facebook a').attr('id', 'share-list-fc');
		} else {
			_block.find('li.twitter a').attr('id', 'share-list-twitter');
			_block.find('li.facebook a').attr('id', 'share-list');
		}
	}
}

viewList.initFavourite = function(){
    $("#love-list").click(function(e){
        e.preventDefault();
        var listId = $("#master-list-id").text();
        if (!listId){
            return;
        }
		if (!Listiki.user.id){
			/*
			Listiki.gigya_context = {
			function_to_execute : function(){
				$("#love-list").click();
			}
			};
			*/
			return;
		}
		if($(this).hasClass('favorited')){
			$(this).removeClass('favorited');
			//console.log(this);
			$.ajax({
				url: Listiki.baseUrl + "add-to-favourite/remove",
				type: "post",
				dataType: "json",
				data: {list_id : listId},
				success: function(data){
					if (data.success){
						var msg = data['message'];
						$("#popup-message").find(".popup-info h3").text(msg);
						$.blockUI({ message: $("#popup-message") }); 
						setTimeout($.unblockUI, 2000);
					}
				}
			});
		}else{
			$(this).addClass('favorited');
			//console.log(this);
			$.ajax({
				url : Listiki.baseUrl + 'add-to-favourite',
				type : "post",
				dataType : "json",
				data : {list_id : listId },
				success : function(data){
					var msg = data['message'];
					$("#popup-message").find(".popup-info h3").text(msg);
					$.blockUI({ message: $("#popup-message") }); 
					setTimeout($.unblockUI, 2000);
				}
			});
		}
    });
}

viewList.initTitleEdit = function(){
    $(".list-title span.title").click(function(){
        if ($(".title-edit").size() == 0){
            return;
        }
        $(".list-title span.title").hide();
        $(".title-edit").show();
        $("#list-title").attr("value",$(".list-title span.title").text());
    });
    
    $("#cancel-list-title").click(function(e){
        e.preventDefault();
        $(".list-title span.title").show();
        $(".title-edit").hide();
    });
    
    $("#save-list-title").click(function(e){
        e.preventDefault();
        
        var postData = {
            listId : $("#master-list-id").text(),
            title : $("#list-title").val()
        }
        $.ajax({
            url : Listiki.baseUrl + "list/save-title",
            type : "post",
            dataType : "json",
            data : postData,
            success : function(data){
                if (data.success){
                    $("#cancel-list-title").click();
                }
				
                $("#popup-message h3").text(data.message);
                $(".list-title span.title").text( $("#list-title").val() );
                $.blockUI({ message: $("#popup-message") }); 
                setTimeout($.unblockUI, 1000);
            }
        });
    });

}

viewList.validateAddItem = function(){
    var returnValue = true;
    var item_title = $("#list-item-add-field").val();
    if (item_title == ""){
		if ( $("span.item-error").size() == 0 ){
			$("#list-item-add-field").parent().prev().append(' <span class="item-error"> &mdash; The title is required, duh!</span>');
		}
		returnValue = false;
    }else{
		$("span.item-error").remove();
    }
    
    var item_url = $("#list-item-add-url").val();
	if(item_url==$("#list-item-add-url").get(0).defaultValue){
		item_url='';
	}
	if(item_url !="" && item_url.indexOf('http') < 0 && item_url.indexOf('ftp') < 0){
		item_url = 'http://'+item_url;
		$("#list-item-add-url").val(item_url);
	}
    if (item_url != "" && !testUrl(item_url) ){//testUrl in main.js
		if ( $("span.url-error").size() == 0 ){
			$("#list-item-add-url").parent().prev().append('<span class="url-error"> &mdash; There\'s something wrong with that link, and you know it!</span>');
		}
		returnValue = false;
    }else{
		$("span.url-error").remove();
    }
    return returnValue;
}
