﻿//Vars
/// <reference path="CSClientLib.js" />

var CFRAME_ENQUIRY = 'CSPEnquiryFrame';
var CCSCR_ENQUIRY_URL = '/Components/CR/SalesEnquiry.aspx';
var CCSCR_ENQUIRY_POST_URL = '/Components/CR/SalesEnquiry.aspx';

var enqCallBackFunction;
var enquiryFrame;
var arrEnqCatItems = new Array();
var enqStatusCode;
var enqReferralCode;
var enqReferralType;

//End Vars

function ValidateEnqRequiredFields(formName)
{
  if(formName == '') return false;
  
  var hasEmail = false;
  var hasFirstName = false;
  var hasLastName = false;
  
  aForm = document.forms[formName];
  if(aForm)
  {
    for (e = 0; e < aForm.elements.length; e++) 
    {
      if (aForm.elements[e].name == 'email') 
      {
        if(ValidateEmailAddress(aForm.elements[e].value)) hasEmail = true;
      }
      else if(aForm.elements[e].name == 'first_name')
      {
        if(aForm.elements[e].value != '') hasFirstName = true;
      }
      else if(aForm.elements[e].name == 'last_name')
      {
        if(aForm.elements[e].value != '') hasLastName = true;
      }
    }
  }
  
  //If all required fields are set then return true
  if(hasEmail && hasLastName && hasFirstName) return true;

  var msg = '';
  if(!hasEmail) msg = "'Email Address'";
  else if(!hasFirstName) msg = "'First Name'";
  else if(!hasLastName) msg = "'Last Name'";
  
  alert('Required field ' + msg + ' is missing or incorrectly formatted.');
  
  return false;
}

function SetEnquiryType(aStatusCode, aReferralCode, aReferralType)
{
  enqStatusCode = aStatusCode;
  enqReferralCode = aReferralCode;
  enqReferralType = aReferralType;
}

function BuildEnqQueryString(aFrameObj)
{
  var subQuery = '';
  
  if(enqStatusCode && enqStatusCode != '')
  {
    subQuery = 'StatusCode=' + escape(enqStatusCode);
  }
  
  if(enqReferralCode && enqReferralCode != '')
  {
    if(subQuery != '') subQuery += '&';
    subQuery += 'RefCode=' + escape(enqReferralCode);
  }
  
  if(enqReferralType && enqReferralType != '')
  {
    if(subQuery != '') subQuery += '&';
    subQuery += 'RefType=' + escape(enqReferralType);
  }
  
  for(var i = 1; i <= arrEnqCatItems.length; i++)
  {
    if(subQuery != '') subQuery += '&';
    subQuery += 'cat_item_' + i.toString() + '=' + escape(arrEnqCatItems[i-1]);
  }
  
  return subQuery
}

function ClearEnquiryCategories()
{
  arrEnqCatItems.length = 0;
}

function AddEnquiryCategory(categoryCode)
{
  //checkCode the catch code does not already exist
  for(var i = 0; i < arrEnqCatItems.length; i++)
  {
    if(arrEnqCatItems[i] == categoryCode) return;
  }
  
  //Add a new cat code to the end of the array
  arrEnqCatItems[arrEnqCatItems.length] = categoryCode;
}

function ShowEnquiryFormSize(divContainer, aWidth, aHeight, callBack)
{
  var divObj = document.getElementById(divContainer);
            
  if(!divObj)
  {
    alert('Cannot find DIV \'' + divContainer + '\'. Please check you have set the HTML div id tag as <div id=”' + divContainer + '”/>.');
    return;
  }
  
  //Create the new frame if it does not already exist
  if(!enquiryFrame)
  {
    enquiryFrame = CreateFrameComponentSize(CFRAME_ENQUIRY, divObj, aWidth, aHeight);
  }
  
  enqCallBackFunction = callBack;
  //Display the registration component page
  CallServerParams(enquiryFrame, GetCommerceServer() + CCSCR_ENQUIRY_URL, '', BuildEnqQueryString);
}

function ShowEnquiry(divContainer, callBack)
{
  var divObj = document.getElementById(divContainer);
            
  if(!divObj)
  {
    alert('Cannot find DIV \'' + divContainer + '\'. Please check you have set the HTML div id tag as <div id=”' + divContainer +'”/>.');
    return;
  }
  
  //If not already created then create the new frame
  if(!enquiryFrame)
  {
    enquiryFrame = CreateFrameComponentSize(CFRAME_ENQUIRY, divObj, divObj.style.width, divObj.style.height);
  }
  
  enqCallBackFunction = callBack;
  //divContainer.display = 'block';
  //Display the registration component page
  CallServerParams(enquiryFrame, GetCommerceServer() + CCSCR_ENQUIRY_URL, '', BuildEnqQueryString);
}

/*function SubmitEnquiry(formName)
{
  if(!ValidateEnqRequiredFields(formName)) return false;
  
  //Creates the form as hidden if it has not already created
  if(!enquiryFrame) enquiryFrame = CreateFrameComponentHidden(CFRAME_ENQUIRY);
  
  //Calls the server to register the new details
  CallServer(enquiryFrame, GetCommerceServer() + CCSCR_ENQUIRY_POST_URL, formName);
}

function SubmitEnquiryCallBack(formName, callBack)
{
  if(!ValidateEnqRequiredFields(formName)) return false;
  
  //Creates the form as hidden if it has not already created
  if(!enquiryFrame) enquiryFrame = CreateFrameComponentHidden(CFRAME_ENQUIRY);
  
  enqCallBackFunction = callBack;
  //Calls the server to register the new details
  CallServer(enquiryFrame, GetCommerceServer() + CCSCR_ENQUIRY_POST_URL, formName);
}*/
/*
function SubmitEnquiryForm(formName)
{
  //If the browser does not support dynamic elemets then return null
  if(!document.createElement) return null;
  
  if(!ValidateEnqRequiredFields(formName)) return false;
  
  //Creates the form as hidden if it has not already created
  if(!enquiryFrame) enquiryFrame = CreateFrameComponentHidden(CFRAME_ENQUIRY);
  
  var frameDoc = GetFrameDocument(enquiryFrame); 
  
  var aForm = document.forms[formName];
  if(aForm)
  {
    var tmpForm = frameDoc.createElement('form');
    tmpForm.id = 'EnquiryForm';
    tmpForm.name = 'Enquiryform';
    tmpForm.method = 'POST';
    tmpForm.action = GetCommerceServer() + CCSCR_ENQUIRY_POST_URL;
    
  var tempIFrame = document.createElement('iframe');
      tempIFrame.setAttribute('id', frameName);
      tempIFrame.setAttribute('frameborder', 0);
      tempIFrame.style.border = '0px';
      tempIFrame.style.width = aWidth;
      tempIFrame.style.height = aHeight;
      aFrameObj = parentNode.appendChild(tempIFrame);
    //var qs = '';
    for (i = 0; i < aForm.elements.length; i++) 
    {
      if (aForm.elements[i].name != '') 
      {
        //Ignore the View state field incase a user has used VS to 
        //create the form instead of using standard HTML as this is not needed
        if(aForm.elements[i].name == '__VIEWSTATE') continue;
        //If its not an input continue
        if(aForm.elements[i].tagName != 'input') continue;
        
        var tmpItem = frameDoc.createElement('input');
        qs += '&'; //qs += (qs == '') ? '?' : '&';
        qs += aForm.elements[e].name + '=' + escape(aForm.elements[e].value);
      }
    }
  }
}*/

function EnquiryCallBack(enqCompleted)
{
  //If the call back function is assigned then call it
  if(enqCallBackFunction) enqCallBackFunction(enqCompleted);
}