var DATEPATTERN = '\\d{1,2}\\W\\d{2,2}\\W\\d{4,4}';
var COORDPATTERN = '^-?\\d{1,3}(\\.\\d{1,12})?$';
var NUMBERPATTERN = '^\\d*$';

function addLoadListener(fn)
{
 if (typeof window.addEventListener != 'undefined') {
   window.addEventListener('load', fn, false);
 } else if (typeof document.addEventListener != 'undefined') {
   document.addEventListener('load', fn, false);
 } else if (typeof window.attachEvent != 'undefined') {
   window.attachEvent('onload', fn);
 }
}

function addunLoadListener(fn)
{
 if (typeof window.addEventListener != 'undefined') {
   window.addEventListener('unload', fn, false);
 } else if (typeof document.addEventListener != 'undefined') {
   document.addEventListener('unload', fn, false);
 } else if (typeof window.attachEvent != 'undefined') {
   window.attachEvent('onunload', fn);
 }
}

function checkLocationForm() {
  var form         = $('event_form');
  var checkDate    = validateDate(form.sample_date.value);
  var tmpLat = form.latitude.value.split('.');
  if(tmpLat[1] && tmpLat[1].length > 12) {
    form.latitude.value = tmpLat[0]+'.'+tmpLat[1].substr(0,12);
  }
  var tmpLon = form.longitude.value.split('.');
  if(tmpLon[1] && tmpLon[1].length > 12) {
    form.longitude.value = tmpLon[0]+'.'+tmpLon[1].substr(0,12);
  }
  form.latitude.value = form.latitude.value.replace(/^(-?)\./, '$10.');
  form.longitude.value = form.longitude.value.replace(/^(-?)\./, '$10.');
  var checkLat     = checkField(form.latitude.value, COORDPATTERN);
  var checkLng     = checkField(form.longitude.value, COORDPATTERN);
  var checkHabitat = checkField(form.habitat_id.value, '\\w');
  var checkHabName = true;
  var checkLocName = true;
  if(form.record_name) { //&& form.location_name) {
    checkHabName = checkField(form.record_name.value, '\\w');
    //checkLocName = checkField(form.location_name.value, '\\w');
  }
  if(form.sample_date.value && !checkDate) {
    $('sample_date').setStyle({borderColor: '#CC0000'});
    $('dateformat').setStyle({color: '#CC0000'});
  } else {
     $('sample_date').setStyle({borderColor: '#f2d0ab'});
     $('dateformat').setStyle({color: '#999999'});
  }
  if(checkDate && checkLat && checkLng && checkHabitat && checkHabName && checkLocName) {
    form.commit.disabled = null;
    if(form.commit_add) {
      form.commit_add.disabled = null;
    }
  } else {
    form.commit.disabled = 'disabled';
    if(form.commit_add) {
      form.commit_add.disabled = 'disabled';
    }
  }
}

function messageText(textNo) {
  return 'No translation present';
}

function validateDate(dateString) {
  if(dateString) {
    if(checkField(dateString, DATEPATTERN)) {
      var dateParts = dateString.split('/');
      dateParts[1] = Number(dateParts[1]) - 1;
      dateParts[0] = Number(dateParts[0]);
      var thisDate = new Date(dateParts[2], dateParts[1], dateParts[0], 0, 0, 0, 0);
      var curentRecordsStart = new Date(2000, 0, 1, 0, 0, 0, 0);
      var today = new Date();
      today.setUTCHours(23, 59, 59, 999);
      if(thisDate.valueOf() < curentRecordsStart.valueOf()) {
        var message = messageText(3);
        alert(message);
        return false;
      }
      if(thisDate.valueOf() > today.valueOf()) {
        var message = messageText(1);
        alert(message);
        return false;
      } else {
        return true;
      }
    } else {
      var message = messageText(2);
      alert(message);
    }
  }
  return false;
}

function checkField(value, pattern) {
  var regExp = new RegExp(pattern);
  if(regExp.exec(value) == null) {
    return false;
  }
  return true;
}

function checkNumber(inputObj){
  if(checkField(inputObj.value, NUMBERPATTERN)) {
    return true;
  } else {
    alert('Please enter a valid number.');
    inputObj.value = null;
    return false;
  }
}

function getBaseURL(includeModule) {
  var pathArray = window.location.pathname.split('/');
  var module = 0;
  if(includeModule) {
    module = 1;
  }
   var end = 0;
  if(pathArray[1] == 'megalab') {
    end = 3 + module;
  } else {
    end = 2 + module;
  }
  for (var i = 0; i < pathArray.length; i++) {
    if(pathArray[i].search(/\.php$/) != -1) {
      end = i + 2 + module;
      break;
    }
  }
  pathArray = pathArray.slice(0, end);
  return pathArray.join('/');
}

function getVirtualDirURL() {
  var pathArray = window.location.pathname.split('/');
  if(pathArray[1] == 'megalab') {
    pathArray = pathArray.slice(0, 2);
    return pathArray.join('/');
  } else {
    pathArray = pathArray.slice(0, 1);
    return pathArray.join('/');
  }
  
}

function gototab(tab, tabName) {
  var currentTabContent = $$('.tabcontent.here')[0];
  if(currentTabContent.id == tabName)
    return;
  Element.removeClassName($$('li.here')[0], 'here');
  Element.removeClassName(currentTabContent, 'here');
  Element.addClassName(tab, 'here');
  Element.addClassName($(tabName), 'here');
}

function dump(data) {
  var str = '';
  for(var i in data) {
      str = str + i + ': ' + data[i] + '    ';
  }
  return str;
}
