function giveExampleInput(keyword) {
	var textarea = document.getElementsByName("sequence");
	textarea = textarea[0];
	if (keyword == "smad") {
	    textarea.value = "\>sp|O15105|SMAD7_HUMAN Mothers against decapentaplegic homolog 7 OS=Homo sapiens GN=SMAD7 PE=1 SV=1\nMFRTKRSALVRRLWRSRAPGGEDEEEGAGGGGGGGELRGEGATDSRAHGAGGGGPGRAGCCLGKAVRGAKGHHHPHPPAAGAGAAGGAEADLKALTHSVLKKLKERQLELLLQAVESRGGTRTACLLLPGRLDCRLGPGAPAGAQPAQPPSSYSLPLLLCKVFRWPDLRHSSEVKRLCCCESYGKINPELVCCNPHHLSRLCELESPPPPYSRYPMDFLKPTADCPDAVPSSAETGGTNYLAPGGLSDSQLLLEPGDRSHWCVVAYWEEKTRVGRLYCVQEPSLDIFYDLPQGNGFCLGQLNSDNKSQLVQKVRSKIGCGIQLTREVDGVWVYNRSSYPIFIKSATLDNPDSRTLLVHKVFPGFSIKAFDYEKAYSLQRPNDHEFMQQPWTGFTVQISFVKGWGQCYTRQFISSCPCWLEVIFNSR";
	} else if (keyword == "mc4r") {
		textarea.value = "MVNSTHRGMH TSLHLWNRSS YRLHSNASES LGKGYSDGGC YEQLFVSPEV FVTLGVISLL ENILVIVAIA KNKNLHSPMY FFICSLAVAD MLVSVSNGSE TIVITLLNST DTDAQSFTVN IDNVIDSVIC SSLLASICSL LSIAVDRYFT IFYALQYHNI MTVKRVGIII SCIWAACTVS GILFIIYSDS SAVIICLITM FFTMLALMAS LYVHMFLMAR LHIKRIAVLP GTGAIRQGAN MKGAITLTIL IGVFVVCWAP FFLHLIFYIS CPQNPYCVCF MSHFNLYLIL IMCNSIIDPL IYALRSQELR KTFKEIICCY PLGGLCDLSS RY";
	} else if (keyword == "mxd1") {
		textarea.value = 'MAAAVRMNIQMLLEAADYLERREREAEHGYASMLPYNNKDRDALKRRNKSKKNNSSSRSTHNEMEKNRRAHLRLCLEKLKGLVPLGPESSRHTTLSLLTKAKLHIKKLEDCDRKAVHQIDQLQREQRHLKRQLEKLGIERIRMDSIGSTVSSERSDSDREEIDVDVESTDYLTGDLDWSSSSVSDSDERGSMQSLGSDEGYSSTSIKRIKLQDSHKACLGL';
	}
}

function validateSequence(sequence) {
	try {
		if (sequence.replace(/\s/g, "") == "") {
			var errStr = "Input sequence cannot be empty. Please enter an input sequence (amino acid sequence only)";
			errStr += "<br/><br/>";
			throw errStr;
		}

		if (sequence.length < 17) {
			var errStr = "Input sequence is less than 17 residues. PredictProtein currently cannot process short sequences. Please revise your input.";
			errStr += "<br/><br/>";
			throw errStr;
		}

		if (sequence.length > 6000) {
			var errStr = "Input sequence over 6000 residues. PredictProtein currently cannot process very long sequences. Please revise your input.";
			errStr += "<br/><br/>";
			throw errStr;
		}

		sequence = sequence.replace(/\s/g, "");
		var allowed = new RegExp("[^acdefghiklmnpqrstvwy]", "gi");
		var errors;
		errors = sequence.match(allowed);
	//	document.write(sequence);
		
		if (errors) {
			var errStr = "There are illegal characters:";
			errStr += "<br/><br/>";
			errStr += errors;
			errStr += "<br/><br/>";
			errStr += "Please revise your entry and include only the amino acid sequnece in your query.";
			errStr += "<br/><br/>";
			throw errStr;
		}

		allowed = new RegExp("[^agct]", "gi");
		errors = sequence.match(allowed);
		if (errors == null) {
			var errStr = "This input seems to be a nucleic acid sequence. Currently this service only processes amino acid sequences.";
			errStr += "<br/><br/>";
			errStr += "Please revise your entry and include only the amino acid sequnece in your query.";
			errStr += "<br/><br/>";
			throw errStr;
		}

	} catch (errors) {
		return errors;
	}
	return null;
}

function get_prot_name(sequence) {
	var protein_name = '';
	var RE_HEADER = /^(\s*|\t*)\>/;
	arr = sequence.split("\n");
	for ( var i = 0; i < arr.length; i++) {
		if (RE_HEADER.test(arr[i])) {
		    var RE_PROT_NAME = /\|(\w+)\|(\w+)/;
		    re = new RegExp(RE_PROT_NAME);
		    result = re.exec(arr[i]);
		    if ((result) && (result[2]))
			protein_name = result[2];
		}
	}
	return protein_name;
}

function toggle_text(element_id) {
	element_id = "#" + element_id;
	if ($(element_id).val() == 'PredictProtein') {
		$(element_id).val('Please wait...');
		$(element_id).attr('disabled', 'disabled');
	} else {
		$(element_id).val('PredictProtein');
		$(element_id).attr('disabled', '');
	}
}

$(document)
		.ready(
				function() {
//					$("#submit-feedback").draggable();

					$("#bttnClose").click(function() {
						popup('submit-feedback');
						$("#jobstat").stopTime('controlled');
						toggle_text("runBttn");
					});


					$("#blanket").click(function() {
						popup('submit-feedback');
						$("#jobstat").stopTime('controlled');
						toggle_text("runBttn");
					});

					// Process submission
					$('#runBttn')
							.click(
									function() {
										toggle_text('runBttn');
										var sequence = $('#sequence').val()
										var prot_name = get_prot_name(sequence);
										var tmp_seq = '';
										var protein_name = '';
										var RE_HEADER = /^(\s*|\t*)\>/;
										arr = sequence.split("\n");
										for ( var i = 0; i < arr.length; i++) {
											if (!RE_HEADER.test(arr[i])) {
												tmp_seq += arr[i];
											}
										}
										sequence =  tmp_seq.replace(/^\s*|\s*|\n*$/g,'');
										var err_text = validateSequence(
												sequence);
										if (err_text != null) {
											$("#submit-message").css("color",
													"red");
											$("#submit-message").html(err_text);
											$("#submit-message").css("display",
													"block");
											popup('submit-feedback');
											$('#sequence').focus();
											return;
										}
										$("#submit-message").css("color",
												"black");

										if (!prot_name)
											prot_name = $("input#protein_name")
													.val();

										uid = $("input#dbid").val();
										email = $("input#email_address").val();
										//seq = sequence;
										// document.write
										// ("lib/requestadd.php?userid="+uid+"&email="+email+"sequence="+seq);
										// send to server and process response
										$
												.post(
														"lib/requestadd.php",
														{
															prot_name : prot_name,
															userid : uid,
															email : email,
															sequence : sequence
														},
														function(data, status,
																xhr) {
															if (xhr.status == 201) {
																var reqid = data.reqid;
																var tmpStr = '<div id="submission-success">';
																tmpStr += '<h1 id="feedback-title">Your Job was Submitted for Processing</h1><br/>';
																tmpStr += '<table border=1 width=100%>';
																tmpStr += '<tr><th>Request ID </th><th>Status</th></tr> ';
																tmpStr += '<tr><td>'
																		+ reqid
																		+ '</td>';
																tmpStr += '<td><div id="jobstat"><img src="img/loader.gif"/><div id="jobstat-desc">submitted</div></div></td></tr>';
																tmpStr += '</table>';
																tmpStr += '<br/><br/>';

																tmpStr += '<div id="submission-info">';

																tmpStr += "<strong>Note</strong>: Waiting times for results may vary between jobs, however waiting time over 8 hours indicates errors in the system. "
																		+ "Please contact the <a href='mailto:admin@predictprotein.org'>admin</a>"
																		+ " if this occurs.<br/>";
																tmpStr += "Visit <a target='_blank' href='"+site_root+"getqueries.php'>My Predictions</a> to view a list of past-submitted jobs.";
																tmpStr += '</div>';
																tmpStr += '</div>';

																$(
																		"#submit-message")
																		.html(
																				tmpStr);

																$("#jobstat")
																		.everyTime(
																				1000,
																				'controlled',
																				function() {
																					$
																							.post(
																									"lib/getJobStatus.php",
																									{
																										jid : reqid
																									},
																									function(
																											response,
																											status,
																											xhr) {

																										if (xhr.status == 200) {
																											if (response.status == "Completed") {
																												$(
																														"#jobstat")
																														.stopTime(
																																'controlled');
																												$(
																														"#feedback-title")
																														.text(
																																"Job Completed");
																												$(
																														"#jobstat")
																														.html(
																																'<img src="img/completed.gif">  '
																																		+ ' Click one of the orange buttons to view results '
																																		+ '<a target="_blank" href="get_results.php?req_id='
																																		+ reqid
																																		+ '" class="format" title="Complete data formatted for web presentation." rel="nofollow">html</a> '
																																		+ '<a target="_blank" href="get_visual_results.php?reqid='
																																		+ reqid
																																		+ '" class="format" title="Visualized data (beta)." rel="nofollow">visual</a> '
																																		+ '<a target="_blank" href="predictprotein_text_source?reqid='
																																		+ reqid
																																		+ '" class="format" title="Complete data in the original flat text format." rel="nofollow">text</a> '
																																		+ '<a target="_blank"  href="predictprotein_xml_source?reqid='
																																		+ reqid
																																		+ '" class="format" title="Complete data in XML format." rel="nofollow">xml</a> '
																																		+ '<a target="_blank"  href="predictprotein_text_source?reqid='
																																		+ reqid
																																		+ '&fasta=1" class="format" title="Sequence data in FASTA format." rel="nofollow">fasta</a></td>');
																											} else if (response.status
																													.toLowerCase() == "error") {
																												'Job Processing failed. Please contact <a href="mailto:admin@predictprotein.org?subject=Request ID:'
																														+ reqid
																														+ '>admin</a>.';
																												$(
																														"#feedback-title")
																														.text(
																																"Processing Failed");

																											} else {
																												$(
																														"#jobstat-desc")
																														.html(
																																response.status);
																											}
																										}
																									},
																									"json");
																				});
															} else if (xhr.status == 200) {
																if (data.error == "subscription_required") {
																	window.location = "subscribe.php";
																	$(
																			"#submit-message")
																			.html(
																					'Subscription required.');
																	// The
																	// service
																	// allows up
																	// to 3 free
																	// queries.
																	// To submit
																	// more
																	// queries
																	// to the
																	// server
																	// please <a
																	// href="subscribe">subscribe</a>.');
																} else {
																	$(
																			"#submit-message")
																			.html(
																					'Submission failed. Please contact <a href="mailto:admin@predictprotein.org">admin</a>.'
																							+ 'Please note this error message: '
																							+ data.error);
																}
															}
															popup('submit-feedback');
														}, "json");
									});
				});

