// JavaScript Document

/* Functions from http://www.apriori-it.co.uk/DownloadToolbox.asp
Apriori_Library.js:  
*/
function Trim(STRING){
STRING = LTrim(STRING);
return RTrim(STRING);
}

function RTrim(STRING){
while(STRING.charAt((STRING.length -1))==" "){
STRING = STRING.substring(0,STRING.length-1);
}
return STRING;
}

function LTrim(STRING){
while(STRING.charAt(0)==" "){
STRING = STRING.replace(STRING.charAt(0),"");
}
return STRING;
}

function toCurrency(num) {
	num = Math.round(num*100)/100;
	var currstring = num.toString();
	if (currstring.match(/\./)) {
		var curr = currstring.split('.');
	} else {
		var curr = [currstring, "00"];
	}
	curr[1] += "00";
	curr[2] = "";
	var returnval = "";
	var length = curr[0].length;
	
	// add 0 to decimal if necessary
	for (var i = 0; i < 2; i++) 
		curr[2] += curr[1].substr(i, 1);

	// insert commas for readability
	for (i = length; (i - 3) > 0; i = i - 3) {
		returnval = "," + curr[0].substr(i - 3, 3) + returnval;
	}
	returnval = curr[0].substr(0, i) + returnval + "." + curr[2];
	return(returnval);
}

function isNumberString (i) {
var InString = "X";
var RefString="1234567890";
if(InString.length > 0) {
  for (Count=0; Count < InString.length; Count++) {
  TempChar= InString.substring (Count, Count+1);
  if (RefString.indexOf (TempChar, 0)==-1) {
       alert ("Quantity must be a number - Please Fix");
       }
    }
}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function YY_checkform() { //v4.71
//copyright (c)1998,2002 Yaromat.com
  var a=YY_checkform.arguments,oo=true,v='',s='',err=false,r,o,at,o1,t,i,j,ma,rx,cd,cm,cy,dte,at;
  for (i=1; i<a.length;i=i+4){
    if (a[i+1].charAt(0)=='#'){r=true; a[i+1]=a[i+1].substring(1);}else{r=false}
    o=MM_findObj(a[i].replace(/\[\d+\]/ig,""));
    o1=MM_findObj(a[i+1].replace(/\[\d+\]/ig,""));
    v=o.value;t=a[i+2];

    if (o.type=='text'||o.type=='password'||o.type=='hidden'){
      if (r&&v.length==0){err=true}
      if (v.length>0)
      if (t==1){ //fromto
        ma=a[i+1].split('_');if(isNaN(v)||v<ma[0]/1||v > ma[1]/1){err=true}
      } else if (t==2){
        rx=new RegExp("^[\\w\.=-]+@[\\w\\.-]+\\.[a-zA-Z]{2,4}$");if(!rx.test(v))err=true;
      } else if (t==3){ // date
        ma=a[i+1].split("#");at=v.match(ma[0]);
        if(at){
          cd=(at[ma[1]])?at[ma[1]]:1;cm=at[ma[2]]-1;cy=at[ma[3]];
          dte=new Date(cy,cm,cd);
          if(dte.getFullYear()!=cy||dte.getDate()!=cd||dte.getMonth()!=cm){err=true};
        }else{err=true}
      } else if (t==4){ // time
        ma=a[i+1].split("#");at=v.match(ma[0]);if(!at){err=true}
      } else if (t==5){ // check this 2
            if(o1.length)o1=o1[a[i+1].replace(/(.*\[)|(\].*)/ig,"")];
            if(!o1.checked){err=true}
      } else if (t==6){ // the same
            if(v!=MM_findObj(a[i+1]).value){err=true}
      }
    } else
    if (!o.type&&o.length>0&&o[0].type=='radio'){
          at = a[i].match(/(.*)\[(\d+)\].*/i);
          o2=(o.length>1)?o[at[2]]:o;
      if (t==1&&o2&&o2.checked&&o1&&o1.value.length/1==0){err=true}
      if (t==2){
        oo=false;
        for(j=0;j<o.length;j++){oo=oo||o[j].checked}
        if(!oo){s+='* '+a[i+3]+'\n'}
      }
    } else if (o.type=='checkbox'){
      if((t==1&&o.checked==false)||(t==2&&o.checked&&o1&&o1.value.length/1==0)){err=true}
    } else if (o.type=='select-one'||o.type=='select-multiple'){
      if(t==1&&o.selectedIndex/1==0){err=true}
    }else if (o.type=='textarea'){
      if(v.length<a[i+1]){err=true}
    }
    if (err){s+='* '+a[i+3]+'\n'; err=false}
  }
   
   if (s!=''){
    alert('The required information is incomplete:\n\n'+s)
    return true;
  }
  return false; // no error
}

function CheckNewMemFields() {
var err = 0;
 
 /* 'email','#S','2','Your email is invalid.',*/
err = YY_checkform('Mem','firstname','#q','0','Your first name is required.','lastname','#q','0','Your last name is required.','address','#q','0','Your address is required.','city','#q','0','Your city is required.','state','#q','1','Your state is required.','zip','#q','0','Your zip code is required.'); 
  if (!err) { 
  document.MM_returnValue=true; //good
 // continue error checking --
  if (document.Mem.email.value != '') { 
	 v = document.Mem.email.value;
	 v = Trim(v);
     rx=new RegExp("^[\\w\.=-]+@[\\w\\.-]+\\.[a-zA-Z]{2,4}$");
	 if(!rx.test(v)) {
	  alert('Your email format is invalid.');
	  document.MM_returnValue=false;
	  return;
	 }
    } // have an email
	

//alert('Mem type is ' + document.Mem.Membership_Type.value);

if (document.Mem.Membership_Type.value == "Industry") { // Industry (individual) Membership
 
/* Depending on which NAPO status is selected, verify they filled in the date: */
 if (document.Mem.NAPO_Status[0].checked) { 
    var v = document.Mem.NAPO_Application_Date.value;
	v = Trim(v); 
     if (v == '') {
	    alert("Please enter the date you applied for NAPO membership.");
		document.MM_returnValue=false;
	    return;
     }
 }
  else 
  if (document.Mem.NAPO_Status[1].checked){ 
    var v = document.Mem.NAPO_Member_Since.value;
	v = Trim(v); 
     if (v == '') {
	    alert("Please enter the date that you became a NAPO member.");
		document.MM_returnValue=false;
	    return;
     } 
  }
  else 
   if (document.Mem.NAPO_Status[2].checked){ 
     var v = document.Mem.Golden_Circle_Since.value;
	 v = Trim(v); 
     if (v == '') {
	    alert("Please enter the date that you became a NAPO Golden Circle member.");
		document.MM_returnValue=false;
	    return;
     }
   }
   else {
	 alert("Your NAPO membership status is required.");
	 document.MM_returnValue=false;
	 return;   
   }
}

if (document.Mem.Membership_Type.value != "Industry") { // Associate or Secondary Associate
// NOTE - with checkbox, can't check the value, it's undefined
 
  if (document.Mem.Read_Ethics_Code.checked == 0) {
        alert("You must check that you have read a copy of the NAPO Code of Ethics.");
		document.MM_returnValue=false;
	    return;
  }
 
 if (!document.Mem.Membership_Type[0].checked && !document.Mem.Membership_Type[1].checked) {
     alert("You must check Corporate Associate or Secondary Corporate Associate for NAPO-GPC membership category.");
	 document.MM_returnValue=false;
	 return;  
 }
  
  
if (document.Mem.Membership_Type[0].checked) { // Associate Membership, not needed for Secondary Associate
  var v = document.Mem.Reason_Joining_NAPO.value;
  v = Trim(v); 
  if (v == '') {
	   alert("Please provide a reason for joining NAPO-GPC.");
	   document.MM_returnValue=false;
	   return; 
  }
 }
}
  /* CHECKS PASSED - CALCULATE THE NEW MEMBER'S DUES; */
  // Need the current month:
  var totalcost;
  var m_TODAY = new Date();
  var this_month = m_TODAY.getMonth(); // result is number in the range of 0-11 
  this_month +=1;
 
  if (this_month > 9 && this_month < 13) { // OCT-DEC 
    if (document.Mem.Membership_Type.value == "Industry")
	  totalcost = 125.0;
    else if (document.Mem.Membership_Type[0].checked)
	    totalcost = 225.0;
	 else // Secondary Associate
	    totalcost = 100.0;
  }
  else
   if (this_month > 0 && this_month < 4) {  // JAN-MAR 
	if (document.Mem.Membership_Type.value == "Industry")
       totalcost = 93.75;
	else if (document.Mem.Membership_Type[0].checked)
	    totalcost = 168.75;
	 else
	     totalcost = 75.0;
   }
   else
     if (this_month > 3 && this_month < 7) { // APR-JUNE 
       if (document.Mem.Membership_Type.value == "Industry")
          totalcost = 62.50;	
       else if (document.Mem.Membership_Type[0].checked)
	      totalcost = 112.50;
	   else
	      totalcost = 50.0;
	 }
	  else
     if (this_month > 6 && this_month < 10) { // JUL-SEPT 
       if (document.Mem.Membership_Type.value == "Industry")
           totalcost = 31.25;	
       else if (document.Mem.Membership_Type[0].checked)
	     totalcost = 56.25;
	   else
	    totalcost = 25.0;
	 }
	
   totalcost += 25.00; // add processing fee
   //alert(totalcost); FOR TESTING
   document.Mem.amount.value = toCurrency(totalcost);  
   document.MM_returnValue=true; //good
   return;
  } // no error from check form
  else { // error
   document.MM_returnValue=false; // bad
   return;
 } 
   
 // Test year business started:
 /* REMOVED FROM FORM
   if (document.Mem.year_biz_start.value != '') {
	 var v = document.Mem.year_biz_start.value;
	 var test_year = Trim(v); 
	 var m_TODAY = new Date();
     var this_year = m_TODAY.getYear();
	 if (this_year < 2000) // browsers vary
	    this_year += 1900;
	 //alert('the curr year is ' + this_year);
     if ((this_year-test_year-1) > 55 ||
         (test_year > this_year))
     {
        alert("The year you started your business is invalid - please use format YYYY.");
		document.MM_returnValue=false;
	    return;
      }
    } // have year bus. started
	*/

} // end function
