// JavaScript Document

$(document).ready(function() {
	$('.header-logo').mouseover(function() { $('.header-logo img').attr('src', '/media/images/header-logo-hover.png'); });
	$('.header-logo').mouseout(function() { $('.header-logo img').attr('src', '/media/images/header-logo.png'); });
	
	$('#suUname').keyup(function() {
		var uname = $(this).val();
		$('#suUnameURL').html(uname);
	});
	
	$('#settAccUname').keyup(function() {
		var uname = $(this).val();
		$('#settAccUnameURL').html(uname);
	});
	
	$('#postTitle').keyup(function() {
		var postTitle = $(this).val();
		$('#postTitleCount').html(200 - postTitle.length);
	});
	
	$('#postBody').keyup(function() {
		var postBody = $(this).val();
		$('#postBodyCount').html(4000 - postBody.length);
	});
	
	$('#commentBody').keyup(function() {
		var commentBody = $(this).val();
		$('#commentBodyCount').html(2000 - commentBody.length);
	});
	
	$('#settDetAccAboutMe').keyup(function() {
		var commentBody = $(this).val();
		$('#settDetAccAboutMeCount').html(200 - commentBody.length);
	});
	
	$('.photoLinkFb').fancybox({
		'margin': 0,
		'transitionIn': 'none',
		'transitionOut': 'none',
		'speedIn': 400,
		'speedOut': 400,
		'autoScale': true
	});
	
	$('.aLinkFancybox').fancybox({
		'margin': 0,
		'transitionIn': 'none',
		'transitionOut': 'none',
		'speedIn': 400,
		'speedOut': 400,
		'autoScale': true
	});
	
	$('#linkUserPosts').click(function() {
		$(this).removeClass('inactive'); $('#linkFavoritePosts').addClass('inactive');
		$('#userPosts').slideDown(); $('#favoritePosts').slideUp();
	});
	
	$('#linkFavoritePosts').click(function() {
		$(this).removeClass('inactive'); $('#linkUserPosts').addClass('inactive');	
		$('#userPosts').slideUp(); $('#favoritePosts').slideDown();
	});
	
	$('[id^=toggleReplies]').click(function() {
		elId = $(this).attr('id');
		commentId = elId.substring(13);
		if($('#toggleReplies'+commentId+' input').val() == 1) {
			$('#toggleReplies'+commentId+' input').val(0)
			$('#toggleReplies'+commentId+' span').html('Show replies')
			$('#replies'+commentId).hide();
		}
		else if($('#toggleReplies'+commentId+' input').val() == 0) {
			$('#toggleReplies'+commentId+' input').val(1)
			$('#toggleReplies'+commentId+' span').html('Hide replies')
			$('#replies'+commentId).show();
		}
	});
	
	$('input[id^=comment]').click(function() {
		if($(this).val() == 'Email' || $(this).val() == 'First Name' || $(this).val() == 'Last Name') {
			$(this).val('');
		}
	});
});

function signUpSubmit() {
	$('[id$=Msg]').each(function() {
		$(this).html('');
	});
	
	var errCnt = 0;
	$('input[id^=su]').each(function() {
		var elId = $(this).attr('id');
		if($(this).val() == '') {
			$('#'+elId+'Msg').addClass('red').html('Required field is missing');
			errCnt++;
		}
	});
	
	if(!isDate($('#dobMonth').val(), $('#dobDay').val(), $('#dobYear').val())) {
		$('#doBMsg').addClass('red').html('Please enter a valid date');
		errCnt++;
	}
	
	if(!errCnt) {
		email = $('#suEmail').val();
		uname = $('#suUname').val();
		pass = $('#suPass').val();
		confPass = $('#suConfPass').val();
		fName = $('#suFName').val();
		lName = $('#suLName').val();
		dob = $('#dobMonth').val()+'/'+$('#dobDay').val()+'/'+$('#dobYear').val();
		invitationId = $('#invitationId').val();
		
		if(!isEmail(email)) {
			$('#suEmailMsg').addClass('red').html('Please enter a valid email');
		}
		else if(uname.length < 5) {
			$('#suUnameMsg').addClass('red').html('Username must be more than 5 characters');
		}
		else if(!isUname(uname)) {
			$('#suUnameMsg').addClass('red').html('Username must begin with an alphabet');
		}
		else if(pass.length < 5) {
			$('#suPassMsg').addClass('red').html('Password must be more than 5 characters');
		}
		else if(!isPass(pass)) {
			$('#suPassMsg').addClass('red').html('Password can contain alphabets and numbers only');
		}
		else if(pass != confPass) {
			$('#suPassMsg').addClass('red').html('Passwords do not match');
			$('#suConfPassMsg').addClass('red').html('Passwords do not match');
		}
		else if(!$('input:checked').val()) {
			$('#toSMsg').addClass('red').html('Please accept the Pink Pangea terms of service');
		}
		else {
			var req = $.ajax({
				type: 'POST',
				url: '/app/process/signUpSubmit.php',
				data: {
					email: email,
					uname: uname,
					pass: pass,
					fName: fName,
					lName: lName,
					dob: dob,
					invitationId: invitationId
				},
				beforeSend: function() {
					$('#btnSubmit').attr({'disabled' : 'disabled'});
					$('#btnSubmitMsg').addClass('green').html('Working...');
				},
				success: processRequest
			});
		}
	}
	
	function processRequest() {
		$('#btnSubmit').removeAttr('disabled');
		$('#btnSubmitMsg').removeClass('green').html('');
		switch(req.responseText) {
			case 'su_success':
			$('#btnSubmitMsg').addClass('green').html('Success! An activation email has been sent to you. Please check your inbox.');
			break;
			case 'su_fail':
			$('#btnSubmitMsg').addClass('red').html('Sign up has failed due to an unknown reason. Please try again.');
			break;
			case 'su_email_exists':
			$('#btnSubmitMsg').addClass('red').html('The email address you have entered already exists. Pleasy try again.');
			break;
			case 'su_uname_exists':
			$('#btnSubmitMsg').addClass('red').html('The username you have entered already exists. Pleasy try again.');
			break;
			case 'error':
			$('#btnSubmitMsg').addClass('red').html('An unknown error has occured. Pleasy try again.');
			break;
			default:
			$('#btnSubmitMsg').addClass('red').html(req.responseText);
			break;
		}
	}
}

function loginSubmit() {
	$('[id$=Msg]').each(function() {
		$(this).html('');
	});
	
	var errCnt = 0;
	$('input[id^=lo]').each(function() {
		var elId = $(this).attr('id');
		if($(this).val() == '') {
			$('#'+elId+'Msg').addClass('red').html('Required field is missing');
			errCnt++;
		}
	});
	
	if(!errCnt) {
		var uname = $('#loUname').val();
		var pass = $('#loPass').val();
		var remember = ($('input:checked').val()) ? true : false;
		
		var req = $.ajax({
			type: 'POST',
			url: '/app/process/loginSubmit.php',
			data: {
				uname: uname,
				pass: pass,
				remember: remember
			},
			beforeSend: function() {
				$('#btnSubmit').attr({'disabled' : 'disabled'});
				$('#btnSubmitMsg').addClass('green').html('Working...');
			},
			success: processRequest
		});
	}
	
	function processRequest() {
		$('#btnSubmit').removeAttr('disabled');
		$('#btnSubmitMsg').removeClass('green').html('');
		switch(req.responseText) {
			case 'lo_success':
			window.location = '/';
			break;
			case 'lo_fail':
			$('#btnSubmitMsg').addClass('red').html('You have entered an invalid username or password. Pleasy try again.');
			break;
			case 'error':
			$('#btnSubmitMsg').addClass('red').html('An unknown error has occured. Pleasy try again.');
			break;
		}
	}
}

function postSubmit() {
	$('[id$=Msg]').each(function() {
		$(this).html('');
	});
	
	var returnedPostId = $('#returnedPostId').val();
	if(returnedPostId == '') {
		alert('Each post must contain a photo. Please upload a photo.');
	}
	else{
		var errCnt = 0;
		$('select[id^=post], input[id^=post], textarea[id^=post]').each(function() {
			var elId = $(this).attr('id');
			if($(this).val() == '') {
				$('#'+elId+'Msg').addClass('red').html('Required field is missing');
				errCnt++;
			}
		});
		
		if(!errCnt) {
			var postTitle = $('#postTitle').val();
			var postBody = $('#postBody').val();
			var postCountry = $('#postCountry').val();
			var postTags = $('#postTags').val();
					
			if(postTitle.length < 10) {
				$('#postTitleMsg').addClass('red').html('Post title is too short');
			}
			else if(!isPostTitle(postTitle)) {
				$('#postTitleMsg').addClass('red').html('Post title must start with an alphabet');
			}
			else if(postBody.length < 200) {
				$('#postBodyMsg').addClass('red').html('Post is too short');
			}
			else if(postBody.length < 20) {
				$('#postTagsMsg').addClass('red').html('Tags are too few');
			}
			else if(!isPostTags(postTags)) {
				$('#postTagsMsg').addClass('red').html('Tags can contain only alphabets, numbers, commas and spaces. We\'re working on the rest!');
			}
			else {
				postBody = postBody.replace(new RegExp('\\n', 'g'), '<br />');
				var req = $.ajax({
					type: 'POST',
					url: '/app/process/postSubmit.php',
					data: {
						postId: returnedPostId,
						country: postCountry,
						title: postTitle,
						body: postBody,
						tags: postTags
					},
					beforeSend: function() {
						$('#btnSubmit').attr({'disabled' : 'disabled'});
						$('#btnSubmitMsg').addClass('green').html('Working...');
					},
					error: function(res) {
						alert(res.responseText);
						$('#btnSubmitMsg').removeClass('green').addClass('red').html('An unknown error has occurred. Please try again.');
					},
					success: processRequest
				});
			}
		}
	}
	
	function processRequest() {
		$('#btnSubmit').removeAttr('disabled');
		$('#btnSubmitMsg').removeClass('green').html('');
		switch(req.responseText) {
			case 'post_success':
			$('#btnSubmitMsg').addClass('green').html('Successfully posted!');
			setTimeout("window.location.reload()", 5000);
			break;
			case 'post_fail':
			$('#btnSubmitMsg').addClass('red').html('Posting has failed. Please try again.');
			break;
			case 'error':
			$('#btnSubmitMsg').addClass('red').html('An unknown error has occurred. Please try again.');
			break;
			default:
			$('#btnSubmitMsg').addClass('red').html(req.responseText);
			break;
		}
	}
}

function toggleFavoritePost(postId) {
	var req = $.ajax({
		type: 'POST',
		url: '/app/process/toggleFavoritePost.php',
		data: {
			postId: postId
		},
		success: processRequest
	});
	
	function processRequest() {
		switch(req.responseText) {
			case 'success_mark':
			$('#favImg'+postId).attr({'src' : '/media/images/favorite-marked.png'});
			$('#favLink'+postId).html('Unmark as favorite');
			break;
			case 'success_unmark':
			$('#favImg'+postId).attr({'src' : '/media/images/favorite.png'});
			$('#favLink'+postId).html('Mark as favorite');
			break;
			case 'fail':
			alert('This operation has failed. Please try again.');
			break;
			case 'error':
			alert('An unknown error has occurred. Please try again.');
			break;
		}
	}
}

function commentSubmit(postId) {
	$('[id$=Msg]').each(function() {
		$(this).html('');
	});
	
	var errCnt = 0;
	$('textarea[id^=comment]').each(function() {
		var elId = $(this).attr('id');
		if($(this).val() == '') {
			$('#'+elId+'Msg').addClass('red').html('Required field is missing');
			errCnt++;
		}
	});
	
	if(!errCnt) {
		var commentBody = $('#commentBody').val();
		
		if(commentBody.length < 10) {
			$('#commentBodyMsg').addClass('red').html('Comment is too short');
		}
		else if(!isComment(commentBody)) {
			$('#commentBodyMsg').addClass('red').html('Comment can contain only alphabets, numbers and ., ,, -, :, ;, \', ", !, ?, (, and ). We\'re working on the rest!');
		}
		else {
			var replyTo = $('#replyTo').val();
			var req = $.ajax({
				type: 'POST',
				url: '/app/process/commentSubmit.php',
				data: {
					postId: postId,
					commentBody: commentBody,
					replyTo: replyTo
				},
				beforeSend: function() {
					$('#btnSubmit').attr({'disabled' : 'disabled'});
					$('#btnSubmitMsg').addClass('green').html('Working...');
				},
				success: processRequest
			});
		}
	}
	
	function processRequest() {
		$('#btnSubmit').removeAttr('disabled');
		$('#btnSubmitMsg').removeClass('green').html('');
		switch(req.responseText) {
			case 'comment_success':
			$('#btnSubmitMsg').addClass('green').html('Comment posted successfully!');
			setTimeout('window.location.reload()', 3000);
			break;
			case 'comment_fail':
			$('#btnSubmitMsg').addClass('red').html('There was an error. Pleas try again.');
			break;
			case 'error':
			$('#btnSubmitMsg').addClass('red').html('An unknown error has occurred. Please try again.');
			break;
			default:
			$('#btnSubmitMsg').addClass('red').html(req.responseText);
			break;
		}
	}
}

function commentPublicSubmit(postId) {
	$('[id$=Msg]').each(function() {
		$(this).html('');
	});
	
	$('input[id^=comment]').each(function() {
		if($(this).val() == 'Email' || $(this).val() == 'First Name' || $(this).val() == 'Last Name') {
			$(this).val('');
		}
	});
	
	var errCnt = 0;
	
	$('input[id^=comment], textarea[id^=comment]').each(function() {
		var elId = $(this).attr('id');
		if($(this).val() == '') {
			$('#'+elId+'Msg').addClass('red').html('Required field is missing');
			errCnt++;
		}
	});
	
	if(!errCnt) {
		var commentEmail = $('#commentEmail').val();
		var commentFName = $('#commentFName').val();
		var commentLName = $('#commentLName').val();
		var commentBody = $('#commentBody').val();
		
		if(!isEmail(commentEmail)) {
			$('#commentEmailMsg').addClass('red').html('Please enter a valid email');
		}
		else if(commentBody.length < 10) {
			$('#commentBodyMsg').addClass('red').html('Comment is too short');
		}
		else if(!isComment(commentBody)) {
			$('#commentBodyMsg').addClass('red').html('Comment can contain only alphabets, numbers and ., ,, -, :, ;, \', ", !, ?, (, and ). We\'re working on the rest!');
		}
		else {
			var replyTo = $('#replyTo').val();
			var req = $.ajax({
				type: 'POST',
				url: '/app/process/commentPublicSubmit.php',
				data: {
					postId: postId,
					commentEmail: commentEmail,
					commentFName: commentFName,
					commentLName: commentLName,
					commentBody: commentBody,
					replyTo: replyTo
				},
				beforeSend: function() {
					$('#btnSubmit').attr({'disabled' : 'disabled'});
					$('#btnSubmitMsg').addClass('green').html('Working...');
				},
				success: processRequest
			});
		}
	}
	
	function processRequest() {
		$('#btnSubmit').removeAttr('disabled');
		$('#btnSubmitMsg').removeClass('green').html('');
		switch(req.responseText) {
			case 'comment_success':
			$('#btnSubmitMsg').addClass('green').html('Comment posted successfully! You comment will be moderated and will appear shortly.');
			setTimeout('window.location.reload()', 3000);
			break;
			case 'comment_fail':
			$('#btnSubmitMsg').addClass('red').html('There was an error. Pleas try again.');
			break;
			case 'error':
			$('#btnSubmitMsg').addClass('red').html('An unknown error has occurred. Please try again.');
			break;
			default:
			$('#btnSubmitMsg').addClass('red').html(req.responseText);
			break;
		}
	}
}

function setReplyTo(commentId) {
	$('#replyTo').val(commentId);
}

function flagComment(commentId) {
	if(commentId == '') {
		alert('Error flagging comment');
	}
	else {
		if(confirm('Are you sure you want to flag this comment?')) {
			var req = $.ajax({
				type: 'POST',
				url: '/app/process/flagComment.php',
				data: {
					commentId: commentId
				},
				success: processRequest
			});
		}
	}
	
	function processRequest() {
		switch(req.responseText) {
			case 'flag_success':
			$('#flag'+commentId).addClass('green').html('Comment flagged');
			break;
			case 'flag_fail':
			alert('There was an error. Pleas try again.');
			break;
			case 'error':
			alert('An unknown error has occurred. Please try again.');
			break;
			default:
			alert(req.responseText);
			break;
		}
	}
}

function deleteComment(commentId) {
	if(commentId == '') {
		alert('Error deleting comment');
	}
	else {
		if(confirm('Are you sure you want to delete this comment?')) {
			var req = $.ajax({
				type: 'POST',
				url: '/app/process/deleteComment.php',
				data: {
					commentId: commentId
				},
				success: processRequest
			});
		}
	}
	
	function processRequest() {
		switch(req.responseText) {
			case 'success':
			$('#delete'+commentId+' a').addClass('green').html('Comment deleted');
			window.location.reload();
			break;
			case 'fail':
			alert('There was an error. Pleas try again.');
			break;
			case 'error':
			alert('An unknown error has occurred. Please try again.');
			break;
			default:
			alert(req.responseText);
			break;
		}
	}
}

function approvePost(postId) {
	if(postId == '') {
		alert('Error approving post');
	}
	else {
		if(confirm('Are you sure you want to approve this post?')) {
			var req = $.ajax({
				type: 'POST',
				url: '/app/process/approvePost.php',
				data: {
					postId: postId
				},
				success: processRequest
			});
		}
	}
	
	function processRequest() {
		alert(1);
		switch(req.responseText) {
			case 'success':
			$('#approvePost a').addClass('green').html('Post approved');
			window.location.reload();
			break;
			case 'fail':
			alert('There was an error. Pleas try again.');
			break;
			case 'error':
			alert('An unknown error has occurred. Please try again.');
			break;
			default:
			alert(req.responseText);
			break;
		}
	}
}

function approveComment(commentId) {
	if(commentId == '') {
		alert('Error approving comment');
	}
	else {
		if(confirm('Are you sure you want to approve this comment?')) {
			var req = $.ajax({
				type: 'POST',
				url: '/app/process/approveComment.php',
				data: {
					commentId: commentId
				},
				success: processRequest
			});
		}
	}
	
	function processRequest() {
		switch(req.responseText) {
			case 'success':
			$('#approve'+commentId+' a').addClass('green').html('Comment approved');
			window.location.reload();
			break;
			case 'fail':
			alert('There was an error. Pleas try again.');
			break;
			case 'error':
			alert('An unknown error has occurred. Please try again.');
			break;
			default:
			alert(req.responseText);
			break;
		}
	}
}

function changePassword() {
	$('[id$=Msg]').each(function() {
		$(this).html('');
	});
	
	var errCnt = 0;
	$('input[id^=settPass]').each(function() {
		var elId = $(this).attr('id');
		if($(this).val() == '') {
			$('#'+elId+'Msg').addClass('red').html('Required field is missing');
			errCnt++;
		}
	});
	
	if(!errCnt) {
		currPass = $('#settPassCurrent').val();
		pass = $('#settPassNew').val();
		confPass = $('#settPassConfNew').val();
		
		if(currPass.length < 5) {
			$('#settPassCurrentMsg').addClass('red').html('Password must be more than 5 characters');
		}
		else if(pass.length < 5) {
			$('#settPassNewMsg').addClass('red').html('Password must be more than 5 characters');
		}
		else if(!isPass(pass)) {
			$('#settPassNewMsg').addClass('red').html('Password can contain alphabets and numbers only');
		}
		else if(pass != confPass) {
			$('#settPassNewMsg').addClass('red').html('Passwords do not match');
			$('#settPassConfNewMsg').addClass('red').html('Passwords do not match');
		}
		else {
			var req = $.ajax({
				type: 'POST',
				url: '/app/process/changePassword.php',
				data: {
					currPass: currPass,
					pass: pass
				},
				beforeSend: function() {
					$('#btnSettPassSubmit').attr({'disabled' : 'disabled'});
					$('#btnSettPassSubmitMsg').addClass('green').html('Working...');
				},
				success: processRequest
			});
		}
	}
	
	function processRequest() {
		$('#btnSettPassSubmit').removeAttr('disabled');
		$('#btnSettPassSubmitMsg').removeClass('green');
		switch(req.responseText) {
			case 'password_change_success':
			$('#btnSettPassSubmitMsg').addClass('green').html('Password updated successfully!');
			setTimeout('window.location.reload()', 3000);
			break;
			case 'password_change_fail':
			$('#btnSettPassSubmitMsg').addClass('red').html('There was an error. Pleas try again.');
			break;
			case 'invalid_curr_pass':
			$('#btnSettPassSubmitMsg').addClass('red').html('Current password you have entered is invalid.');
			break;
			case 'error':
			$('#btnSettPassSubmitMsg').addClass('red').html('An unknown error has occurred. Please try again.');
			break;
			default:
			$('#btnSettPassSubmitMsg').addClass('red').html(req.responseText);
			break;
		}
	}
}

function changeAccount() {
	$('[id$=Msg]').each(function() {
		$(this).html('');
	});
	
	var errCnt = 0;
	$('input[id^=settAcc]').each(function() {
		var elId = $(this).attr('id');
		if($(this).val() == '') {
			$('#'+elId+'Msg').addClass('red').html('Required field is missing');
			errCnt++;
		}
	});
	
	if(!isDate($('#settAccDobMonth').val(), $('#settAccDobDay').val(), $('#settAccDobYear').val())) {
		$('#settAccDobMsg').addClass('red').html('Please enter a valid date');
		errCnt++;
	}
	
	if(!errCnt) {
		email = $('#settAccEmail').val();
		uname = $('#settAccUname').val();
		fName = $('#settAccFName').val();
		lName = $('#settAccLName').val();
		dob = $('#settAccDobMonth').val()+'/'+$('#settAccDobDay').val()+'/'+$('#settAccDobYear').val();
		
		if(!isEmail(email)) {
			$('#settAccEmailMsg').addClass('red').html('Please enter a valid email');
		}
		else if(uname.length < 5) {
			$('#settAccUnameMsg').addClass('red').html('Username must be more than 5 characters');
		}
		else if(!isUname(uname)) {
			$('#settAccUnameMsg').addClass('red').html('Username must begin with an alphabet');
		}
		else {
			var website = $('#settDetAccWebsite').val();
			var aboutMe = $('#settDetAccAboutMe').val();
			if(website.length && !isUrl(website)) {
				$('#settDetAccWebsiteMsg').addClass('red').html('Please enter a valid URL');
			}
			else if(aboutMe.length && !isAboutMe(aboutMe)) {
				$('#settDetAccAboutMeMsg').addClass('red').html('About Me can contain only alphabets, numbers and ., ,, -, :, ;, \', ", (, and ). We\'re working on the rest!');
			}
			else {
				var req = $.ajax({
					type: 'POST',
					url: '/app/process/changeAccount.php',
					data: {
						email: email,
						uname: uname,
						fName: fName,
						lName: lName,
						dob: dob,
						aboutMe: aboutMe,
						website: website
					},
					beforeSend: function() {
						$('#btnSettAccSubmit').attr({'disabled' : 'disabled'});
						$('#btnSettAccSubmitMsg').addClass('green').html('Working...');
					},
					success: processRequest
				});
			}
		}
	}
	
	function processRequest() {
		$('#btnSettAccSubmit').removeAttr('disabled');
		$('#btnSettAccSubmitMsg').removeClass('green').html('');
		switch(req.responseText) {
			case 'account_change_success':
			$('#btnSettAccSubmitMsg').addClass('green').html('Account updated successfully!');
			setTimeout("window.location.reload();", 3000);
			break;
			case 'account_change_fail':
			$('#btnSettAccSubmitMsg').addClass('red').html('Account change has failed due to an unknown reason. Please try again.');
			break;
			case 'account_change_email_exists':
			$('#settAccEmailMsg').addClass('red').html('The email address you have entered already exists. Pleasy try again.');
			break;
			case 'account_change_uname_exists':
			$('#settAccUnameMsg').addClass('red').html('The username you have entered already exists. Pleasy try again.');
			break;
			case 'error':
			$('#btnSettAccSubmitMsg').addClass('red').html('An unknown error has occured. Pleasy try again.');
			break;
			default:
			$('#btnSettAccSubmitMsg').addClass('red').html(req.responseText);
			break;
		}
	}
}

/* Support */

function forceCharLimit(id, limit) {
	var text = $('#'+id).val();
	if(text.length > limit) {
		trunc = text.substring(0, limit);
		$('#'+id).val(trunc);
	}
}

function isPostTitle(postTitle) {
	var reg = /^[a-zA-Z][a-zA-Z0-9-.,:; '"\u2019\u2018\u201C\u201D()!$?]*[a-zA-Z0-9-.,:; '"\u2019\u2018\u201C\u201D()!?]$/;
	if(reg.test(postTitle) == false) {
		return false;
	}
	return true;
}

function isPostBody(postBody) {
	var reg = /^[a-zA-Z0-9][a-zA-Z0-9-+.,:; '"\u2019\u2018\u201C\u201D()!$?@\/\r\n]*[a-zA-Z0-9-+.,:; '"\u2019\u2018\u201C\u201D()!?\r\n]$/;
	if(reg.test(postBody) == false) {
		return false;
	}
	return true;
}

function isAboutMe(aboutMe) {
	var reg = /^[a-zA-Z0-9][a-zA-Z0-9-+.,:; '"\u2019\u2018\u201C\u201D()!$?@\/\r\n]*[a-zA-Z0-9-+.,:; '"\u2019\u2018\u201C\u201D()!?\r\n]$/;
	if(reg.test(aboutMe) == false) {
		return false;
	}
	return true;
}

function isPostTags(postTags) {
	var reg = /^[a-zA-Z0-9][a-zA-Z0-9- ,]*[a-zA-Z0-9- ,]$/;
	if(reg.test(postTags) == false) {
		return false;
	}
	return true;
}

function isComment(commentBody) {
	var reg = /^[a-zA-Z0-9][a-zA-Z0-9-.,:; '"\u2019\u2018\u201C\u201D()!?\r\n]*[a-zA-Z0-9-.,:; '"\u2019\u2018\u201C\u201D()!?\r\n]$/;
	if(reg.test(commentBody) == false) {
		return false;
	}
	return true;
}

function isPass(pass) {
	var reg = /^[a-zA-Z0-9][a-zA-Z0-9]*[a-zA-Z0-9]$/;
	if(reg.test(pass) == false) {
		return false;
	}
	return true;
}

function isUname(uname) {
	var reg = /^[a-zA-Z][a-zA-Z0-9-]*[a-zA-Z0-9]$/;
	if(reg.test(uname) == false) {
		return false;
	}
	return true;
}

function isEmail(email) {
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	if(reg.test(email) == false) {
		return false;
	}
	return true;
}

function isUrl(url) {
	var reg = /http:\/\/[A-Za-z0-9\.-]{3,}\.[A-Za-z]{3}/;
	if(reg.test(url) == false) {
		return false;
	}
	return true;
}

function isDate(mm,dd,yyyy) {
   var d = new Date(mm + "/" + dd + "/" + yyyy);
   return d.getMonth() + 1 == mm && d.getDate() == dd && d.getFullYear() == yyyy;
}

function nl2br(text){
	text = escape(text);
	if(text.indexOf('%0D%0A') > -1) {
		re_nlchar = /%0D%0A/g;
		return unescape(text.replace(re_nlchar,'<br />'));
	}
	else if(text.indexOf('%0A') > -1) {
		re_nlchar = /%0A/g ;
		return unescape(text.replace(re_nlchar,'<br />'));
	}
	else if(text.indexOf('%0D') > -1) {
		re_nlchar = /%0D/g;
		return unescape(text.replace(re_nlchar,'<br />'));
	}
	else {
		return text;
	}	
}

function replaceQuotes(text) {
	text = escape(text);
	if(text.indexOf('%u2018') > -1) {
		re_nlchar = /%%u2018/g;
		return unescape(text.replace(re_nlchar,"'"));
	}
	else if(text.indexOf('%u2019') > -1) {
		re_nlchar = /%%u2019/g;
		return unescape(text.replace(re_nlchar,"'"));
	}
	else if(text.indexOf('%u201C') > -1) {
		re_nlchar = /%u201C/g;
		return unescape(text.replace(re_nlchar,'"'));
	}
	else if(text.indexOf('%u201D') > -1) {
		re_nlchar = /%u201D/g;
		return unescape(text.replace(re_nlchar,'"'));
	}
	else {
		return unescape(text);
	}	
}