var profileURL = '/cgi-bin/plugins/Profile/profile.cgi';
var recURL = '/cgi-bin/plugins/Recommend/mt-recommend.cgi';
var recImgDir = '/mt-static/plugins/Recommend';
req = null;
window.onload = toggleLogin;
var ratedEntries = new Array();

function toggleLogin() {
	//if this isn't there, this isn't a blog page
	if (!window.entry_ids) {
//		return false;
	}
	toggleLoginForms();
	toggleRatings();
try {	if (is_individual) {
	 toggleCommentForms();
	} } catch (e) {}
}

function getCommenterName() {
	cValue = "";
	dc = document.cookie;
	cookies = dc.split(";");
	for (x=0;x<cookies.length;x++) {
		if (cookies[x].match(/commenter_name=/)) {
		cValue = cookies[x].replace(/commenter_name=/, "");
		}
	}
	if (cValue.length>1) {
		return cValue;
	} else {
		return "";
	}
}

function getRating(entry_id) {
	cValue = "";
	dc = document.cookie;
	cookies = dc.split(";");
	for (x=0;x<cookies.length;x++) {
		var re = new RegExp('Recommend_' + entry_id + '=');
		if (cookies[x].match(re)) {
		cValue = cookies[x].replace(re, "");
		}
	}
	if (cValue.length>1) {
		return unescape(cValue);
	} else {
		return "";
	}
}

function trimString (str) {
  str = this != window? this : str;
  return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}

function urlParameter(name)
{
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var tmpURL = window.location.href;
  var results = regex.exec( tmpURL );
  if( results == null )
    return "";
  else
    return results[1];
}

function formCheck(e) {
	form = document.getElementById('profile_post');
	isEmpty = false;
	elems = form.elements;
	for (x=0;x<elems.length;x++) {
		elem = elems[x];
		if (elem.name == "category") {
			if (elem.value == "Choose a category:") {
				elem.style.border = "2px solid red";
				isEmpty = true;
			} else {
				elem.style.border = "";
			}
		}
		if (elem.name == "photo_url") {
			photo_src = elem.value;
		}
		if (elem.name == "entry_text") {
			if (photo_src) {
				elem.value = '<img src="' + photo_src + '" class="photo" />\n\n' + elem.value;
			}
		}
	}
	if (isEmpty) {
		alert("You must fill out all highlighted fields and select a category before submitting your topic.");
		if (e && e.preventDefault) e.preventDefault(); // DOM style
	}
	return !isEmpty;
}

function formListener() {
	form = document.getElementById('profile_post');
	if (window.attachEvent) {
		form.attachEvent('onsubmit', function(){return formCheck();});
	} else {
		form.addEventListener('submit', formCheck, true);
	}
}


function toggleCommentForms() {
	var user = getCommenterName();
	if (user.length > 0) {
		if (document.getElementById('profile_container')) { document.getElementById('profile_container').style.display = 'block'; }
		if (document.getElementById('profile_login_container')) { document.getElementById('profile_login_container').style.display = 'none'; }
		if (document.getElementById('profile_username_span')) { document.getElementById('profile_username_span').innerHTML = user; }
	} else {
		if (document.getElementById('profile_container')) { document.getElementById('profile_container').style.display = 'none'; }
		if (document.getElementById('profile_login_container')) { document.getElementById('profile_login_container').style.display = 'block'; }
	}
}

function toggleLoginForms() {
	var user = getCommenterName();
	if (user.length > 0) {
			if (document.getElementById('profile_side_container')) { document.getElementById('profile_side_container').style.display = 'block'; }
			if (document.getElementById('profile_side_login_container')) { document.getElementById('profile_side_login_container').style.display = 'none'; }
			if (document.getElementById('profile_side_username_span')) { document.getElementById('profile_side_username_span').innerHTML = '<a href="/cgi-bin/plugins/Profile/profile.cgi?username='+trimString(user)+'">' + user + '</a>'; }
	} else {                
			if (document.getElementById('profile_side_container')) { document.getElementById('profile_side_container').style.display = 'none'; }
			if (document.getElementById('profile_side_login_container')) { document.getElementById('profile_side_login_container').style.display = 'block'; }
	}               
}

function toggleRatings() {
	if (!window.entry_ids) {
		return false;
	}
	var username = getCommenterName();
	var disp = (username.length > 0) ? 'block' : 'none';
	for (var i = 0; i < entry_ids.length; i++) {
		var id = entry_ids[i];
		if (document.getElementById('loggedin-container-' + id)) {
			document.getElementById('loggedin-container-' + id).style.display = disp;
			document.getElementById('loggedin-username-' + id).innerHTML = username;
			closeLogin(id);
			document.getElementById('ratestars_' + id).setAttribute('src', recImgDir + '/star_0.gif');
			if (username.length > 0) {
				var r = getRating(id);
				if (r.length > 0) {
					r = (trimString(r) * 1) + 4;
					document.getElementById('ratestars_' + id).setAttribute('src', recImgDir + '/star_' + r + '.gif');
					document.getElementById('ratestars_' + id).setAttribute('oldsrc', recImgDir + '/star_' + r + '.gif');
				} else {
					//no cookie for rating, try to get it from script
					var myAjax = new Ajax.Updater( 'recommend_getvote' , recURL + '?__mode=get_author_vote&entry_id=' + id, {
					onComplete: function(request) {
						var r = request.responseText;
						if (r.match(/^success:/)) {
							r = r.replace(/^success:/, '');
							var ar = r.split(',');
							var img_val = (ar[1] * 1) + 4;
							document.getElementById('ratestars_' + ar[0]).setAttribute('src', recImgDir + '/star_' + img_val + '.gif');
							document.getElementById('ratestars_' + ar[0]).setAttribute('oldsrc', recImgDir + '/star_' + img_val + '.gif');
							createCookie('Recommend_' + ar[0], ar[1], 30);
						} else {
							document.getElementById('ratestars_' + r).setAttribute('src', recImgDir + '/star_0.gif');
							document.getElementById('ratestars_' + r).setAttribute('oldsrc', recImgDir + '/star_0.gif');
						}
					},
					asynchronous: true,
					method: 'get'} );
				}
			}
		} else {
			// no username, clear oldsrc
			if (document.getElementById('ratestars_' + id)) {
				document.getElementById('ratestars_' + id).setAttribute('oldsrc', recImgDir + '/star_0.gif');
			}
		}
	}
}

function uuidCheck() {
// code to pass UUID to Marketocracy if user just logged in
	var $uuid = urlParameter('UUID')
	if ($uuid) {
		vcapi_shared_login($uuid);
	}
}

function profileLogout() {
	var myAjax = new Ajax.Updater( 'profile_login' , profileURL + '?__mode=logout', {
		onComplete: function(request, json) {
			toggleLogin();
		},
		asynchronous: true,
		method: 'get'} );
}

function loginSubmit(form_id) {
	var theform = document.getElementById(form_id);
	if (!theform.elements['profile_username'].value || !theform.elements['profile_password'].value) {
		alert('Please enter a username and password.');
		return false;
	} 
	var myAjax = new Ajax.Updater( 'profile_login' , profileURL, {
		parameters: {
			__mode: 'login',
			profile_username: theform.elements['profile_username'].value,
			profile_password: theform.elements['profile_password'].value,
			ajax: '1'
		},
		onComplete: function(request, json) {
			if (request.responseText == 'success') {
				toggleLogin();
			} else {
				alert(request.responseText);
			}
		},
		asynchronous: true,
		method: 'post'} );
	return false;
}

function apiTimeout(form_id) {
	alert('The registration server does not seem to be responding.');
}

//Before register event handler (ipb site register routine)
function regSubmit(form_id) {
	var theform = document.getElementById(form_id);
	 var options={
	  __mode: 'signup',
	  check: '1',
	  ajax: '1',
	  profile_username: theform.elements['profile_username'].value,
	  profile_first_name: theform.elements['profile_first_name'].value,
	  profile_last_name: theform.elements['profile_last_name'].value,
	  profile_email: theform.elements['profile_email'].value,
	  profile_email_again: theform.elements['profile_email_again'].value,
	  profile_password: theform.elements['profile_password'].value,
	  profile_optin: theform.elements['profile_opt_in'].checked ? 1 : 0
	 };
	 var timeout;
	 var func2 = function(error_code, error_message, message, is_loggedin) {
	 	clearTimeout(timeout);
		if (error_code != 0) {
			//for an existing user, we don't want to treat it as an error
			if (!error_message.match(/^The username you entered is already in use/)) {
	            show('submit_button', true);
	            show('submit_wait', false);
				alert(error_message);
				return false;
			}
		}
		timeout = setTimeout('apiTimeout("' + theform.id + '")', 30 * 1000);
		vcapi_login(
				theform.elements['profile_username'].value,
				theform.elements['profile_password'].value,
				func3
			);
	}
	 var func3 = function(error_code, error_message, login, email, firstname, lastname, optin) {
	 	clearTimeout(timeout);
		if (error_code != 0) {
alert(error_message);
	            	show('submit_button', true);
            		show('submit_wait', false);	
		} else {
			theform.submit();
		}
	 }
	 var func=function(req) {
	if (!req.responseJS.errorCode || (req.responseJS.errorCode==0)) {
	   //Correct register, now ping Marketocracy
	   //function vcapi_register(user, firstname, lastname, password, email, optin, captcha, callback_func)
/*	   we're cutting the marketocracy API out of things here -- uncomment this bit to add M* back in
	   timeout = setTimeout('apiTimeout("' + theform.id + '")', 10 * 1000);
	   vcapi_register(
		theform.elements['profile_username'].value,
		theform.elements['profile_first_name'].value,
		theform.elements['profile_last_name'].value,
		theform.elements['profile_password'].value,
		theform.elements['profile_email'].value,
		theform.elements['profile_opt_in'].checked ? 1 : 0,
		'',
		func2
		); */
		theform.submit();
	  } else {
		show('submit_button', true);
        show('submit_wait', false);   
		alert(req.responseJS.error);
	  }
	 };
	 ipb_ajax_request(options,func);
	 return false;
}

function showLogin(entry_id) {
	document.getElementById('reg-container-' + entry_id).style.display = 'none';
	document.getElementById('login-container-' + entry_id).style.display = 'block';
}

function showReg(entry_id) {
	document.getElementById('login-container-' + entry_id).style.display = 'none';
	document.getElementById('reg-container-' + entry_id).style.display = 'block';
}
function closeLogin(entry_id) {
	document.getElementById('login-container-' + entry_id).style.display = 'none';
	document.getElementById('reg-container-' + entry_id).style.display = 'none';
}
function createCookie(name,value,days) {
        if (days)
        {
                var date = new Date();
                date.setTime(date.getTime()+(days*24*60*60*1000));
                var expires = "; expires="+date.toGMTString();
        }
        else var expires = "";
        document.cookie = name+"="+value+expires+"; path=/";
	}

