// GLOBAL FUNCTIONS:
function emptyElements(id, elements){
	var returnFlag=true;
	elements=elements.split(',');
	$(elements).each(function(){
		if($('#'+this).val()==''){
			$('#'+this).addClass('empty');
			returnFlag=false;
		}
	});
	if(returnFlag==false) $(id+' #submitStatus').html("Please don't leave the required fields empty.").attr({'className':'submitError'});
	return returnFlag;
}
function emptyCheck(id){
	$('.empty').removeClass('empty');
	$(id+' #submitStatus').html('');
	/* check that nothing is empty: */
	if($(id+" :input[value='']").not('button').size()>0){
		$(id+' #submitStatus').html("Please don't leave the required fields empty.").attr({'className':'submitError'});
		$(id+" :input[value='']").not('button').each(function(){
			$(this).addClass('empty');
		});
		return false;
	}
	return true;
}
function submitError(error){
	$('#submitStatus').html(error).attr({'className':'submitError'});
	$('#submit').attr({'disabled':false});
}
function submitSuccess(error){
	$('#submitStatus').html(error).attr({'className':'submitSuccess'});
	$('#submit').attr({'disabled':false});
}
function serialize(values){
	values=values.split(',');
	var encodedValues={};
	$(values).each(function(){
		if($('#'+this+':checkbox').size()>0) encodedValues[this]=( $('#'+this).attr('checked')==true ) ? 'true' : 'false';
		else encodedValues[this]=encodeURIComponent($('#'+this).val());
	});
	return encodedValues;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// SUBMIT NEW QUESTION:
// SUBMIT NEW QUESTION:
function submitQuestion(){
	if(!emptyCheck('.table')) return false;
	var vars=serialize('name,email,question,notify');
	vars['type']='new-question';
	$('#submit').attr({'disabled':true}).val('Processing..');
	$.post('/functions.php', vars, function(request){
		if(request.substr(0,2)=='1-'){
			$('.input').val('');
			$('#submitStatus').attr({'className':'submitSuccess'}).html(request.substr(2));
		}
		else if(request.substr(0,2)=='0-'){
			$('#submitStatus').attr({'className':'submitError'}).html(request.substr(2));
		}
		else submitError('Yikes! A server error occurred. Please try again!');
		$('#submit').attr({'disabled':false}).val('Submit');
	});
}
// SUBMIT RESPONSE TO QUESTION:
// SUBMIT RESPONSE TO QUESTION:
function submitAnswer(){
	if(!emptyElements('#new-answer', 'name,answer')) return false;
	var vars=serialize('url,name,email,answer,notify');
	vars['type']='new-answer';	
	$('#submit').attr({'disabled':true}).val('Processing..');	
	$.post('/functions.php', vars, function(request){
		if(request.substr(0,2)=='1-'){
			$('.input').val('');
			$('#new-answer').html(request.substr(2)).after('<div class="answerDetails">Answer posted by '+vars['name']);
		}
		else if(request.substr(0,2)=='0-'){
			$('#submitStatus').attr({'className':'submitError'}).html(request.substr(2));
		}
		else submitError('Yikes! A server error occurred. Please try again!');
		$('#submit').attr({'disabled':false}).val('Submit');
	});
}

// RATE VIDEO:
// RATE VIDEO:
function rate(vote, itemID){
	$('#stars').css({'display':'none'});
	$('#ratingAjaxIndicator').css({'display':'inline'});
	var vars={'type':'rate', 'vote':vote, 'itemID':itemID};
	$.post('/functions.php', vars, function(request){
		if(request.substr(0,2)=='1-'){
			$('#current-rating').css({'display':'inline'});
			request=request.split("-");
			if(request[2]=='1') $('#totalVotes').html('Rated <b>'+request[1]+'</b> by <b>'+request[2]+'</b> person');
			else $('#totalVotes').html('Rated <b>'+request[1]+'</b> by <b>'+request[2]+'</b> people');
			$('#current-rating').css({'width':Math.round(request[1]*200/5)+"px"});
			$('#stars').css({'display':'none'});
		}
		else if(request!='-1')
			$('#stars').css({'display':'inline'});
		$('#ratingAjaxIndicator').css({'display':'none'});
	});
}

// SUBMIT FEEDBACK:
// SUBMIT FEEDBACK:
function submitFeedback(){
	var vars=serialize('name,email,subject,comment');
	vars['type']='contact';
	if(vars['name']==''){ submitError("Please don't leave your name empty."); return; }
	if(vars['comment']==''){ submitError("Please don't leave your comment empty."); return; }	
	$('#submit').attr({'disabled':true}).val('Processing..');
	$.post('/functions.php', vars, function(request){
		if(request.substr(0,2)=='1-'){
			$('#feedbackForm :input').not('#submit').val('');
			submitSuccess('Thanks for your feedback!');
		}
		else submitError('Error submitting your comment. Please try again.');
		$('#submit').attr({'disabled':false}).val('Submit');
	});
}

// SUBMIT COMMENTS:
// SUBMIT COMMENTS:
function submitComment(){
	if($('#commentTextarea').val()==''){ $('#commentStatus').attr({'className':'submitError'}).html('What are you trying to submit?'); return false; }
	var vars=serialize('commentName,commentTextarea,genre,siteURL,titleURL,contentID');
	$('#submitComment').attr({'disabled':true}).val('Processing..');
	vars['type']='new-comment';
	$.post('/functions.php', vars, function(request){
		if(request.substr(0,2)=='1-'){
			$('#newComment').html(request.substr(2));
		}
		else{
			$('#commentStatus').attr({'className':'submitError'}).html('Error submitting comment. Please try again.'); 
			$('#submitComment').attr({'disabled':false}).val('Submit');
		}
	});
}