var modalAnimProps 	= {};
var isModalOpen 	= false;
var isLoggedIn 		= false;
var d 				= null;

function initAccessController()
{
	$('.oh_signup_btn').click(doSignup);
	$('.oh_login_btn').click(doLogin);
	$(window).bind('scroll', onWindowScroll);
}

//--------//
// EVENTS //
//--------//

function onWindowResize()
{
	transitionModal();
}

function onWindowScroll(e)
{
	if(isModalOpen)	transitionModal();
}

//-------//
// MODAL //
//-------//
function openModal()
{
	isModalOpen = true;
	transitionModal();

	$(window).bind('resize', onWindowResize);
}

function transitionModal()
{
	var cX = ($(window).width()- $('#modal_child').width()) / 2;
	var cY = ($(window).height()- $('#modal_child').height()) / 2;

	if(cY < 10) cY = 10; 
	if(cX < 10) cX = 10;

	modalAnimProps.left = cX;
	modalAnimProps.top = cY + $(window).scrollTop();

	$('#modal_child').animate(modalAnimProps, 500);

	//Modal Window
	$('#modal').css('top', 0).css('left', 0).css('width', $(document).width()).css('height', $(document).height())
}

function closeModal()
{
	//Reve this as I may need to use it again
	$(window).unbind('resize', onWindowResize);

	//Remove Modal Dialog
	$('#modal').remove();
	$('#modal_child').remove();

	isModalOpen = false;
}

//-----------//
// GET VIEWS //
//-----------//

function doSignup(e)
{
	jQuery('#test').load(OHTV + '/ohtvapi/component/signup', {signup:'yes'}, onLoadSignup);

	d = jQuery('#test').attr('class').substr(2);

	e.preventDefault();
}

function doLogin(e)
{
	jQuery('#test').load(OHTV + '/ohtvapi/component/login', {login:'09AZ'}, onLoadLogin);

	d = jQuery('#test').attr('class').substr(2);

	e.preventDefault();
}

//------------------//
// HANDLE VIEW LOAD //
//------------------//
function onLoadSignup(data)
{
	$('.formContainer > button[id=form_signup_btn]').click(handleRegisterClick);
	$('#form_close_btn').click(function(){
		closeModal();
	});

	initForm();
	openModal();
}

//REGISTER
function onLoadLogin(data)
{
	//Login button
	$('.formContainer > button[id=form_login_btn]').click(handleLoginBtnClick);

	//Close Button
	$('#form_close_btn').click(function(){
		closeModal();
	});

	//Forgot password button
	$('#form_forgot_pass').bind('click', function(e){
		e.preventDefault();
		redirect(OHTV + '/services/forgotPassword');
		
		
	});

	initForm();
	openModal();
}

function redirect(url){
	location.href = url;
}

//------------------//
//HANDLE VIEW CLICK//
//------------------//
function handleRegisterClick(e)
{
	e.preventDefault();

	trace($("#oh_signup_form").serialize());
	
		$.post(OHTV + '/ohtvapi/api?doSignup=1', 
			$("#oh_signup_form").serialize(),

			function(data)
			{
				trace(data);
				data = eval('(' + data + ')');
				trace(data);
					
				//trace(data);
				
				if(data.status==1){
					//isLoggedIn = true;
					closeModal();

					window.location.href  = OHTV + '/notice';
				}
				
			});
		
}

function handleLoginBtnClick(e)
{
	e.preventDefault();

	if(validateForm())
	{
		$.post(OHTV + '/ohtvapi/api?doLogin=1', 
			$("#oh_login_form").serialize(),
			
		
			
			function(data)
			{
				trace(data);
			
				data = eval('(' + data + ')');

				if(data.status==1){
					isLoggedIn = true;
					closeModal();

					window.location.href  = OHTV + '/' +d;
				}
			});
		}
}

/*
function onSuccess(data)
{
	var data = eval(  '(' + data + ')');

	if(data.status==1){
		closeModal();
	}
}
*/

//////////////////////////////
function initForm() {     
	$(".formContainer input[type=text], input[type=password]").focus(function()
	{
		$(this).parent().find(".info").css("display", "block").css('color', 'red');     
	}).blur(function()
	{         
		$(this).parent().find(".info").fadeOut();//css("display", "none");    
	}); 
};  

var usernameRule = {min:4, max:10, specialChars:true, test:'/^([a-zA-Z0-9_-]+)$/'};
var passwordRule = {min:4, max:10, specialChars:true, test:'/^([a-zA-Z0-9_-]+)$/'};

var rules = {'username':usernameRule, 
			'password':passwordRule};

function validateEntry(value, rule)
{
	var aRule = rules[rule];	//dependency
	var valid = false;

	switch(rule)
	{
		case 'password':
			if(value.toString().length >= aRule.min && value.toString().length <= aRule.max)
			{
				
				trace('pass good');
				valid = true;

				//check special chars here
			}
			break;
			
		case 'username':
			if(value.toString().length >= aRule.min && value.toString().length <= aRule.max)
			{
				var exp = /^([a-zA-Z0-9_-]+)$/;
				
				
				trace('name good');
				
				//trace('Special Chars: ' + exp.test(value));

				valid = true;
			}
			break;
	}

	return valid;
}

function validateForm()
{
	var valid = false;
	var numFields =  $("#test input[id^=txt]").length;
	var numValid = 0;

	
	//Find all input of type text and check their 
    $("#test input[id^=txt]").each(function()
    {
    	//The value to be checked
        var text = $(this).attr("value");

        var vString = $(this).attr('class');
        	vString = vString.substr(2);

        //Eventually This will be One line
        	if(!validateEntry(text, vString))
        	{
        		$(this).parent().find(".error").css("display", "block");
        	}else{
        		$(this).parent().find(".error").css("display", "none");
        		numValid++;
        	}
        	
        	trace(text);
    });

    //var emailExpression = /^((\w+\+*\-*)+\.?)+@((\w+\+*\-*)+\.?)*[\w-]+\.[a-z]{2,6}$/i;

    //trace( emailExpression.test(testEmail) );

    trace('Valid: ' + numFields == numValid);

    return (numFields == numValid);
}
