/*******************************************************
   bm-linkform.js - Specific mortgage enquiry form routines
   Copyright 2006 Better-Mortgages.co.uk Ltd
   All rights reserved.  Version 1.0
 *******************************************************/

/* ---- validation alert arrays --------- */
var validText = new makeArray(6); 
validText[0] = "Please enter your Name.\n";
validText[1] = "Please enter the URL of the page where my the link to my web site is located.";
validText[2] = "The Title should only contain a-z,0-9, and basic punctutaion (.,'- ). Please correct this.\n";
validText[3] = "The Description should only contain a-z,0-9, and basic punctuation (&'-£=_:;,\"().$?/). Please correct this.\n";
validText[4] = "You have not selected a theme page where you want your link to be put.\nPlease make a choice.\n";
validText[5] = "The domain where you've put my link and the domain you want me to link to are different.\nPlease note we only exchange links with a single domain\n";

/* Do initialisation functions -  Called by <BODY onLoad> */
// function doInit() {}

// ************ This should probably be moved to form-commnX.js ***********
function showItem(status, item) { // --- form display / hide base routine 
  if (status == "ON") {
      if (br == "DOM") {
          if (bt == "Nets") {  // Mozilla and NS6. Should look for 'Gecko' instead?
            (item.substring(0,1) == "T") ? displayStat = "table" : displayStat = "table-row";
          } else if (bt == "MSIE") { // IE 6.  Should work with IE 5 - TEST
            displayStat = "";
          }
      } else if (br == "IE") {  // IE3 & 4? - TEST
          displayStat = "";
      } else if (br == "NS") {  // NS4.6 desn't respond to style.display anyway (see below).
          displayStat = "";
      }
  } else {  // status = OFF
      displayStat = "none";
  }
  if (br == "DOM") {
    document.getElementById(item).style.display = displayStat;
  } else if (br == "IE") {
       document.all.item.style.display = displayStat;
  } else  if (br == "NS") {
       document.item.style.display = displayStat;
  }
}

function showLinkData(row) {
  if (document.forms) {
    (row == "R1") ? showItem("ON", "R1") : showItem("OFF", "R1");  
    (row == "R2") ? showItem("ON", "R2") : showItem("OFF", "R2");  
    (row == "R3") ? showItem("ON", "R3") : showItem("OFF", "R3");  
    (row == "R4") ? showItem("ON", "R4") : showItem("OFF", "R4");  
    (row == "R5") ? showItem("ON", "R5") : showItem("OFF", "R5");  
    (row == "R6") ? showItem("ON", "R6") : showItem("OFF", "R6");  
    (row == "R7") ? showItem("ON", "R7") : showItem("OFF", "R7");  
    (row == "R8") ? showItem("ON", "R8") : showItem("OFF", "R8");  
  }
}

function greyout(status, item) {
  if (status == "ON") { 
		item.className = 'fieldon'; disableStat = false;
  } else { 
		item.className  = 'fieldoff'; disableStat = true;
	}
  item.disabled = disableStat;
}

function isValid(form) {
  var fObj;
  fObj = form.elements['realname']; 
  if ( fObj && !isFilled( fObj, validText[0] ) ) { return false; } // check its not empty
  re = /^[\w\s!;:,\.\-\(\)\?']+$/; // check for only valid characters
  if (!re.test(fObj.value)) { alert(validText[0]); refocus(fObj); return false; }
  // check realname is not email
  re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,6})+$/; // email regex
  if ( re.test(fObj.value) ) { alert(validText[0]); refocus(fObj); return false; }
  // check realname is not URL
  re = /^https?:\/\/[\w\.-]+[\w]{2,5}[\/~\w-]*[\/]?([\w-]*\.[\w]{1,5}[\?]?[\w="%;&-]*)?$/;
  if ( re.test(fObj.value) ) { alert(validText[0]); refocus(fObj); return false; }
  fObj = form.elements['email']; if (!isEmail(fObj)) return false;	// check its just an email address
  fObj = form.elements['Their_URL']; if (!isHTTP(fObj) ) return false; // check its just normal web address
  fObj = form.elements['Their_Title']; 
  if ( fObj && !isFilled( fObj, validText[2] ) ) { return false; } // check its not empty
  re = /^[\s\w\.,'-]+$/; // check for valid characters
  if (!re.test(fObj.value)) { alert (validText[2]); refocus(fObj); return false; }
  // check Their_Title is not email
  re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,6})+$/; // email regex
  if ( re.test(fObj.value) ) { alert(validText[2]); refocus(fObj); return false; }
  // check Their_Title is not URL
  re = /^https?:\/\/[\w\.-]+[\w]{2,5}[\/~\w-]*[\/]?([\w-]*\.[\w]{1,5}[\?]?[\w="%;&-]*)?$/;
  if ( re.test(fObj.value) ) { alert(validText[2]); refocus(fObj); return false; }
  fObj = form.elements['Their_Descr']; 
  if ( fObj && !isFilled( fObj, validText[3] ) ) { return false; } // check its not empty
  re = /<(.+\n+)*.+>/; // check for valid characters - no general HTML
  if (re.test(fObj.value)) { alert (validText[3]); refocus(fObj); return false; }
  re = /(<\?|<!|\&\#|\/\/|<\/|\/>|=")+/i; // check for code type HTML - belt & braces
  if (re.test(fObj.value)) { alert (validText[3]); refocus(fObj); return false; }
  // check Their_Descr is not email
  re = /\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,6})+/; // email regex
  if ( re.test(fObj.value) ) { alert(validText[3]); refocus(fObj); return false; }
  // check Their_Descr is not URL
  re = /^https?:\/\/[\w\.-]+[\w]{2,5}[\/~\w-]*[\/]?([\w-]*\.[\w]{1,5}[\?]?[\w="%;&-]*)?$/;
  if ( re.test(fObj.value) ) { alert(validText[3]); refocus(fObj); return false; }
  fObj = form.elements['Theme_Page'];
  if ( fObj.value == "-- Please Select a Theme --") { alert (validText[4]); return false; }
  fObj = form.elements['My_Link_URL']; 
  // check normal web address
  if ( !isHTTP(fObj) ) { alert (validText[1]); return false; }
  // SPAM checks. Each field already validated - just look for illogical form usage
  fObj2 = form.elements['Their_URL']; // fObj is already set to My_Link_URL
  // Check if URL domains are different, e.g 'tri-linking'. This ain't link exchange.
  // Could be promoting 'excellent' site but promoted by 'crap' site
  // Two sites to review instead of one - more work
  if ( getDomain(fObj.value) != getDomain(fObj2.value) ) { alert (validText[5]); refocus(fObj); return false; }
  // Add more tests here as required
  fObj = form.elements['My_Link_Code1']; greyout("OFF", fObj);		
  fObj = form.elements['My_Link_Code2']; greyout("OFF", fObj);		
  fObj = form.elements['My_Link_Code3']; greyout("OFF", fObj);		
  fObj = form.elements['My_Link_Code4']; greyout("OFF", fObj);		
  fObj = form.elements['My_Link_Code5']; greyout("OFF", fObj);		
  fObj = form.elements['My_Link_Code6']; greyout("OFF", fObj);		
  fObj = form.elements['My_Link_Code7']; greyout("OFF", fObj);		
  fObj = form.elements['My_Link_Code8']; greyout("OFF", fObj);		
  return true;
}