var question_visible = 0;
var waiting = 0;
var isUploading = 0;

$(document).ready(function() {
	$("a").focus(function() { $(this).blur(); });
	
	$('#loading').ajaxStart( function() { ajax_waiting_start(); } );
	$('#loading').ajaxStop(function() { ajax_waiting_stop(); } );
});

function setup_radios() {
	jQuery("input.radio").click(function() {
		if (jQuery(this).hasClass('is_checked')) {
			jQuery(this).removeClass('is_checked').attr('checked',false);
		} else {
			var name = jQuery(this).attr('name');
			jQuery('input[name=' + name + ']').removeClass('is_checked');			
			jQuery(this).addClass('is_checked');
		}
	})
}

function ajax_waiting_start() {
	$('#loading').fadeIn();
}
function ajax_waiting_stop() {
	$('#loading').fadeOut();
}
function upload_waiting_start() {
	isUploading = 1;
	$('#uploading').fadeIn();
}
function upload_waiting_stop() {
	isUploading = 0;
	$('#uploading').fadeOut();
}

function toggle_question(q) {
	/* old logic: confirm section before opening new section */
	/*
	if (waiting == 0) {
		waiting = 1;			
		if (question_visible == q) {
			//close question
			validate_question(0);
		} else if (question_visible > 0) {
			//close previous question, open new question
			validate_question(q);
		} else {
			//open new question
			ajax_load_question(q, false);
			question_visible = q;
		}
	}
	*/
	/* new logic: allow opening and closing of any section */
	if (question_visible == q) {
		var form = "#open_form";
		var form_data = $(form).serialize();
		var data_object = { q: question_visible, qd: form_data }
		jQuery.post('/validate.php', data_object);		
		question_visible = 0;

		var container = "#q" + q + "data";
		$('#ql' + q + ' a img').attr('src','/images/btnExpand.gif');
		$(container).slideUp('normal', function() { 
			$(container).html(''); 
		});	
	} else {
		if (question_visible > 0) {
			var form = "#open_form";
			var form_data = $(form).serialize();
			var data_object = { q: question_visible, qd: form_data }
			jQuery.post('/validate.php', data_object);		
			
			var container = "#q" + question_visible + "data";		
			$('#ql' + question_visible + ' a img').attr('src','/images/btnExpand.gif');
			question_visible = q;
			$(container).slideUp('normal', function() { 
				$(container).html(''); 
				ajax_load_question(question_visible, false);
			});	
		} else {
			question_visible = q;
			ajax_load_question(question_visible, false);		
		}
		
		
	}
}
function next_step() {
	if (question_visible < 6) {
		validate_question(question_visible + 1);	
	} else {
		validate_question(-1);
	}
}
function validate_question(q) {
	//q = id to open after validation	
	var form = "#open_form";
	var form_data = $(form).serialize();
	
	var data_object = { q: question_visible, qd: form_data }
	jQuery.post('/validate.php', data_object, function(data) {
		var is_valid = false;
				
		if ($(data).find('valid').text() == '1')
			is_valid = true;
			
		if (is_valid) {
			var container = "#q" + question_visible + "data";
			$('#ql' + question_visible + ' a img').attr('src','/images/btnExpand.gif');
			$(container).slideUp('normal', function() { 
				$(container).html(''); 
				if (q > 0)
					ajax_load_question(q, false);
				else if (q == -1)
					submit_form();
				else
					waiting = 0;
			});
			question_visible = q;
		} else {
			var reasons = $(data).find('reasons').text();
			$('div.question_data input').removeClass('error');
			$('div.question_data textarea').removeClass('error');
			$('span.error').removeClass('error');
			$('#error').fadeIn();
			var parts = reasons.split(",");
			for(var i=0; i<parts.length; i++) {
				$('#' + parts[i]).addClass('error');
			}
		}
		
		waiting = 0;
	}, "xml");	
}
function ajax_load_question(q, bForceValidate) {
	var container = "#q" + q + "data";
	jQuery.get('/ajax.php', { question: q }, function(data) {
		$(container).html(data);
		$('#ql' + question_visible + ' a img').attr('src','/images/btnContract.gif');
		$(container).slideDown('normal', function() { waiting = 0; if (bForceValidate ) validate_question(-1); });
		setup_radios();
	});	
}
function upload_save() {
	var form = "#open_form";
	var form_data = $(form).serialize();
	
	var data_object = { q: question_visible, qd: form_data }
	jQuery.post('/validate.php', data_object);
}

function submit_form() {
	waiting = 0;
	if (question_visible > 0) {
		validate_question(-1);
	} else {
		submit_form_complete();	
	}
}

function submit_form_complete() {
	var data_object = { q:-1 }
	jQuery.post('/validate.php', data_object, function(data) {
		var is_valid = false;
				
		if ($(data).find('valid').text() == '1')
			is_valid = true;
			
		if (is_valid) {
			location.href = "submit.php";
		} else {
			var section = $(data).find('section').text();
			var reasons = $(data).find('reasons').text();
			question_visible = section;
			ajax_load_question(section, true);
		}
	}, "xml");
}
function show_popup(position_start, container, offset_x, offset_y) {
	var offset = $(position_start).offset();

	offset.left += offset_x;
	offset.top += offset_y;
	
	$(container).css('top', offset.top + "px");
	$(container).css('left', offset.left + "px");
	
	var link_background = jQuery('<div id="link_background"></div>');
	link_background.css('opacity', '0');
	$('body').append(link_background);
	
	link_background.fadeTo(250, 0.8, function() {
		$(container).fadeTo(250, 1);										  
	});
	
	
	$('#link_background').click(function() {
		$(container).fadeTo(250, 0, function() {
			$(container).hide();
  		    $('#link_background').fadeTo(250, 0, function() {
				$('#link_background').remove();									 
			});
		});
	});
}

function show_popup2(position_start, container, offset_x, offset_y, target_width, target_height) {
	var offset = $(position_start).offset();

	
	var link_background = jQuery('<div id="link_background"></div>');
	link_background.css('opacity', '0');
	$('body').append(link_background);
	
	link_background.fadeTo(250, 0.8, function() {
		var target_top = offset.top + offset_y;
		var target_left = offset.left + offset_x;
		
		$(container).width(0);	  
		$(container).height(0);
		$(container).css('top', offset.top + "px");
		$(container).css('left', offset.left + target_width + "px");
		$(container).show();
		
		$(container).animate({width: target_width, height: target_height, top: target_top, left: target_left}, 250);
	});
	
	
	$('#link_background').click(function() {
		$(container).animate({width: 0, height: 0, top: offset.top, left: offset.left + target_width}, 250, function() {
			$(container).hide();
  		    $('#link_background').fadeTo(250, 0, function() {
				$('#link_background').remove();									 
			});
		});
	});
}
function feedback() {
	show_popup('#feedback', '#feedback-form', -290, -220);	
}
function terms() {
	show_popup("#lnk-terms", "#terms", 0, -389);
}
function privacy_policy() {
	show_popup("#lnk-privacy-policy", "#privacy-policy", 0, -389);
}
function share() {
	show_popup("#lnk-share", "#share", -79, -300);
}
function show_help(section) {
	var help_height = new Array(0,443,573,673,713,553,503);
	
	show_popup2("#q" + section + "data", "#help" + section, 0,6, 761, help_height[section]);
}
function close_help() {
	$('#link_background').click();	
}
function close_popup() {
	$('#link_background').click();	
}

function share_email() {
	show_popup3('#share', '#email-form', 237, -90);	
}
function show_popup3(position_start, container, offset_x, offset_y) {
	var offset = $(position_start).offset();

	offset.left += offset_x;
	offset.top += offset_y;
	
	$(container).css('top', offset.top + "px");
	$(container).css('left', offset.left + "px");
	
	$(container).fadeTo(250, 1);										  
	
	$('#link_background').click(function() {
		$(container).fadeTo(250, 0, function() {
			$(container).hide();
		});
	});
}

function show_optional_group(g, g2) {
	var container = "#opg" + g;
	var lnk = "#lnk-opg" + g;
	$(lnk).fadeOut(500, function() {
		$(container).slideDown(500, function() {
			if (g2 > 0) {
				if (jQuery("#opg" + g2).css('display') == 'none') {
					var lnk2 = "#lnk-opg" + g2;
					$(lnk2).fadeIn(500);
				}
			}
		});							 
	});
}
function hide_optional_group(g, fields, buttons) {
	for(var i=0; i<fields.length; i++) {
		$('#q' + fields[i]).val('');
		$('input[name=q' + fields[i] + ']').attr('checked',false);
	}
	
	var container = "#opg" + g;
	$(container).slideUp(500);
	
	var first = 0;
	for(i=0; i<buttons.length; i++) {
		if (first == 0 && (jQuery("#opg" + buttons[i]).css('display') == 'none' || g == buttons[i])) {
			first = buttons[i];
		} else {
			var lnk = "#lnk-opg" + buttons[i];
			$(lnk).fadeOut(1);
			
		}
	}
	if (first > 0) {
		var lnk = "#lnk-opg" + first;
		$(lnk).fadeIn(500);
	}
}

function radio_dependents(s) {
	var parts = s.split(',');
	for(var i=0; i<parts.length; i+=2) {
		var c_id = parts[i];
		var c_show = parts[i + 1];
		if (c_show == 1)
			$('#opg' + c_id).slideDown();
		else
			$('#opg' + c_id).slideUp();
	}
}

function check_dependents(c, id) {
	if (c)
		$('#opg' + id).slideDown();
	else
		$('#opg' + id).slideUp();
}

function set_file(real_name, display_name) {
	document.open_form.q8.value = real_name + "|||" + display_name;
	$('#file_name').html(display_name);
	$('#file_output a').show();
	$('#file_output').slideDown();
	$('#file_controls').slideUp();
	upload_waiting_stop();
	
	//force a save (or else they could close the browser and the upload is lost)
	upload_save();
}
function remove_file() {
	document.open_form.q8.value = "";	
	$('#file_output').slideUp();
	$('#file_controls').slideDown();
}
function set_file_error(error_number) {
	/*
		1 - No file uploaded
		2 - Upload error
		3 - File too large
		4 - Not a PDF
	*/
	document.open_form.q8.value = "";	
	
	var s = "";
	switch(error_number) {
		case 1:
			s = "Error: No file uploaded.";
			break;
		case 2:
			s = "Error: Upload error.";
			break;
		case 3:
			s = "Error: File too large.";
			break;
		case 4:
			s = "Error: Not a PDF file.";
			break;
	}
	
	$('#file_output a').hide();
	$('#file_name').html(s);
	$('#file_output').slideDown();
	$('#file_controls').slideDown();
	upload_waiting_stop();
}


function begin_upload() {
	document.open_form.submit();
	upload_waiting_start();
}

function iframe_status() {
	setTimeout("upload_timeout()", 2000);
}

function upload_timeout() {
	if (isUploading == 1) {
		set_file_error(3);	
	}
}

function send_feedback() {
	var txtName = '#txtFeedbackName';
	var txtEmail = '#txtFeedbackEmail';
	var txtComments = '#txtFeedbackComments';
	
	if ($(txtName).val().length == 0) {
		$(txtName).addClass('error');
		return;
	} else {
		$(txtName).removeClass('error');
	}
	if ($(txtEmail).val().length == 0) {
		$(txtEmail).addClass('error');
		return;
	} else {
		$(txtEmail).removeClass('error');
	}
	if ($(txtComments).val().length == 0) {
		$(txtComments).addClass('error');
		return;
	} else {
		$(txtComments).removeClass('error');
	}
	
	var form = "#frm_feedback";
	
	var data_object = { name: $(txtName).val(), email: $(txtEmail).val(), comments: $(txtComments).val() }
	jQuery.post('/feedback.php', data_object, function(data) {
		$(form).html('Thank you.');								   
	});
}

function send_email() {
	var txtName1 = '#txtEmailName1';
	var txtEmail1 = '#txtEmail1';
	var txtName2 = '#txtEmailName2';
	var txtEmail2 = '#txtEmail2';
	var txtMessage = '#txtEmailMessage';
	
	var email_fields = new Array(txtName2, txtEmail2, txtName1, txtEmail1, txtMessage);
	
	for(var i=0; i<email_fields.length; i++) {
		if ($(email_fields[i]).val().length == 0) {
			$(email_fields[i]).addClass('error');
			return;
		} else {
			$(email_fields[i]).removeClass('error');	
		}
	}
	
	var form = "#frm_email";
	
	var data_object = { name1: $(txtName1).val(), email1: $(txtEmail1).val(), name2: $(txtName2).val(), email2: $(txtEmail2).val(), message: $(txtMessage).val() }
	jQuery.post('/share_email.php', data_object, function(data) {
		$(form).html('Thank you.');								   
	});
}
