/* LOGINFORM */

function toggleRegisterBtns()
{
	toggle(get('loginFormEl'));	
	toggle(get('regFormEl'));
}

function showRegisteringPanel()
{
	toggle(get('registeringMask'));
	toggle(get('registeringMaskBubbles'));
}

function showLoginBtns()
{
	toggle(get('loginFormEl'));
	toggle(get('regSuccess'));
	get('registerBtn').disabled = true;
	get('user_login').value = registeredUserLogin;
	get('password').value = '';
}

function checkRegData()
{
	showRegisteringPanel();
	var params = [
		[
			'user_login',
			getValue('new_user_login')
		],
		[
		 	'user_email',
			getValue('user_email')
		]
	];
	var register = new net.ContentLoader('/forums/ajax-register.php', registerCallback, params);
	return false;
}

var registeredUserLogin = '';
function registerCallback()
{
	showRegisteringPanel();
	if (this.responseObj.success) {
		var newLogin = htmlspecialchars(this.responseObj.userLogin);
		get('registeredUserLogin').innerHTML = newLogin;
		toggle(get('regFormEl'));
		toggle(get('regSuccess'));
		registeredUserLogin = newLogin;
	}
}

/* /LOGINFORM */


/* PROFILE */

function getAjaxXMLPage(pageNum, ajaxTableName, url, query) {
	
	var tableMaskId = ajaxTableName + 'Mask';
	
	show(get(tableMaskId));
	show(get(tableMaskId + 'Bubbles'));
	
	var params = [
		[
			'pageNum',
			pageNum
		],
		[
		 	'ajaxTableName',
			ajaxTableName
		],
		[
		 	'query',
			query		 
		 ]
	];
	var profileTable = new net.ContentLoader(url, profileTableCallback, params);
}

function profileTableCallback() {
	//Core.showObj(this.responseObj);	
	if (this.responseObj.success) {	
	
		var tableName = this.responseObj.data.tableName;
		var xmlData = this.responseObj.data.xml;		
		switch (tableName) {
			
			case 'favorites':
				var span = createFavoritesTable(xmlData, tableName);
				get(tableName).replaceChild(firstChild(firstChild(span)), firstChild(get(tableName)));
				get(tableName + 'Nav').innerHTML = this.responseObj.data.nav;
				break;
			
			case 'recentReplies':
				var span = createRecentRepliesTable(xmlData, tableName);
				get(tableName).replaceChild(firstChild(firstChild(span)), firstChild(get(tableName)));
				get(tableName + 'Nav').innerHTML = this.responseObj.data.nav;
				break;
			
			case 'topicsStarted':
				var span = createTopicsStartedTable(xmlData, tableName);
				get(tableName).replaceChild(firstChild(firstChild(span)), firstChild(get(tableName)));
				get(tableName + 'Nav').innerHTML = this.responseObj.data.nav;
				break;
			
			case 'searchResultsTable':
				var span = createSearchResultsTable(xmlData, tableName);
				get(tableName).replaceChild(firstChild(firstChild(span)), firstChild(get(tableName)));
				get(tableName + 'Nav').innerHTML = this.responseObj.data.nav;
				break;
				
			default:
				alert('Wrong query!');
		}	
	}
	hide(get('favoritesMask'));
	hide(get('favoritesMaskBubbles'));
	hide(get('recentRepliesMask'));
	hide(get('recentRepliesMaskBubbles'));
	hide(get('topicsStartedMask'));
	hide(get('topicsStartedMaskBubbles'));	
	hide(get('searchResultsTableMask'));
	hide(get('searchResultsTableMaskBubbles'));
}

function createFavoritesTable(xmlData, tableName) {
	var span = createElement('span');
	var table = '<table><tbody><tr>' + firstChild(firstChild(get(tableName))).innerHTML + '</tr>';
	for (var i = 0; i < xmlData.length; i++) {
		if (i % 2 == 0) {
			table += '<tr>';
		} else {
			table += '<tr class="alt">';
		}
		table += '<td><a href="' + xmlData[i].link + '">' + xmlData[i].title + '</a> ' + xmlData[i].status + '</td>';
		table += '<td class="num">' + xmlData[i].posts + '</td>';
		table += '<td class="num"><a href="' + xmlData[i].freshnessLink + '">' + xmlData[i].freshnessTime + '</a></td>';
		table += '<td class="num">[' + xmlData[i].removeLink + ']</td>';
		table += '</tr>';
		
	}
	table += '</tbody></table>';
	span.innerHTML = table;
	return span;
}

function createRecentRepliesTable(xmlData, tableName) {
	var span = createElement('span');
	var table = '<table><tbody><tr>' + firstChild(firstChild(get(tableName))).innerHTML + '</tr>';
	for (var i = 0; i < xmlData.length; i++) {
		if (i % 2 == 0) {
			table += '<tr>';
		} else {
			table += '<tr class="alt">';
		}
		table += '<td><a href="' + xmlData[i].link + '">' + xmlData[i].title + '</a></td>';
		table += '<td class="num"><a href="' + xmlData[i].lastPostLink + '">' + xmlData[i].yourLastReply + '</a></td>';
		table += '<td class="num"><a href="' + xmlData[i].lastPostLink + '">' + xmlData[i].newReplies + '</a></td>';
		table += '</tr>';
		
	}
	table += '</tbody></table>';
	span.innerHTML = table;
	return span;
}

function createTopicsStartedTable(xmlData, tableName) {
	var span = createElement('span');
	var table = '<table><tbody><tr>' + firstChild(firstChild(get(tableName))).innerHTML + '</tr>';
	for (var i = 0; i < xmlData.length; i++) {
		if (i % 2 == 0) {
			table += '<tr>';
		} else {
			table += '<tr class="alt">';
		}
		table += '<td><a href="' + xmlData[i].link + '">' + xmlData[i].title + '</a> ' + xmlData[i].status + '</td>';
		table += '<td class="num"><a href="' + xmlData[i].lastPostLink + '">' + xmlData[i].started + '</a></td>';
		table += '<td class="num"><a href="' + xmlData[i].lastPostLink + '">' + xmlData[i].newReplies + '</a></td>';
		table += '</tr>';		
	}
	table += '</tbody></table>';
	span.innerHTML = table;
	return span;
}

function createSearchResultsTable(xmlData, tableName) {
	var span = createElement('span');
	var table = '<table><tbody><tr>' + firstChild(firstChild(get(tableName))).innerHTML + '</tr>';
	for (var i = 0; i < xmlData.length; i++) {
		if (i % 2 == 0) {
			table += '<tr>';
		} else {
			table += '<tr class="alt">';
		}
		table += '<td><a href="' + xmlData[i].link + '">' + xmlData[i].title + '</a></td>';
		table += '<td class="num grey">'+ xmlData[i].overlaps + '</td>';
		table += '<td class="num">' + xmlData[i].posted + '</td>';
		table += '</tr>';		
	}
	table += '</tbody></table>';
	span.innerHTML = table;
	return span;
}

/* /PROFILE */


/* POST CHECK */

function checkPostData() {
	
	var errors = new Array();
	
	// Check name
	
	if (get('post_meta_author')) {
		
		var inputValue = getValue('post_meta_author');
		if (inputValue == '') {
			
			errors.push('Please enter your name');
			markInvalid('post_meta_author');
		}
	}
	
	// Check human test
	
	if (get('ht_test')) {
		
		var inputValue = getValue('ht_test');
		if (inputValue == '') {
			
			errors.push('Please enter verification number');
			markInvalid('ht_test');
		}
	}
	
	// Check content
	
	if (get('post_content')) {
		
		var inputValue = getValue('post_content');
		if (inputValue == '') {
			
			errors.push('Please enter content');
			markInvalid('post_content');
		}
	}
	
	// Check topic
	
	if (get('topic')) {
		
		var inputValue = getValue('topic');
		if (inputValue == '') {
			
			errors.push('Please enter topic title');
			markInvalid('topic');
		}
	}
	
	if (errors.length > 0) {
		
		alert('Please make sure that you fill in all required fields before submitting the form');
	}
	
	return errors.length == 0;
}

var invalidClasses = new Array();
function markInvalid(fieldName) {
	
	if (!invalidClasses[fieldName]) {
		
		var regExp = /invalidField/;
		if (!regExp.test(get(fieldName).className)) {
			invalidClasses[fieldName] = get(fieldName).className;
			get(fieldName).className = invalidClasses[fieldName] + (invalidClasses[fieldName] != '' ? ' ' : '') + 'invalidField';
		}
		get(fieldName).onkeypress = remInvalidMark;
		get(fieldName).onclick = remInvalidMark;	
	}
}

function remInvalidMark(ids) {
	
	if (ids && ids.length) {
	
		for (var i = 0; i < ids.length; i++) {
			
			var id = ids[i];
			var el = get(id);
			if (invalidClasses[id]) {
				
				el.className = invalidClasses[id];
				invalidClasses[id] = false;
				
			} else {
				
				el.className = '';
			}
			el.onkeypress = '';
			el.onclick = '';
		}
	
	} else {
		
		var id = this.id;
		var el = get(id);
		if (invalidClasses[id]) {
			
			el.className = invalidClasses[id];
			invalidClasses[id] = false;
			
		} else {
			
			el.className = '';
		}
		el.onkeypress = '';
		el.onclick = '';
	}
}

/* POST CHECK */


/* SEARCH CHECK */

function checkSearchFormData() {
	
	var errors = new Array();
	
	// Check name
	
	if (get('searchInput')) {
		
		var inputValue = getValue('searchInput');
		if (inputValue == '') {
			
			errors.push('Please enter search text');
			markInvalid('searchInput');
		}
	}
	
	if (errors.length > 0) {
		
		alert('Please make sure that you fill in all required fields before submitting the form');
	}
	
	return errors.length == 0;
}

/* /SEARCH CHECK */


/* LOGIN CHECK */

function checkLoginFormData() {
	
	var errors = new Array();
	
	// Check user login
	
	if (get('user_login')) {
		
		var inputValue = getValue('user_login');
		if (inputValue == '') {
			
			errors.push('Please enter your login');
			markInvalid('user_login');
		}
	}
	
	// Check user password
	
	if (get('password')) {
		
		var inputValue = getValue('password');
		if (inputValue == '') {
			
			errors.push('Please enter your password');
			markInvalid('password');
		}
	}
	
	if (errors.length > 0) {
		
		alert('Please make sure that you fill in all required fields before submitting the form');
	}
	
	return errors.length == 0;
}

/* /LOGIN CHECK */


/* REGISTER CHECK */

function checkRegisterFormData() {
	
	var errors = new Array();
	
	// Check new user login
	
	if (get('new_user_login')) {
		
		var inputValue = getValue('new_user_login');
		if (inputValue == '') {
			
			errors.push('Please enter your new user login');
			markInvalid('new_user_login');
		}
	}
	
	// Check user user email
	
	if (get('user_email')) {
		
		var inputValue = getValue('user_email');
		if (inputValue == '') {
			
			errors.push('Please enter your email');
			markInvalid('user_email');
		}
	}
	
	if (errors.length > 0) {
		
		alert('Please make sure that you fill in all required fields before submitting the form');
	}
	
	return errors.length == 0;
}

/* /REGISTER CHECK */


/* USER PROFILE */

function toggleChangeMyPasswordField() {
	
	toggle('changeUserPasswordContainer');
	hide('changeUserEmailContainer');
	hide('changeUserPasswordSuccessContainer');
	hide('changeUserEmailSuccessContainer');
	hide('toggleMyPasswordBtn');
	hide('toggleMyEmailBtn');
}

function toggleChangeMyEmailField() {
	
	toggle('changeUserEmailContainer');
	hide('changeUserPasswordContainer');
	hide('changeUserPasswordSuccessContainer');
	hide('changeUserEmailSuccessContainer');
	hide('toggleMyPasswordBtn');
	hide('toggleMyEmailBtn');
}

function showChangeMyPasswordField() {
	
	hide('changeUserPasswordContainer');
	show('toggleMyPasswordBtn');
	show('toggleMyEmailBtn');
}

function showChangeMyEmailField() {
	
	hide('changeUserEmailContainer');
	show('toggleMyPasswordBtn');
	show('toggleMyEmailBtn');
}

function ajaxChangeMyPassword(newPassword, newPasswordReply) {
	
	show('changeUserPasswordContainerMask');
	show('changeUserPasswordContainerMaskBubbles');
	
	var params = [
		[
			'change_user_password',
			true
		],
		[
			'newPassword',
			newPassword
		],
		[
			'newPasswordReply',
			newPasswordReply
		]
	];
	var profileUpdate = new net.ContentLoader('/forums/ajax-profileedit.php', afterPassChange, params);
}

function afterPassChange() {
	
	hide('changeUserPasswordContainerMask');
	hide('changeUserPasswordContainerMaskBubbles');

	if (this.responseObj.success) {
	
		hide('changeUserPasswordContainer');
		show('toggleMyPasswordBtn');
		show('toggleMyEmailBtn');
		show('changeUserPasswordSuccessContainer');
	}
}

function ajaxChangeMyEmail(newEmail) {
	
	show('changeUserEmailContainerMask');
	show('changeUserEmailContainerMaskBubbles');
	
	var params = [
		[
			'change_user_email',
			true
		],
		[
			'newEmail',
			newEmail
		]
	];
	var profileUpdate = new net.ContentLoader('/forums/ajax-profileedit.php', afterEmailChange, params);
}

function afterEmailChange() {
	
	hide('changeUserEmailContainerMask');
	hide('changeUserEmailContainerMaskBubbles');
	
	if (this.responseObj.success) {
	
		hide('changeUserEmailContainer');
		show('toggleMyPasswordBtn');
		show('toggleMyEmailBtn');
		get('changeUserEmailSuccessEmail').innerHTML = htmlspecialchars(this.responseObj.data.newEmail);
		show('changeUserEmailSuccessContainer');
	}
}

/* /USER PROFILE */