// ***************************************************************************
// SHARED FUNCTIONS
// ***************************************************************************

// ===========================================================================
// Adds events to be executed after the document is loaded.
// By Simon Willison (See http://simonwillison.net)
// ===========================================================================

function addLoadEvent(func) {
  var oldonload = window.onload
  if (typeof window.onload != 'function') {
    window.onload = func
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload()
      }
      func()
    }
  }
}

// ===========================================================================
// Returns information about the actual page (file name, page name, language)
// ===========================================================================

function findActualFileName() {
  var actualURL = unescape(window.location)
  var fileNameBeginning = actualURL.lastIndexOf("/") + 1
  var fileName = actualURL.substring(fileNameBeginning, actualURL.length - 5)
  
  var bodyLanguage = $$('body')
    if (bodyLanguage[0].readAttribute('class') == "fr") {
    fileName = "index_fr"
  }
  
  return fileName
}

function findPageSettings(fileName) {
  var pageSettings = Array()
  
  var actualPageEnd = fileName.lastIndexOf("_")
  var languageBeginning = fileName.lastIndexOf("_") + 1

  pageSettings['actualPage'] = fileName.substring(0, actualPageEnd)
  pageSettings['language'] = fileName.substring(languageBeginning, fileName.length)
  
  return pageSettings
}


// ===========================================================================
// Form validations
// ===========================================================================

function toggleErrorMessage(language,enMsg,frMsg) {
  if (language == "fr") {
    alert(frMsg)
  } else {
    alert(enMsg)
  }
}

function checkRequiredFields(language,targetForm,requiredFields) {
  var errorFields = Array()
    
  requiredFields.each(function(field) {
    var field = $(field)
    if (field.value == "") {
      errorFields[errorFields.length] = field
    }
  })

  if (errorFields.length != 0) {
    errorFields.each(function(field) {
      var fieldId = field.readAttribute('id')
      
      if (fieldId == 'month' || fieldId == 'day') {
        var label = targetForm.select('[for="date"]')
      } else {
        var label = targetForm.select('[for="' + fieldId + '"]')
      }
      
      label[0].setStyle({
        color: 'red',
        fontWeight: 'bold'
      })
    })
    
    if (errorFields.length >= 2) {
      var enMsg = "Please, review your answers, " + errorFields.length + " required fields are erroneous."
      var frMsg = "S.V.P. revoir vos réponses, " + errorFields.length + " champs requis sont erronés."
    } else {
      var enMsg = "Please, review your answers, " + errorFields.length + " required field is erroneous."
      var frMsg = "S.V.P. revoir vos réponses, " + errorFields.length + " champs requis est erroné."
    }
    toggleErrorMessage(language,enMsg,frMsg)
    
    return false
  }
}


// ***************************************************************************
// CUSTOM FUNCTIONS
// ***************************************************************************

// ===========================================================================
// Toggles associated form when a button is clicked.
// ===========================================================================

function toggleForm() {
  var targetForm = $(this.rel)

  Element.toggle(this)
  Effect.BlindDown(targetForm, { duration: 0.75 })
  
  return false
}

function setToggleForm() {
  var buttons = $$('div.forms a.button[rel]')
  var forms = $$('div.forms div > div')
  
  buttons.each(function(button) {
    button.onclick = toggleForm
  })
  
  forms.each(function(form) {
    form.setStyle({
      display: 'none'
    })
  })
}

// ===========================================================================
// Adds 'Back' function to a link
// ===========================================================================

function goBack() {
  history.go(-1)
  return false
}

function setGoBackLinks() {
  var links = $$('a.go-back')
  
  links.each(function(link) {
    link.href = "#"
    link.onclick = goBack
  })
}

// ===========================================================================
// Open Account Form Validation
// ===========================================================================

function checkOpenAccountForm() {
  
  var targetForm = $('open_account')
  var actualPage = findActualFileName()
  var pageSettings = findPageSettings(actualPage)
  
  // 1. Checking for empty required fields.
    var requiredFields = ['companyName','contactName','email','address','city','province','postalCode','tel']
    var errorFields = checkRequiredFields(pageSettings['language'],targetForm,requiredFields)
    if (errorFields == false) return false

  return true
}

// ===========================================================================
// Call Me Form Validation
// ===========================================================================

function checkCallMeForm() {
  
  var targetForm = $('call_me')
  var actualPage = findActualFileName()
  var pageSettings = findPageSettings(actualPage)
  
  // 1. Checking for empty required fields.
    var requiredFields = ['company','contact','email2','telephone','day','month']
    var errorFields = checkRequiredFields(pageSettings['language'],targetForm,requiredFields)
    if (errorFields == false) return false

  return true
}