/*******************************************************************************
____________________________ API DOCUMENTATION BEGIN ___________________________
````````````````````````````````````````````````````````````````````````````````
Support for calculator on cml-tests/cytogenetic-test-results.htm (IA 1.5.4)

````````````````````````````````````````````````````````````````````````````````
_____________________________ API DOCUMENTATION END ____________________________
*******************************************************************************/
  
//trims string
String.prototype.trim = function () {
 return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

//FUNCTION-- checks numeric value
function isNumeric(myText) {
 var charpos = myText.search("[^0-9]"); 
 if(myText.length > 0 && charpos >= 0) {return false;}
 return true;
}

//FUNCTION-- checks for spaces
function hasNoSpaces(myText) {
 var charpos = myText.search(/\s/); 
 if(myText.length > 0 && charpos >= 0) {return false;}
 return true;
}

//FUNCTION-- clears field
function clearField() {
    document.forms[0].numberField.value = "";
}

//FUNCTION-- displays alert message 
function showMessage(argMessage) {
 switch(argMessage)
 {
  case 1:
   alert("The Philadelphia chromosomes value must be a whole number between 0 and 20.");
   break;
  case 2:
   alert("Please enter a value for Philadelphia chromosomes.");
   break;
  }
}

//FUNCTION-- resets CSS of table rows
function resetTable() {
 var cssClassColor = "";
 for(var r=0;r<5;r++)
 {
  if(cssClassColor == "color03") cssClassColor = "color02";
  else cssClassColor = "color03"; 

  setCssClass("results0"+r, cssClassColor);
 }
}

//FUNCTION-- sets CSS of table rows depending on calculator results
function setTableRow(argValue) {
    window.location.href = "#calResults";
      window.location.href = window.location.href + "?philchrome=" + document.forms[0].numberField.value;
 if(argValue == 0) {setCssClass("results00", "chartResults");}
 else if(argValue >=1 && argValue <=35) {setCssClass("results01", "chartResults");}
 else if(argValue >= 36 && argValue <=65) {setCssClass("results02", "chartResults");}
 else if(argValue >=66 && argValue <=95) {setCssClass("results03", "chartResults");}
 else if(argValue >=96) {setCssClass("results04", "chartResults");}
 else {alert("Out or Range");}
}
 
//FUNCTION-- calculate logic
function calculate() {
 resetTable();
 var philadelphiaChromosomesValue = new String(document.forms[0].numberField.value);  //get value
 philadelphiaChromosomesValue = philadelphiaChromosomesValue.trim(); //clean it up

 //do we have a value to work with
 if(!philadelphiaChromosomesValue.length >0) {showMessage(2);} //no value show message
 else //we have a value
 {
  if(isNumeric(philadelphiaChromosomesValue)) //verify numeric type
  {
   philadelphiaChromosomesValue = parseInt(philadelphiaChromosomesValue); //get whole number

   if(philadelphiaChromosomesValue >=0 && philadelphiaChromosomesValue <=20) //does value fall within range
   {
    setTableRow((philadelphiaChromosomesValue/20) * 100); //set table row based on results value
   }
   else {showMessage(1); clearField();} //display alert and reset field
  }
  else {showMessage(1); clearField();} //display alert and reset field
 }
}