//MAIN SCRIPTS

//INCLUDE PROTOTYPE AND SCRIPTACULOUS
document.writeln('<script src="/scripts/prototype.js" type="text/javascript" language="javascript" ></script>');
document.writeln('<script src="/scripts/scriptaculous/scriptaculous.js" type="text/javascript" language="javascript" ></script>');

function answer(quizId,quizToken,questionNum,answerNum)
{
	
	Element.setStyle('loading',{top:'0px'});
	 
	var quizId = encodeURIComponent(quizId);
	
	var quizToken = encodeURIComponent(quizToken);
	
	var questionNum = encodeURIComponent(questionNum);
	var answerNum = encodeURIComponent(answerNum);
		
	var postData = '&quizId=' + quizId + '&questionNum=' + questionNum + '&answerNum=' + answerNum;

	var requestUrl = '/quiz/answer/' + quizToken;

    var request = new Ajax.Request(
        requestUrl,
        {
           method: 'post',
           postBody: postData,
           onComplete: handleAnswer
        }
        );
        
}

function handleAnswer (reply)
{
	Element.setStyle('loading',{top:'-1000px'});
	 
	var json = jsonObject(reply);
	
	Effect.Fade('col1_content',{duration: .5,afterFinish: function () { $('col1_content').innerHTML = json.view; Effect.Appear('col1_content',{duration: .5}); } });
}


function go(quizId,quizToken,questionNum,answerNum)
{

	Element.setStyle('loading',{top:'0px'});
	 
	var quizId = encodeURIComponent(quizId);
	
	var quizToken = encodeURIComponent(quizToken);
	
	var questionNum = encodeURIComponent(questionNum);
	var answerNum = encodeURIComponent(answerNum);
	
	var postData = Form.serialize('invite_form');

	postData = postData + '&quizId=' + quizId + '&questionNum=' + questionNum + '&answerNum=' + answerNum;

	var requestUrl = '/quiz/go/' + quizToken;

    var request = new Ajax.Request(
        requestUrl,
        {
           method: 'post',
           postBody: postData,
           onComplete: handleGo
        }
        );
        
}

function handleGo (reply)
{
	Element.setStyle('loading',{top:'-1000px'});

	var json = jsonObject(reply);

	if(json.view)
	{
		Effect.Fade('col1_content',{duration: .5,afterFinish: function () { $('col1_content').innerHTML = json.view; Effect.Appear('col1_content',{duration: .5}); } });
	}
	else if(json.goTo)
	{
		document.location.href = json.goTo;
	}

	for (key in json.check) {
		
		if($(key + '_check'))
		{

			if(json.check[key]!='')
			{
				//EFFECT WRONG
				
				Element.addClassName(key, 'textfield_check');

				Element.hide(key + '_check');

				$(key + '_check').innerHTML = json.check[key];
				Effect.Appear(key + '_check',{duration: .7});
		
			}
			else if($(key))
			{
				//EFFECT CORRECT
				//Element.setStyle(key,{color:'#00aa00'});
				
				Element.removeClassName(key, 'textfield_check');
				
				Element.addClassName(key, 'textfield_correct');
				
				Effect.Fade(key + '_check',{duration: .5});
			}

		}
		
	}

}

function language(quiz,language)
{
	
	Element.setStyle('loading',{top:'0px'});
	
	var quiz = encodeURIComponent(quiz);
	
	var language = encodeURIComponent(language);
	
	var requestUrl = '/quiz/language/' + quiz + '/' + language;
	
    		var request = new Ajax.Request(
        	requestUrl,
        	{
           		method: 'post',
           		onComplete: function() {
           								 Element.setStyle('loading',{top:'-1000px'});
           								 
           								 reloadSite();
           							   }
       	 	}
        	);
        	
}

function login(quiz)
{
	Element.setStyle('loading',{top:'0px'});
	
	var quiz = encodeURIComponent(quiz);
	
	//OPEN LOGIN
    if($('log_in_data').innerHTML == '')
   	{
			var requestUrl = '/quiz_login/login/' + quiz;
	
    		var request = new Ajax.Request(
        	requestUrl,
        	{
           		method: 'post',
           		onComplete: handleLogin
       	 	}
        	);
    }
    else
    {
       	Effect.BlindUp('log_in_data',{duration: .5,afterFinish: function () {
       																		 $('log_in_data').innerHTML = '';
       																		 
       																		 Element.setStyle('loading',{top:'-1000px'});
       																		 
       																		 }
       								  });
    }
}

function loginCheck(quiz)
{
	Element.setStyle('loading',{top:'0px'});
	
	var quiz = encodeURIComponent(quiz);
	
	//LOGIN CHECK
	var postData = Form.serialize('login_form');

	var requestUrl = '/quiz_login/check/' + quiz;
	
    var request = new Ajax.Request(
       requestUrl,
       {
           	method: 'post',
           	postBody: postData,
           	onComplete: handleCheckLogin
       	}
        );
}

function forgotLogin(quiz)
{
	Element.setStyle('loading',{top:'0px'});
	
	var quiz = encodeURIComponent(quiz);
	
	//LOGIN FORGOT
	var requestUrl = '/quiz_login/forgot/' + quiz;
	
	//SEND DATA
	var postData = Form.serialize('login_form');
	
    var request = new Ajax.Request(
        requestUrl,
        {
           	method: 'post',
           	postBody: postData,
           	onComplete: handleLogin
       	}
        );
}

function forgotLoginCheck(quiz)
{	
	Element.setStyle('loading',{top:'0px'});
	
	var quiz = encodeURIComponent(quiz);
	
	//LOGIN CHECK FORGOT
	var postData = Form.serialize('login_form');
	
	var requestUrl = '/quiz_login/forgotcheck/' + quiz;
	
    var request = new Ajax.Request(
        requestUrl,
        {
           	method: 'post',
           	postBody: postData,
           	onComplete: handleCheckLogin
       	}
        );
}

function handleLogin (reply)
{
	Element.setStyle('loading',{top:'-1000px'});
	
	var json = jsonObject(reply);
	
	Effect.BlindUp('log_in_data',{duration: .5,
								  afterFinish: function () { 
													$('log_in_data').innerHTML = json.view; 
																		
													Effect.BlindDown('log_in_data',{duration: .5});
																		
											   }
								  });

}

function handleCheckLogin (reply)
{
	Element.setStyle('loading',{top:'-1000px'});
	
	var json = jsonObject(reply);
	
	for ( key in json.check ) {
		
		if(json.check[key]!='')
		{
				//EFFECT WRONG

				Element.addClassName(key, 'textfield_check');
				
				Element.hide(key + '_check');
				$(key + '_check').innerHTML = json.check[key];
				
				Effect.Appear(key + '_check',{duration: .7});
		}
		else
		{
				//EFFECT CORRECT
				Element.removeClassName(key, 'textfield_check');
				
				Element.addClassName(key, 'textfield_correct');
				
				Effect.Fade(key + '_check',{duration: .5});
		}
		
	}
	
	if(json.view)
	{
		handleLogin (reply);
	}
	
	if(json.goTo)
	{
		window.location.href= json.goTo;
	}

}

function logout(quiz)
{
	Element.setStyle('loading',{top:'0px'});
	
	var quiz = encodeURIComponent(quiz);
	
	var requestUrl = '/quiz_login/logout/' + quiz;
	
    var request = new Ajax.Request(
        requestUrl,
        {
           	method: 'post',
           	onComplete: handleLogout
       	 }
        );
}

function handleLogout (reply)
{
	Element.setStyle('loading',{top:'-1000px'});
	
	var json = jsonObject(reply);
	
	if(json.goTo)
	{
		window.location.href= json.goTo;
	}
}

function _l(quiz,get)
{
	//MESSAGES
	if(get)
	{
		getMessages(quiz);
	
		setOnline();
		
		var m_int = setInterval("getMessages('"+quiz+"')",240000);
		
		var u_int = setInterval("setOnline()",120000);
	}
}


function setOnline()
{
	var quiz = encodeURIComponent(quiz);
	
	var requestUrl = '/quiz/setonline';
	
    var request = new Ajax.Request(
        requestUrl,
        {
           	method: 'post'
       	}
        );
}


function getMessages(quiz)
{
	var quiz = encodeURIComponent(quiz);
	
	var requestUrl = '/quiz_messages/get/' + quiz;
	
    var request = new Ajax.Request(
        requestUrl,
        {
           	method: 'post',
           	onComplete: handleGetMessages
       	 }
        );
}

function handleGetMessages (reply)
{
	var json = jsonObject(reply);
	
	if(json.view)
	{
		$('message_window').innerHTML = json.view;
		
		Element.hide('message_window');
		
		Element.setStyle('message_window',{top:'100px'});
		
		Effect.Appear('message_window',{duration: .7});
	}
	
	setTimeout("new Draggable('message_window',{handle:'message_window_top'});",500);
	
}

function messagesRead(quiz)
{
	Element.setStyle('loading',{top:'0px'});
	
	var quiz = encodeURIComponent(quiz);
	
	var requestUrl = '/quiz_messages/read/' + quiz;
	
    var request = new Ajax.Request(
        requestUrl,
        {
           	method: 'post',
           	onComplete: function() {
           					Element.setStyle('loading',{top:'-1000px'});
           					
           					Effect.Fade('message_window',{duration: .7});
           						   }
       	 }
        );
        
}

function writeMessage(quiz,quizToken,token,id,art)
{
	Element.setStyle('loading',{top:'0px'});
	
	var quiz = encodeURIComponent(quiz);
	
	var quizToken = encodeURIComponent(quizToken);
	
	var token = encodeURIComponent(token);
	
	var id = encodeURIComponent(id);
	
	var art = encodeURIComponent(art);
	
	var postData = '&quizToken=' + quizToken + '&token=' + token + '&id=' + id + '&art=' + art; 
	
	var requestUrl = '/quiz_messages/write/' + quiz;
	
    var request = new Ajax.Request(
        requestUrl,
        {
           	method: 'post',
           	postBody: postData,
           	onComplete: handleWriteMessage
       	 }
        );
}


function handleWriteMessage (reply)
{
	Element.setStyle('loading',{top:'-1000px'});
	
	var json = jsonObject(reply);
		
	$('message_write').innerHTML = json.view;
		
	Element.hide('message_write');
	
	var thisPos = Position.cumulativeOffset($(json.id));

	Element.setStyle('message_write',{top:(thisPos[1])+'px',left:(thisPos[0])+'px'});
		
	Effect.Appear('message_write',{duration: .7});

	setTimeout("new Draggable('message_write',{handle:'message_write'});",500);
	
}

function writeMessageGo(quiz,quizToken,token,art)
{
	Element.setStyle('loading',{top:'0px'});
	
	var quiz = encodeURIComponent(quiz);
	
	var quizToken = encodeURIComponent(quizToken);
	
	var token = encodeURIComponent(token);
	
	var art = encodeURIComponent(art);
	
	var postData = Form.serialize('message_write_form') + '&quizToken=' + quizToken + '&token=' + token + '&art=' + art;
	
	var requestUrl = '/quiz_messages/writego/' + quiz;
	
	var request = new Ajax.Request(
        requestUrl,
        {
           	method: 'post',
           	postBody: postData,
           	onComplete: function() {
           					Element.setStyle('loading',{top:'-1000px'});
           					
           					Effect.Fade('message_write',{duration: .7});
           						   }
       	 }
        );

}


function writeMessageClose()
{
	Element.setStyle('loading',{top:'0px'});
	
	Effect.Fade('message_write',{duration: .7, afterFinish: function () {
																Element.setStyle('loading',{top:'-1000px'});
																		 }
								});
}


function deleteMessage(quiz,id)
{
	Element.setStyle('loading',{top:'0px'});
	
	var quiz = encodeURIComponent(quiz);
	
	var id = encodeURIComponent(id);
	
	var requestUrl = '/quiz_messages/delete/' + quiz + '/' + id;
	
	var request = new Ajax.Request(
        requestUrl,
        {
           	method: 'post',
           	onComplete: function() {
           					Element.setStyle('loading',{top:'-1000px'});
           					
           					reloadSite();
           						   }
       	 }
        );
        
}



function replacePlayer(quiz,quizToken,token,id)
{
	Element.setStyle('loading',{top:'0px'});
		
	var quiz = encodeURIComponent(quiz);
	
	var quizToken = encodeURIComponent(quizToken);
	
	var token = encodeURIComponent(token);
	
	var id = encodeURIComponent(id);
	
	var postData = '&quizToken=' + quizToken + '&token=' + token + '&id=' + id; 
	
	var requestUrl = '/quiz/replace/' + quiz;
	
    var request = new Ajax.Request(
        requestUrl,
        {
           	method: 'post',
           	postBody: postData,
           	onComplete: handleReplacePlayer
       	 }
        );
        
}

function handleReplacePlayer (reply)
{
	var json = jsonObject(reply);
	
	Effect.Fade(json.id,{duration: .5,
								  afterFinish: function () {
								  					
								  					Element.setStyle('loading',{top:'-1000px'});
								  					
													$(json.id).innerHTML = json.view; 
																		
													Effect.SlideDown(json.id,{duration: .5});					
											   }
								  });
								  
}

function replacePlayerGo(quiz,quizToken,token)
{
	Element.setStyle('loading',{top:'0px'});
	
	var quiz = encodeURIComponent(quiz);
	
	var quizToken = encodeURIComponent(quizToken);

	var token = encodeURIComponent(token);
	
	var postData = Form.serialize('invite_form');

	postData = postData + '&quizToken=' + quizToken + '&token=' + token;

	var requestUrl = '/quiz/replacego/' + quiz;

    var request = new Ajax.Request(
        requestUrl,
        {
           method: 'post',
           postBody: postData,
           onComplete: handleGo
        }
        );
      
}

function profileStatusMails(status)
{
	if(status == 1)
	{
		Element.setStyle('statusMailsOff',{display:'none'});
		Element.setStyle('statusMailsOn',{display:'block'});
	}
	else
	{
		Element.setStyle('statusMailsOn',{display:'none'});
		Element.setStyle('statusMailsOff',{display:'block'});
	}
}

function updateProfile(quiz)
{
	var quiz = encodeURIComponent(quiz);
	
	var postData = Form.serialize('profile_form');

	var requestUrl = '/quiz_profile/updateprofile/' + quiz;

    var request = new Ajax.Request(
        requestUrl,
        {
           method: 'post',
           postBody: postData,
           onComplete: handleGo
        }
        );
        
}


function adminLogin(quiz)
{
	var quiz = encodeURIComponent(quiz);

	Element.setStyle('loading',{top:'0px'});
	
	var postData = Form.serialize('login_form');

	var requestUrl = '/quiz_admin/login/' + quiz;

    var request = new Ajax.Request(
        requestUrl,
        {
           method: 'post',
           postBody: postData,
           onComplete: handleGo
        }
        );
        
}

function monitoring()
{
	var day = $('day').value;
	
	window.location.href= '/quiz_admin/monitor/' + day;
}


function jsonObject(reply)
{
	return eval('('+ reply.responseText +')');
}

function reloadSite()
{
	document.location.href = unescape(document.location.pathname);
}
