
/*
* ajax call to retrieve and possible execute code on response from server
*
*/
function doTask(params) {
  if (document.implementation && window.document.implementation.createDocument)
  {
    xmlDoc = document.implementation.createDocument("", "", null);
    xmlDoc.onload = doResponse;
  }
  else if (window.ActiveXObject)
  {
    xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.onreadystatechange = function () {
      if (xmlDoc.readyState == 4) doResponse()
    };
  }
  else
  {
    return false;
  }
  d = new Date; // Generic - use to create unique url requests
  var rand = d.getTime();
  var url=document.location.protocol+'//'+document.location.host+'/alt/doTask.xml?rand='+rand+'&'+params;
  try{
    xmlDoc.load(url); // this is what we like to do
  } catch(e) { // if failed try using httprequest as a fallback - (e.g. Safari)
    try {
      req = new XMLHttpRequest();
    } catch(e) {
      req = false;
    }
    if(req) {
      req.onreadystatechange = processHttpRequest;
      req.open("GET", url, true);
      req.send("");
    }

  }

  return false;
}

/*
* some browsers require this extra step to catch the http reponse
*
*/
function processHttpRequest() {
  if (req.readyState == 4) {
        if (req.status == 200) {
      xmlDoc=req.responseXML;
      doResponse();
        }
    }
}

/*
* process the response from server to the doTask function,
*
*/
function doResponse() {
  var tasks = xmlDoc.getElementsByTagName('task');
  var cmd=null;

  for(var i=0;i<tasks.length;i++) {
    cmd=tasks[i].getElementsByTagName('cmd')[0];

    if (cmd.childNodes[0]) {
      switch(cmd.childNodes[0].nodeValue) {
        case 'replace': // replace the innerHTML of an element
          var id=tasks[i].getElementsByTagName('id')[0].childNodes[0].nodeValue;
          var content=tasks[i].getElementsByTagName('content')[0].childNodes[0].nodeValue;
          if (id.length>0 && document.getElementById(id)) document.getElementById(id).innerHTML=content;
          break;
        case 'execute': // run some js
          var script=tasks[i].getElementsByTagName('script')[0].childNodes[0].nodeValue;
          eval(script);
          break;

      }
    }
  }
}



// show the form wait box
function showWait(id) {
  if (document.getElementById(id)) {
    var el=document.getElementById(id);

    el.style.position='absolute';
    el.style.left='50%';
    el.style.top='50%';
    el.style.display='block';
    el.style.marginLeft="-" + parseInt(el.offsetWidth  / 2)+'px';
    el.style.marginTop ="-" + parseInt(el.offsetHeight / 2)+'px';
    // IE has a quirk which means we need to reload the animated gif to make it animate
    if (document.getElementById(id+'wImg')) setTimeout("document.getElementById('"+id+"wImg').src=document.getElementById('"+id+"wImg').src",20);
  }
}

/* video functions */
function showVidPop(e) {

  var vidPop=document.getElementById('vidPop');
  if(vidPop.style.display!='block'){
    vidPop.style.display='block';
  }else{
    vidPop.style.display='none';
  }
  return false;
}

/* custom validation for Jewson Enquiry form */
function jewsonEnquiryValidation(form) {

  var fTot=document.getElementById('fTot').value;
  var hasFiles=false;

  // are any of the uploads fields filled in?
  for(var i=0; i<fTot;i++) {
    if(document.getElementById('drawing_'+i).value!='') {
      hasFiles=true;
      break;
    }
  }

  var firstErrId='';
  var retval=true;

  //alert("HasFiles="+hasFiles+", fTot="+fTot);

  if(hasFiles) { // don't validate the Truss Info fields
    var reg=new RegExp('(dwg|dxf|dwf|pdf|tif|jpg)$','i');

    // validate all file fields
    for(var i=0;i<fTot;i++) {
      test_val=document.getElementById('drawing_'+i).value;
      if(test_val=='' || !reg.test(test_val)) {
        showerr_quizF('fTot_err','Please choose a file of type: dwg,dxf,dwf,pdf,tif,jpg');
        retval=false;
        if(firstErrId=='') firstErrId='fTot_err';
      } else {
        hideerr_quizF('fTot_err');
      }
    }

    // hide any errors for the details part of the form
    hideerr_quizF('addFile_err');
    hideerr_quizF('numTrusses_err');
    hideerr_quizF('span_err');
    hideerr_quizF('overhang_err');
    hideerr_quizF('pitch_err');
    hideerr_quizF('height_err');
    hideerr_quizF('spacing_err');
    hideerr_quizF('treatment_no_err');
    hideerr_quizF('ladders_no_err');
    hideerr_quizF('watertank_no_err');
    hideerr_quizF('trussclips_no_err');
    hideerr_quizF('rooftype_err');

  } else {

    // validate truss fields
   if(form.numTrusses.value=='') {
      showerr_quizF('addFile_err','Please enter number of trusses required');
      retval=false;
      if(firstErrId=='') firstErrId='addFile_err';
    } else {
      hideerr_quizF('addFile_err');
    }
   if(form.span.value=='') {
      showerr_quizF('numTrusses_err','Please enter span details');
      retval=false;
      if(firstErrId=='') firstErrId='numTrusses_err';
    } else {
      hideerr_quizF('numTrusses_err');
    }
   if(form.overhang.value=='') {
      showerr_quizF('span_err','Please enter overhang details');
      retval=false;
      if(firstErrId=='') firstErrId='span_err';
    } else {
      hideerr_quizF('span_err');
    }
   if(form.pitch.value=='') {
      showerr_quizF('overhang_err','Please enter pitch details');
      retval=false;
      if(firstErrId=='') firstErrId='overhang_err';
    } else {
      hideerr_quizF('overhang_err');
    }
   if(form.height.value=='') {
      showerr_quizF('pitch_err','Please enter overall height');
      retval=false;
      if(firstErrId=='') firstErrId='pitch_err';
    } else {
      hideerr_quizF('pitch_err');
    }
   if(form.spacing.value=='') {
      showerr_quizF('height_err','Please enter truss spacing');
      retval=false;
      if(firstErrId=='') firstErrId='height_err';
    } else {
      hideerr_quizF('height_err');
    }
    var chk=false;
    for(var i=0;i<form.treatment.length;i++) {
      if (form.treatment[i].checked==true) chk=true;
    }
    if(chk==false) {
      showerr_quizF('spacing_err','Please select if treatment is required');
      retval=false;
      if(firstErrId=='') firstErrId='spacing_err';
    } else {
      hideerr_quizF('spacing_err');
    }
    var chk=false;
    for(var i=0;i<form.ladders.length;i++) {
      if (form.ladders[i].checked==true) chk=true;
    }
    if(chk==false) {
      showerr_quizF('treatment_no_err','Please select if standard width');
      retval=false;
      if(firstErrId=='') firstErrId='treatment_no_err';
    } else {
      hideerr_quizF('treatment_no_err');
    }
    var chk=false;
    for(var i=0;i<form.watertank.length;i++) {
      if (form.watertank[i].checked==true) chk=true;
    }
    if(chk==false) {
      showerr_quizF('ladders_no_err','Please advise if water tank is in the roof space');
      retval=false;
      if(firstErrId=='') firstErrId='ladders_no_err';
    } else {
      hideerr_quizF('ladders_no_err');
    }
    var chk=false;
    for(var i=0;i<form.trussclips.length;i++) {
      if (form.trussclips[i].checked==true) chk=true;
    }
    if(chk==false) {
      showerr_quizF('watertank_no_err','Please advise is there are truss clips &amp; bracing');
      retval=false;
      if(firstErrId=='') firstErrId='watertank_no_err';
    } else {
      hideerr_quizF('watertank_no_err');
    }
   if(form.rooftype.value=='') {
      showerr_quizF('trussclips_no_err','Please advise what tile type * roof covering exist');
      retval=false;
      if(firstErrId=='') firstErrId='trussclips_no_err';
    } else {
      hideerr_quizF('trussclips_no_err');
    }
    var chk=false;
    for(var i=0;i<form.matchroof.length;i++) {
      if (form.matchroof[i].checked==true) chk=true;
    }
    if(chk==false) {
      showerr_quizF('rooftype_err','Please advise if we need to match existing roof');
      retval=false;
      if(firstErrId=='') firstErrId='rooftype_err';
    } else {
      hideerr_quizF('rooftype_err');
    }
  }

  // validate all other fields
 if(form.name.value=='') {
    showerr_quizF('daterequired_year_err','Please enter your name');
    retval=false;
    if(firstErrId=='') firstErrId='daterequired_year_err';
  } else {
    hideerr_quizF('daterequired_year_err');
  }
 if(form.company.value=='') {
    showerr_quizF('name_err','Please enter your company');
    retval=false;
    if(firstErrId=='') firstErrId='name_err';
  } else {
    hideerr_quizF('name_err');
  }
 if(form.address.value=='') {
    showerr_quizF('company_err','Please enter your address');
    retval=false;
    if(firstErrId=='') firstErrId='company_err';
  } else {
    hideerr_quizF('company_err');
  }
 if(form.postcode.value=='') {
    showerr_quizF('address_err','Please enter your postcode');
    retval=false;
    if(firstErrId=='') firstErrId='address_err';
  } else {
    hideerr_quizF('address_err');
  }
 if(form.phone.value=='') {
    showerr_quizF('postcode_err','Please enter your contact phone number');
    retval=false;
    if(firstErrId=='') firstErrId='postcode_err';
  } else {
    hideerr_quizF('postcode_err');
  }
  var reg=new RegExp('^(?:(?:\"[^\"]{1,62}\")|(?:[a-z0-9!#$%*\\/?|\\^{}`~&\'+\\-=_.]{1,64}))@[a-z0-9_\\-]+\\.[a-z0-9_\\-.]*$','i');
  if(!reg.test(form.email.value)) {
    showerr_quizF('fax_err','Please enter a valid email address');
    retval=false;
    if(firstErrId=='') firstErrId='fax_err';
  } else {
    hideerr_quizF('fax_err');
  }

  if(retval==false) {
    document.getElementById('quizF_firstErr').innerHTML='Please check your answers below and re-submit the form<br />';
    document.getElementById('quizF_firstErr').className='formErr';
    document.location='#quizF_fe';
  } else {
    if(typeof showWait=='function') showWait('_wait_quizF');
    document.getElementById('q_process').disabled='true';
  }

  return retval;

}

showerr_quizF=function (id,err) {
  document.getElementById(id).innerHTML=err;
  document.getElementById(id).className='formErr';
  lastErrId=id;
}
hideerr_quizF=function (id) {
  if (id==lastErrId) return;
  document.getElementById(id).innerHTML='';
  document.getElementById(id).className='formNoErr';
}

function gridComments_onfocus(el) {
  if(el.value=='Additional Comments') el.value='';
  el.className = 'txtarea';
}

function gridComments_onblur(el) {
  if(el.value=='') {
    el.value = 'Additional Comments';
    el.className = 'txtarea prompt';
  }
}

function toggleComment(e, id) {
  var el = document.getElementById(id+"_comment_row");
  if(el) {
    if(el.style.display=='none') {
      //el.style.display='table-row';
      el.style.display='';
      document.getElementById(id+"_comments").focus();
    } else {
      el.style.display='none';
    }
  }
  return ( false );
}

function limitTALength(el, max) {
  if(el.value.length > max) {
    el.value = el.value.substring(0, max);
  }
}

function edmLogin_onfocus(el) {
  if(el.value=='Your Username') el.value='';
  el.className = 'txtfield';
}

function edmLogin_onblur(el) {
  if(el.value=='') {
    el.value='Your Username';
    el.className = 'txtfield prompt';
  }
}

function edmPwd_onfocus(el) {
  if(el.value=='Your Password') el.value='';
  el.className = 'txtfield';
}

function edmPwd_onblur(el) {
  if(el.value=='') {
    el.value='Your Password';
    el.className = 'txtfield prompt';
  }
}

function edmLogin_waitbar(el) {

  var isValid=true;

  // do the validation.
  if(typeof(validate_edmF)=='function') {
    isValid = validate_edmF(el)
  }

  if(!isValid) return ( false );

  document.getElementById('loginDetails').style.display='none';
  document.getElementById('loginTitle').innerHTML = 'Signing you in...';
  document.getElementById('loginTitle').className = 'signingIn';
  document.getElementById('progressBarC').style.display='block';

  setTimeout(edmLogin_submit, '2000');

  return ( false );
}

function edmLogin_submit() {
  document.getElementById('edmF').submit();
}

var leftPos = -436;

function edmLogin_pb_animate() {
  if(leftPos < 0) {
    leftPos = leftPos + 4;
  } else {
    leftPos = -436;
  }
  document.getElementById('progressBar').style.backgroundPosition = leftPos + 'px 0px';
  setTimeout(edmLogin_pb_animate, 100);
}

window.onload = function() {
  edmLogin_pb_animate();
}