
/* This file requires jQuery */

jQuery.download = function(url, data, method){
	//url and data options required
	if( url && data ){ 
		//data can be string of parameters or array/object
		data = typeof data == 'string' ? data : jQuery.param(data);
		//split params into form inputs
		var inputs = '';
		jQuery.each(data.split('&'), function(){ 
			var pair = this.split('=');
			inputs+='<input type="hidden" name="'+ pair[0] +'" value="'+ pair[1] +'" />'; 
		});
		//send request
		jQuery('<form action="'+ url +'" method="'+ (method||'post') +'">'+inputs+'</form>')
		.appendTo('body').submit().remove();
	};
};


var shortInfo ='';

/* General? */

function GetLesson(n)
{
	$.download('pdf/'+n,'id=3400','post');
}

function DisplaySubContent(subsection_anchor)
{
	//ClearForm('lessons_signup');
	ResetPage();
	// Clear any displayed messages
    $('#message').html("");
    //HideOtherSubContentAreas()
	$('.section').next('div').css('display','none');
    
    // right now using .title, but should go back to using .url
	anchor_name = subsection_anchor.substring(1,subsection_anchor.length);
   
    // if subsection = inscripcion then reset to start view (no signup form)
    // if not visible show current section
	$('#'+anchor_name).next('div').css('display','block');
    //alert('are we getting here? ' + $('#'+anchor_name+':parent').html());
    // or
    //$('.sections>li:eq('+sectionIndex+')').toggleClass('active');
    //$('#'+anchor_name).click();
	//  $('#lessons_info').html(shortInfo);
}

/*** Lessons page ***/

function ExpandInfo()
{
	var isExpanded = $('.content_text .main_text').hasClass("expanded");
	if (isExpanded)
	{
		ContractInfo();
		return;
	}
	$.get('lecciones/info', {},
        function(data) {
			// hide sections
			$('div.section').css("display","none");
			// store unexpanded text
			shortInfo = $('.content_text .main_text').html();
			$('.content_text .main_text').html(data);
			$('.content_text .main_text').addClass("expanded");
			$('.content_text .more_info').html("Menos...");
			
        });
}

function ContractInfo()
{
	// global object should exist with shortinfo text
	
	$('div.section').css("display",""); // show sections
	$('.content_text .main_text').html(shortInfo); // replace original short text
	
	$('.content_text .more_info').html("Mas informacion");
	$('.content_text .main_text').removeClass("expanded");
    this.location = '#';
}

function ShowSignUpForm()
{
    // hide login div
	$('#lessons_login').css("display","none");
	// hide signup text div
    $('#lessons_signup_text .section_content').css("display","none");
	// show signup form div
    $('#signup_form').css("display","block");
    
	// Assign each form field a function to clear messages when clicked
	 $('#signup_form input[type=text]').each(function(){
		
		$(this).click(function(){
			$('#lessons_signup div.message').html("");
		});

	 });
    // clear text from div
   // formX = $('#signup_form').html();
    //$('#signup_form').html("");
    //$('#lessons_signup_form').html(formX)
    
    //$('.frm').css({"visibility": "visible"});
    //$('#lessons_login').css({"visibility": "hidden"});
}

function HideForm()
{
    //$('.frm').css({"visibility": "hidden"});
}

// Used to validate action to retrieve a students lessons
function ValidateLoginAttempt()
{
	// should take id and password
	
	studentId = $('#studentcode').val();
	$('#student_info').html("");
	$('#lessons_login .message').html("");
    if (!studentId)
    {
        $('#lessons_login div.message').html("please enter a value");
        return;
    }
	// make sure input in numeric and of a certain length
	
	// if student info already displayed do nothing
    GetStudentInfo(studentId)
    // find out where is the message div getting noned
}

function GetStudentInfo(id)
{
    // reset page elements (message divs, forms, etc)
	ResetPage();
	
	$.post("lecciones/get_student_info", {'id': id},
        function(data){
        $('#student_info').html(data);
    });
    // what if there is a error with the post? do we need a handler?
	
	// Make div visible
	$('#lessons_login').css('display','block');
	$('#student_info').css('display','block');
    // remove signup section
    $('#lessons_signup').css("display","none"); // why not lessons_signup
    
}

function RequestClave() {
    
    email = $('#retrieve_clave input[type=text]').val();
    // validate email
    $.post("send_clave_request", {'email': email},
        function(data){
        $('#retrieve_clave .message').html(data);
    });
    
}

function SubmitNewStudentEntry()
{
    // Get Form Data
    var theform = $('#signup_form');
    // create object for input values from student form
	var post_request_params = new Object; // = {};
	// add the values from the form inputs into the object (only text types)
    $(':input[type=text]', theform).each(function(){
        // should probably validate value right here instead of later on
		post_request_params[this.name] = this.value
    })
	// validation of inputs
	if (!ValidateFormFields(post_request_params))
    {
        $('#lessons_signup div.message').html("Se necesitan llenar todos los campos indicados");
		return;
    }
	// get the textarea field into the object
	var textarea_val = '';
	$(':input[type=textarea]', theform).each(function(){
		// need to validate content with regex
		textarea_val = this.value
        post_request_params[this.name] = this.value
    })
	if (textarea_val == '')
	{
		$('#lessons_signup div.message').html("Se necesita llenar el campo 'porque' ");
		return;
	}
    
    // input fields have been succesfully validated, we can send request
	
	$.ajax({
		type: 'POST',
		url: 'lecciones/newstudent',
		dataType:'html',
		data: post_request_params,
		success:function(xhr_response_data) {
			if (/^Error/.test(xhr_response_data))
			{
				DisplayNewStudentErrorMessage(xhr_response_data);
			}
			else //success
			{
				$('#lessons_signup_text').css("display","none");
				DisplayNewStudentSuccessMessage(xhr_response_data+'<br>');
				$('#lessons_signup div.success').css("display","block");
			}
		},
		error:function (xhr, ajaxOptions, thrownError){
			//alert(xhr.status);
			DisplayNewStudentErrorMessage("Error: Problema con el servidor.  Contacte al administrador");
		}    
	});

}

// TODO: current implementation temporary, good enough for now
//  Need to create full-featured all purpose function
function ValidateFormFields(fields_object)
{
    errors = new Object();
	
    for (input_field in fields_object)
    {
		// for now just return if there is one blank field in a required field
		if($('#signup_form label[for='+input_field+'] span.required').hasClass('required'))
		{
			if(fields_object[input_field] == '')
			{
				return false;
			}
		}
		// Check also for text exceeding maxlength
		var max_length = $('#signup_form input[name='+input_field+']').attr('maxlength');
		if(fields_object[input_field].length > max_length)
		{
			return false; // need specific errors
		}
		// TODO: Need to add specific type validation [addresses, email, phone, etc]
    }
    return true;
}


function DisplayNewStudentSuccessMessage(message)
{
	ClearForm('lessons_signup');
	$('#signup_form').css("display","none"); // Hide form
	
	$('#lessons_signup div.success').css("padding","25px 25px");
	$('#lessons_signup div.success').html(message);
}

// TODO: Need to have a better way to handle this
function DisplayNewStudentErrorMessage(message)
{
	ClearForm('lessons_signup');
	$('#signup_form').css("display","none"); // Hide form
	
	$('#lessons_signup div.success').css("padding","25px 25px");
	$('#lessons_signup div.success').html(message + '<br><a href="lecciones">Otra vez</a>');
}

// Clears all dynamic content elements TODO: need parameter for exceptions
function ResetPage()
{
	// lessons registration elements
	ClearForm('lessons_signup');
	$('#signup_form').css("display","none"); // Hide form
	
	// lessons access elements
	$('#student_info').html("");
	$('#studentcode').val("");
	$('#lessons_login .message').html("");
}

function ClearForm(container_id)
{
	$('#'+container_id+' .message').html("");
	theForm = $('#'+container_id+' form');
	$(':input[type=text]', theForm).each(function(){

        //$('#signup.message').append(this.value+'<br>');
        this.value = '';
    })
	$(':input[type=textarea]', theForm).each(function(){
        this.value = '';
    })
	// what about other types?
	/*case "text":
	case "password":
	case "textarea":
	case "hidden":
	
	elements[i].value = "";
	break;
	
	case "radio":
	case "checkbox":
	
	if (elements[i].checked) {
	
	elements[i].checked = false;
	
	}
	break;
	
	case "select-one":
	case "select-multi":*/
}





/* Experimental 

function ExpandMenu(name)
{
    $('a[href='+name+']').click();
    alert('shold have clisked ' + $('a[href='+name+']').html());
}
function Tableize(dataArray)
{
    if (!dataArray || !dataArray.length > 0)
    {
        // log error
        return "error";
    }
    
    // Construct table
	var table = "<table class='results'>{{content}}</table>";
	var head = "<thead><tr>{{columns}}</tr></thead>";
	var body = "<tbody>{{rows}}</tbody>"
    
    // Get columns
	var columns = new Array();
	var columnString = '';
	for (columnName in dataArray[0])
	{
		columns.push(columnName);
		columnString = columnString + '<td>'+columnName+'</td>\n'
	}
    
    // Get body
	var rowString = '';
	for (dataRow in dataArray)
	{
		rowString = rowString + '<tr>\n';
		for (dataColumn in columns)
		{
			rowString = rowString + '<td>' + dataArray[dataRow][columns[dataColumn]] + '</td>\n';
		}
		rowString = rowString + '</tr>\n';
	}
    
    // fill in header
	head = head.replace("{{columns}}",columnString);
    
    // fill in body
	body = body.replace("{{rows}}",rowString);
	tableContent = head + body;
	// fill in table
	table = table.replace("{{content}}", tableContent);
    
    return table;
}

function SimulateDataTable()
{
	var data = new Array();
	data[0] = {name:"a name",desc:"a description",url:"/the_url"};
	data[1] = {name:"another name",desc:"another description",url:"/the_url2"};
	data[2] = {name:"a third name",desc:"a third description",url:"/the_url3"};
	
	var tbl = Tableize(data);
	
	return tbl;
	
}

function Tableize2()
{
    if (!dataArray || !dataArray.length > 0)
    {
        // log error
        return "error";
    }
    
    // Construct table
	var table = "<table class='results'>{{content}}</table>";
	var head = "<thead><tr>{{columns}}</tr></thead>";
	var body = "<tbody>{{rows}}</tbody>"
    
    // Get columns
	var columns = new Array();
	var columnString = '';
	for (columnName in dataArray[0])
	{
		columns.push(columnName);
		columnString = columnString + '<td>'+columnName+'</td>\n'
	}
    
    // Get body
	var rowString = '';
	for (dataRow in dataArray)
	{
		rowString = rowString + '<tr>\n';
		for (dataColumn in columns)
		{
			rowString = rowString + '<td>' + dataArray[dataRow][columns[dataColumn]] + '</td>\n';
		}
		rowString = rowString + '</tr>\n';
	}
    
    // fill in header
	head = head.replace("{{columns}}",columnString);
    
    // fill in body
	body = body.replace("{{rows}}",rowString);
	tableContent = head + body;
	// fill in table
	table = table.replace("{{content}}", tableContent);
    
    return table;
    
}

*/

