/*
	Forums AJAX object
*/
var ForumXHR = { 
 	country: false,
 	category: false, 	
 	page: 0, 	
    handleSuccess:function(o){ 
        this.processResult(o); 
    }, 
 
    handleFailure:function(o){}, 
 
    processResult:function(o){ 
		var categoryEl = document.getElementById('forum_category_' + this.category);
		categoryEl.innerHTML = o.responseText;
    }, 
 
    startRequest:function() { 
       YAHOO.util.Connect.asyncRequest('GET', '/forums/'+ this.country + '/list/' + this.category + '/page/' + this.page, callback); 
    } 
 
}; 

/*
	AJAX callbacks
*/
var callback = 
{ 
    success:ForumXHR.handleSuccess, 
    failure:ForumXHR.handleFailure, 
    cache:false,
    scope: ForumXHR 
}; 

/*
	Retrieves a page's worth of forums in a country->category
*/
function fetchForums(country, category)
{
	var containerId = 'forum_category_' + category;
	var containerEl = document.getElementById(containerId);
	if(containerEl && containerEl.innerHTML == '')
	{
		// show wheel
		containerEl.innerHTML = '<p style="text-align:center"><img src="' + imagesUrl+ '/loading.gif"></p>';
		ForumXHR.country = country;
		ForumXHR.category = category;	
		ForumXHR.startRequest();
	}
	return false;
}


/****************************START OF REPORTING FLAG POST TO CS**************************************************************
/*
Ajax for reporting the flag post to CS
*/

var FlagPostXHR = { 
 	postId: false, 	
 	topicId: false, 	 	
 	forumId: false, 	 	
 	origLink: false,
 	flagLinkSpan: false,
    handleSuccess:function(o){ 
        this.processResult(o); 
    }, 
 
    handleFailure:function(o){
    	this.flagLinkSpan.innerHTML = this.origLink;
    }, 
 
    processResult:function(o){ 
    	if(o.responseText == 'OK'){
			this.flagLinkSpan.innerHTML = Locale.getString('reportedUser');
			document.getElementById('reportedpost_'+FlagPostXHR.postId+"_"+FlagPostXHR.topicId+"_"+FlagPostXHR.forumId).style.display = "none";
			document.getElementById('space_reportedpost_'+FlagPostXHR.postId+"_"+FlagPostXHR.topicId+"_"+FlagPostXHR.forumId).style.display = "none";
		}	
		else
		{
			this.flagLinkSpan.innerHTML = Locale.getString('reportedPostFailed');
		}	
			
    }, 
 
    startRequest:function() { 
       flagForm = YAHOO.util.Dom.get('flagPostForm');
       post_to = flagForm.action;
       YAHOO.util.Connect.setForm(flagForm);
       var c = YAHOO.util.Connect.asyncRequest('POST', post_to, flagCallback);
    } 
 
}; 

/*
Ajax for reporting the flag post to CS
*/

var RemoveFlagPostXHR = { 
 	postId: false, 	
 	topicId: false, 	 	
 	forumId: false, 	 	
 	origLink: false,
 	flagLinkSpan: false,
    handleSuccess:function(o){ 
        this.processResult(o); 
    }, 
 
    handleFailure:function(o){
    	this.flagLinkSpan.innerHTML = this.origLink;
    }, 
 
    processResult:function(o){ 
    	if(o.responseText == 'OK'){
			document.getElementById('reportedpost_'+RemoveFlagPostXHR.postId+"_"+RemoveFlagPostXHR.topicId+"_"+RemoveFlagPostXHR.forumId).style.display = "none";
			document.getElementById('space_reportedpost_'+RemoveFlagPostXHR.postId+"_"+RemoveFlagPostXHR.topicId+"_"+RemoveFlagPostXHR.forumId).style.display = "none";
		}	
		else
		{
			this.flagLinkSpan.innerHTML = Locale.getString('removeFlagPostFailed');
		}	
			
    }, 
 
    startRequest:function() { 
       removeflagForm = YAHOO.util.Dom.get('removeFlagPostForm');
       post_to = removeflagForm.action;
       YAHOO.util.Connect.setForm(removeflagForm);
       var c = YAHOO.util.Connect.asyncRequest('POST', post_to, RemoveflagCallback);
    } 
 
};


/*
	AJAX callbacks
*/
var flagCallback = 
{ 
    success:FlagPostXHR.handleSuccess, 
    failure:FlagPostXHR.handleFailure, 
    cache:false,
    scope: FlagPostXHR 
}; 

var RemoveflagCallback = 
{ 
    success:RemoveFlagPostXHR.handleSuccess, 
    failure:RemoveFlagPostXHR.handleFailure, 
    cache:false,
    scope: RemoveFlagPostXHR 
}; 


function flagPosttoCS(postId, topicId,forumId)
{
	if(postId) {
		// show wheel
		//containerEl.innerHTML = '<p style="text-align:center"><img src="' + imagesUrl+ '/loading.gif"></p>';
		document.getElementById('post_id').value = postId;
		document.getElementById('topic_id').value = topicId;
		document.getElementById('forum_id').value = forumId;
		var flagLinkSpan = document.getElementById('flagLink_'+postId+"_"+topicId+"_"+forumId);
		var tmpFlagLink = flagLinkSpan.innerHTML;
		
		flagLinkSpan.innerHTML = '<img src="' + imagesUrl+ '/loading.gif">' + Locale.getString('reportingPost');
		FlagPostXHR.postId = postId;			
		FlagPostXHR.topicId = topicId;			
		FlagPostXHR.forumId = forumId;			
		FlagPostXHR.origLink = tmpFlagLink;					
		FlagPostXHR.flagLinkSpan = flagLinkSpan;		
		FlagPostXHR.startRequest();
	}
	return false;
}

function removeFlagPost(postId, topicId, forumId, reasonId)
{
	if(postId) {
		// show wheel
		//containerEl.innerHTML = '<p style="text-align:center"><img src="' + imagesUrl+ '/loading.gif"></p>';
		document.getElementById('remove_post_id').value = postId;
		document.getElementById('remove_topic_id').value = topicId;
		document.getElementById('remove_forum_id').value = forumId;
        document.getElementById('remove_reason_id').value = reasonId;
		var flagLinkSpan = document.getElementById('removeFlagLink_'+postId+"_"+topicId+"_"+forumId);
		var tmpFlagLink = flagLinkSpan.innerHTML;
		
		flagLinkSpan.innerHTML = '<img class="remove_flag_link" src="' + imagesUrl+ '/loading.gif">' + Locale.getString('reportingPost');
		RemoveFlagPostXHR.postId = postId;			
		RemoveFlagPostXHR.topicId = topicId;			
		RemoveFlagPostXHR.forumId = forumId;			
		RemoveFlagPostXHR.origLink = tmpFlagLink;					
		RemoveFlagPostXHR.flagLinkSpan = flagLinkSpan;		
		RemoveFlagPostXHR.startRequest();
	}
	return false;
}

/****************************END OF REPORTING FLAG POST TO CS**************************************************************/

var FS = FS || {};
FS.Forums = FS.Forums || {};
FS.Forums.Topics = function() {
    var forumsContainer = 'forumsMain';
    var checkboxClass = 'topic_checkbox';
    var selectLinkId = 'selectAll';
    
    var Dom = YAHOO.util.Dom;
    var Event = YAHOO.util.Event;
    
    var locale = Locale.getLocale();
    var selectLabel = Locale.getString('selectAll', locale);
    var unSelectLabel = Locale.getString('unselectAll', locale);
    
    return {
        init: function() {
            Event.on(Dom.get(selectLinkId), 'mousedown', this.toggleSelect, this, true);
        },
        toggleSelect: function(e) {
            
            var checkboxes = Dom.getElementsByClassName(checkboxClass, 'input', forumsContainer);
            var labelContainer = Dom.get(selectLinkId);
            var label = labelContainer.innerHTML;
            
            if (label === selectLabel) {
                labelContainer.innerHTML = unSelectLabel;
            }
            else {
                labelContainer.innerHTML = selectLabel;
            }
            
            for (var i = 0; i< checkboxes.length; i++) {
	            if (label === selectLabel) {
	                checkboxes[i].checked = true;
	            }
	            else {
	                checkboxes[i].checked = false;
	            }
            }
            Event.stopEvent(e);
            return false;
        }
    };
}();
