var VT = {
	id: "", 
	parent: "", 
	faceboxType: "", 
	faceboxData: [], 
	popupProfiles: {stats: {width: 850, height: 768, resizable: 0, center: 1, status: 0, scrollbars: 1, toolbar: 0}}, 
	submitLockout: false, 
	commentsTemplate: "<li><a href=\"${PROFILELINK}\"><img src=\"${PROFILEIMAGE}\" width=\"40\" height=\"40\" alt=\"Avatar\" border=\"0\" /></a><p><a href=\"${PROFILELINK}\"><strong>${PROFILENAME}</strong></a>&nbsp;${COMMENTS}<span class=\"timestamp\">${TIMESTAMP}</span></p></li>", 
	graphs: {}, 
	account: {
		properties: {
			loggedIn: false, 
			loggedInEmail: ""
		}
	}, 
	utils: {
		properties: {
			commentPosting: false
		}, 
		show_comment_form: 
			function() {
				var strRelID			= $(this).attr("rel");
				
				if ((strRelID) && (strRelID.length)) {
					$("form#frmComments_" + strRelID).find("textarea").val("");
					$("form#frmComments_" + strRelID).slideDown();
					$("div#commentStart_" + strRelID).slideUp();
					
					setTimeout(VT.utils.focus_comment_form, 500, strRelID);
				}
			}, 
			
		hide_comment_form: 
			function() {
				var strRelID			= $(this).attr("rel");
				
				if ((strRelID) && (strRelID.length)) {
					$("form#frmComments_" + strRelID).slideUp();
					$("div#commentStart_" + strRelID).slideDown();
				}
			}, 

		hide_comment_form_by_id: 
			function(intNoteID) {
				$("form#frmComments_" + intNoteID).slideUp();
				$("div#commentStart_" + intNoteID).slideDown();
			}, 
			
		focus_comment_form: 
			function(strFormID) {
				$("#txtComments_" + strFormID)[0].focus();
			}, 
			
		post_comment: 
			function() {
				if (!VT.utils.properties.commentPosting) {
					var objElementComment	= $(this).siblings("textarea");
					var objElementID		= $(this).siblings("input[name='id']");
					var objElementType		= $(this).siblings("input[name='type']");
					
					if ((objElementComment) && (objElementID) && (objElementType)) {
						VT.utils.properties.commentPosting	= true;
						
						// post the comment
						$.ajax({
							type: "POST",
							url: "/community/?view=post-comment", 
							data: { 
								"intNoteType": $(objElementType).val(), 
								"intNoteID": $(objElementID).val(), 
								"txtComment": $(objElementComment).val()
							}, 
							dataType: "json",
							cache: false,
							success: VT.utils.show_comment
						});
					}
				}
			}, 
			
		show_comment: 
			function(objData) {
				VT.utils.properties.commentPosting	= false;
				
				if ((objData) && (objData.result) && (objData.result.noteid) && (objData.result.profileid) && (objData.result.noteid > 0) && (objData.result.profileid > 0)) {
					var objCommentTree			= $("#frmComments_" + objData.result.noteid).siblings("ul");
					
					// make a copy
					var htmlCommentNode			= VT.commentsTemplate;
					
					// perform replacements
					htmlCommentNode				= htmlCommentNode.replace(/\${PROFILELINK}/g, "/community/user/" + objData.result.profileid + "/");
					htmlCommentNode				= htmlCommentNode.replace(/\${PROFILEIMAGE}/g, ((objData.result.image.length) ? ("https://stage.vinotrac.com/_content/_profile/" + objData.result.image) : "/_images/_elements/avatar_thumb_dummy.gif"));
					htmlCommentNode				= htmlCommentNode.replace(/\${PROFILENAME}/g, objData.result.name);
					htmlCommentNode				= htmlCommentNode.replace(/\${COMMENTS}/g, objData.result.text);
					htmlCommentNode				= htmlCommentNode.replace(/\${TIMESTAMP}/g, objData.result.datetime);
						
					// add it to the tree
					if (objCommentTree.length) {
						$(objCommentTree).append(htmlCommentNode);
					} else {
						$("#frmComments_" + objData.result.noteid).before("<ul>" + htmlCommentNode + "</ul>");
					}
					
					VT.utils.hide_comment_form_by_id(objData.result.noteid);
				} else {
					alert("Sorry, but you must be logged in to post comments.");
				}
			}
	}, 
	forms: {
		post_process: 
			function() {
				var objContainer;
				var boolFound;
				
				if ((VT.validation.data.all.length) && (VT.validation.data.failed.length)) {
					for (var numCounter = 0; numCounter < VT.validation.data.all.length; numCounter++) {
						boolFound			= false;
						
						for (var numCounterInner = 0; numCounterInner < VT.validation.data.failed.length; numCounterInner++) {
							if (VT.validation.data.failed[numCounterInner] == VT.validation.data.all[numCounter]) {
								// failed, so slide down the error msg
								boolFound			= true;
							}
						}
						
						objContainer			= $("#" + VT.validation.data.curform + " #" + VT.validation.data.all[numCounter]).parents("div.row");
						
						if ($(objContainer).val() == undefined) {
							// maybe it's a radio button?
							objContainer			= $("#" + VT.validation.data.curform + " input[name='" + VT.validation.data.all[numCounter] + "']").parents("div.row");
						}
						
						if (objContainer) {
							if (boolFound) {
								$(objContainer).find("div.errorMsg").slideDown();
								$(objContainer).addClass("error");
							} else {
								$(objContainer).find("div.errorMsg").slideUp();
								$(objContainer).removeClass("error");
							}
						}
					}
				} else {
					// reset all
					$("#" + VT.validation.data.curform + " div.row div.errorMsg").slideUp();
					$("#" + VT.validation.data.curform + " div.row").removeClass("error");
				}
			}
	}
};
