var request = null;

try{
	request = new XMLHttpRequest();
}catch (trymicrosoft){
	try{
		request = new ActiveXObject("Msxml2.XMLHTTP");
	}catch(othermicrosoft){
		try{
			request = new ActiveXObject("Microsoft.XMLHTTP");
		}catch(failed){
			request = null;
		}
	}
}

if(request == null)
	alert("Error Creating request Object!");

function getProj(url){
	window.location = url;
}


var file_count = 0;
function addFile(){	
	var file = document.getElementById("file"+file_count).value;
//	var nb = document.createElement("br");
//	document.getElementById("fileSel").appendChild(nb);
	var answer = "<br>";
	answer += ("<input type='checkbox' id='inp_models' name='input_models' value ="+file+" checked/>");
	answer += file;	
	document.getElementById("fileList").innerHTML += answer;		
	var newAttr = document.createAttribute("class");
	newAttr.nodeValue = "hidden";
	document.getElementById("file"+file_count).setAttributeNode(newAttr);
	file_count++;
	var ni = document.createElement('input');
	ni.setAttribute('type','file');
	var iid = 'file'+file_count;
	ni.setAttribute('id',iid);
	ni.setAttribute('name',iid);
	ni.setAttribute('size',40);
	var addBtn = document.getElementById('add');
	addBtn.parentNode.insertBefore(ni,addBtn);
//	document.getElementById("fileAdd").appendChild(ni);
//	document.getElementById("fileAdd").innerHTML += ("<input type='file' id='file"+file_count+"' name='input_files"+file_count+"' size='40' />");
//	alert(document.getElementById("file"+(file_count-1)).value);	
	
}



function validateStepOne(){
	if(document.getElementById("proj_name").value == ''){
		alert("Please enter a project_name");
		return false;
		
	}else if(!/^[\w\d\_]+$/.test(document.getElementById("proj_name").value)){
		alert("Please enter a valid project name,only words,numbers and _ allowed");
		return false;
	}
	if(document.inforForm.file_organization[0].checked){
		if(document.getElementById("inp_file").value == ''){
			alert("Please select an ensemble file to proceed");
			return false;
		}
	}else if(document.inforForm.file_organization[1].checked){
		if(document.getElementById("inp_models") == null){
			alert("Please select a couple of coordinates file to proceed");
			return false;
		}
	}else{
		alert("Please select file organization option");
		return false;
	}
	document.inforForm.submit();
}

function showRefSelOption(){
//	document.getElementById("ref_models").setAttribute('class','show');
	document.getElementById("ref_models").style.display = 'inline';
}

function validateStepTwo(){
	if(document.inforForm.ref_str[1].checked){
		if(document.getElementById("ref_models").value == ''){
			alert("Please choose a reference model");
			return false;
		}
	}
	if(document.getElementById("res_sel").value == ''){
		alert("Please choose which residues are used for superimposition");
		return false;
	}else{
		var res_sel = document.getElementById("res_sel").value;
		if(res_sel == 'custom' && document.getElementById("ud_res").value == ''){
			alert("Please input residue ranges");
			return false;
		}
	}			
	document.inforForm.submit();
}

function showResSelOption(){
//	document.getElementById("resSelOption").setAttribute('class','cascade');
  	document.getElementById("resSelOption").className='cascade';
	var res_sel =  document.getElementById("res_sel").value;
	var answer = '';
	switch(res_sel){
		case 'daop':
			answer += "<label class='sub'>Cut-off for S(phi) & S(psi):</label>\n";
			answer += "<input type='radio' name='orderP_cutoff' value='std' checked onclick=\"document.getElementById('nonSD').innerHTML='';\" />PSVS standard: 0.90\n";
			answer += "<input type='radio' name='orderP_cutoff' value='non_std' onclick=showNonStandardDaop() />Non standard value\n";
			answer += "<div id='nonSD' class='sub2' />\n";
//			answer += "<input type='radio' id='opc' name='orderP_cutoff' value=0.80 />0.80\n";
//			answer += "<input type='radio' name='orderP_cutoff' value=0.85 checked/>0.85\n";
//			answer += "<input type='radio' name='orderP_cutoff' value=0.90 />0.90\n";
			break;
		case 'ivm':
			answer += "<label class='sub'>Atoms used to calculate Core Residues:</label>\n";
			answer += "<input type='radio' id='fco' name='fc_option' value='-bb' checked/>backbone\n";
			answer += "<input type='radio' name='fc_option' value='-heavy' />heavy atoms\n";
			answer += "<input type='radio' name='fc_option' value='-all' />all\n";
			break;
		case 'sse':
			answer += "<label class='sub'>Derived from:</label>\n";
			answer += "<input type='radio' name='sse_src' value='pdb' checked />PDB file if defined\n";
			answer += "<input type='radio' name='sse_src' value='dssp' />DSSP calculated\n";
			break;
		case 'custom':
			answer += "<label class='sub'>Define residues regions: eg.(1A-15A,20A-50A)</label>\n";
			answer += "<input type='text' id='ud_res' name='ud_res' />\n";
			break;
		default:
//			document.getElementById("resSelOption").setAttribute('class','hidden');
			document.getElementById("resSelOption").className = 'hidden';
			break;	
	}
	document.getElementById("resSelOption").innerHTML = answer;
}

function showNonStandardDaop(){
	var answer = "";
	answer += "<label class='sub'>Non_standard cut-off value:</label>\n";
	answer += "<input type='radio' name='nonSD_cutoff' value=0.80 />0.80\n";
        answer += "<input type='radio' name='nonSD_cutoff' value=0.85 checked/>0.85\n";
        answer += "<input type='radio' name='nonSD_cutoff' value='any'>User defined:\n";
	answer += "<input type='text' name='art_cutoff' size='5' maxlength='5' />\n";
	document.getElementById("nonSD").innerHTML = answer;
}

function showFileSelectOption(){
	var answer="";
	if(document.inforForm.file_organization[0].checked){
		answer += "<br><label class='sub'>Please Select the structure ensemble file: </label>";
		answer += '<input type="file" id="inp_file" name="input_file" size="40" />';
	}else if(document.inforForm.file_organization[1].checked){
		answer += "<div id='fileAdd'>\n";
		answer += "<br><label class='sub'>Please Select coordinate file:</label> ";								
		answer += ("<input type='file' id='file"+file_count+"' name='file"+file_count+"' size='40'  />");		
		answer += '<input type="button" id="add" name="add" value="add" onclick=addFile() />'; 
		answer += "</div>"; 
		answer += '<div id="fileList" />';		
	}		
  	document.getElementById("fileSel").setAttribute('class','cascade');
	document.getElementById("fileSel").innerHTML= answer;	
}



function validateProjName(){
	var projName = document.getElementById("proj_name").value;
	var url = "http://fps.nesg.org/cgi-bin/validateProjName.cgi?projectName="+escape(projName);
	request.onreadystatechange = showValidateProjName;
	request.open("GET",url,true);
	request.send(null);
}



function showValidateProjName(){
	if(request.readyState == 4){
		if(request.status == 200){
			var response = request.responseText;
			if(response == 0){
				var projName = document.getElementById("proj_name").value;
				var message = projName+" already existed, please choose another project name.";
				document.getElementById("proj_name").value = '';
				document.getElementById("proj_name").focus();
				alert(message);
			}
		}
	}
}

function validateRegEx(regex, input, helpText, helpMessage) {
        // See if the input data validates OK
        if (!regex.test(input)) {
          // The data is invalid, so set the help message and return false
          if (helpText != null)
            helpText.innerHTML = helpMessage;
          return false;
        }else {
          // The data is OK, so clear the help message and return true
          if (helpText != null)
            helpText.innerHTML = "";
          return true;
        }
}

function validateNonEmpty(inputField, helpText) {
// See if the input value contains any text
return validateRegEx(/.+/,
        inputField.value, helpText,
        "Please enter a value.");
}


function validateEmail(inputField, helpText) {
        // First see if the input value contains data
	if (!validateNonEmpty(inputField, helpText))
	        return false;

	// Then see if the input value is an email address
	return validateRegEx(/^[\w\.-_\+]+@[\w-]+(\.\w+)+$/,
	        inputField.value, helpText,
	        "Please enter a valid email address.");
}


























