// Generic commenting/reviewing methods:
var Commenting = {
    // Validate and submit a comment
    submitComment: function() {
        var eleTitle  = $('CommentTitle');
        var eleText   = $('CommentText');
        var intRating = ($('CommentRating')) ? $F('CommentRating') : 0; // Rating not always defined
        
        var booPassed = true;
        if (!eleTitle.present()) {
            FormValidation.showError(eleTitle, 'Please enter a title');   
            booPassed = false;
        } else if (eleTitle.value.length > 128) {
            FormValidation.showError(eleTitle, 'Please enter a shorter title');   
            booPassed = false;
        } else {
            FormValidation.removeError(eleTitle);
        }
        if (!eleText.present()) {
            FormValidation.showError(eleText, 'Please enter some text');   
            booPassed = false;
        } else {
            FormValidation.removeError(eleText);
        }
        
        if (booPassed) {
            xajax_addCommentAndReload(intRating, eleTitle.value, eleText.value);
        }
        return false;
    }
}

// Forum methods

// Form methods
var Threads = {
    // Validate and submit
    createNew: function() {
        var eleTitle  = $('ThreadTitle');
        var eleText   = $('ThreadDescription');
        
        var booPassed = true;
        if (!eleTitle.present()) {
            FormValidation.showError(eleTitle, 'Please enter a title for your thread');   
            booPassed = false;
        } else if (eleTitle.value.length > 255) {
            FormValidation.showError(eleTitle, 'Please enter a shorter title for your thread');   
            booPassed = false;
        } else {
            FormValidation.removeError(eleTitle);
        }
        if (!eleText.present()) {
            FormValidation.showError(eleText, 'Please enter a description for your thread');   
            booPassed = false;
        } else {
            FormValidation.removeError(eleText);
        }
        
        if (booPassed) {
            xajax_createThread(eleTitle.value, eleText.value);
        }
        return false;
    }
}

// Blogging methods
var Blogging = {
    registerAutocompleter: function() {
        var objTagComplete = new Ajax.Autocompleter(
            'TagQuery', 
            'TagSuggestions', 
            '/autocomplete/get_tag_suggestions.tao', 
            {
                updateElement:  Blogging.addTag
            }
        );
    },    
    addTag: function() {
        var eleFirstLi = $A(arguments).first();
        var strType    = $w(eleFirstLi.className).first();
		if ('NewTag' == strType) {
			var strTagName = eleFirstLi.select('span.autocomplete_friendly_title').first().innerHTML;
			xajax_addNewUserTag(strTagName);
		} else {
			var intId = eleFirstLi.select('span.autocomplete_id').first().innerHTML;
			xajax_displayBlogTag(strType, intId);
		}
		BordersEffects.alert("Tag added to article");
        $('TagQuery').clear().focus();
	},
	saveArticle: function() {
        var eleTitle  = $('ArticleTitle');
		// Validate form
        var booPassed = true;
        if (!eleTitle.present()) {
            FormValidation.showError(eleTitle, 'Please enter a title for your article');   
            booPassed = false;
        } else if ($F(eleTitle).length > 255) {
            FormValidation.showError(eleTitle, 'Please enter a shorter title for your article');   
            booPassed = false;
        } else {
            FormValidation.removeError(eleTitle);
        }
		// Submit if valid
        if (booPassed) {
			tinyMCE.triggerSave();
            xajax_saveArticle(xajax.getFormValues('NewArticleForm'));
        }
        return false;
    }  
}
