var currentLayer = 'page1';
var digits = "0123456789";
var phoneNumberDelimiters = "()-/ ";
var validWorldPhoneChars = phoneNumberDelimiters + "+";
var minDigitsInIPhoneNumber = 10;
var http_request = false;
var sequenceRow = new Array();
var sequenceUsed = new Array();
var addressValidationError = 'Adres validatie kon niet uitgevoerd worden';
var addressValidationFault = 'Geen bestaand adres';
var sequenceError = 'Een item kan niet twee keer toegevoegd worden';
var browserNotSuported = 'Browser niet ondersteund';
var browserNotSuportedTitle = 'Verouderde browser'; 
var frmName = 'form1';
var cookieName = 'form1';
var uniqueNum = 0;
var g4folder = 'frontend-g4';

//check if browser is supported
function checkSupported(title)
{
  if(!window.XMLHttpRequest && !window.ActiveXObject)
  {
    if(document.getElementById && document.getElementById('form1'))
    {
      document.getElementById('form1').innerHTML = '<h1>' + title + '</h1><h2>' + browserNotSuportedTitle + '</h2><p>' + browserNotSuported + '<p>';
    }
    else
    {
      alert(browserNotSuported);
    }
  }
}

// Changes the cursor to an hourglass 
function cursor_wait()
{
  document.body.style.cursor = 'wait';
} 
// Returns the cursor to the default pointer
function cursor_clear()
{
  document.body.style.cursor = 'default';
}

function addToTrash(xpath,id)
{
  if(document.getElementById(id))
  {
    if(document.getElementById('trashBin'))
    {
      document.getElementById('trashBin').value += xpath + '\\';
    }
    deleteRow(id);
  }
  else
  {
    alert('not found');
  }
}

function setUsed(listID,name)
{
  if(!sequenceUsed[listID])
  {
    sequenceUsed[listID] = new Array();
  }
  sequenceUsed[listID][sequenceUsed[listID].length] = addslashes(name.toUpperCase());
}

function removeUsed(listID,name)
{
  if(sequenceUsed[listID])
  {
    var used = sequenceUsed[listID];
    sequenceUsed[listID] = new Array();
    for (x in used)
    {
      if(used[x] != name)
      {
        sequenceUsed[listID][sequenceUsed[listID].length] = used[x];
      }
    }
  }
}

function isUsed(listID,name)
{
  if(sequenceUsed[listID] && in_array(sequenceUsed[listID],addslashes(name.toUpperCase())))
  {
    return true;
  }
  return false;
}

function setNode(listID,rowStr)
{
  sequenceRow[listID] = rowStr;
}

function addItem(itemID,listID)
{
  if(document.getElementById(itemID))
  {   
    var name = ucFirst(document.getElementById(itemID).value);
    if(name.length > 0)
    {
      if(isUsed(listID,name))
      {
        alert(sequenceError);
      }
      else
      {
        str = sequenceRow[listID].replace(/\[name]/g,name);
        //name = name.replace(/\./g,"|");
        str = str.replace(/\[attributeName]/g,name);
        str = str.replace(/\%num%/g,'row' + uniqueNum);
        uniqueNum = uniqueNum + 1; 
        document.getElementById(listID).innerHTML += str;
        setUsed(listID,name);
        document.getElementById(itemID).value = '';
      }
    }
    document.getElementById(itemID).focus();
  }
}

function deleteRow(id,name)
{
  if(document.getElementById(id))
  {
    document.getElementById(id).innerHTML = '';
    document.getElementById(id).style.display = 'none';
  }
  else
  {
    alert('not found');
  }
}

function addslashes(s)
{
  return s.replace("'","/'")
}
//end new

function changeDisplay(show,hide)
{
  if(show != '')
  {
    var showDivs = show.split(',');
    for (var i = 0; i < showDivs.length; i++)
    {
      if(document.getElementById(showDivs[i]))
      {
        document.getElementById(showDivs[i]).style.display = 'block';  
      }
    }
  }
  if(hide != '')
  {
    var hideDivs = hide.split(',');
    for (var i = 0; i < hideDivs.length; i++) {
      if(document.getElementById(hideDivs[i]))
        document.getElementById(hideDivs[i]).style.display = 'none';  
    }
  }
}
function changeLabel(id,text)
{
  if(document.getElementById(id))
  {
    document.getElementById(id).innerHTML = text;
  }
}

function nextPage(currentGroup)
{
  var x = document.getElementsByTagName('div');
  var nextGroup = 0;
  if(validate(currentGroup))
  {
    for (var i=0;i<x.length;i++)
    {
      if (x[i].className == 'page')
      {
        if(nextGroup == 1 && x[i].childNodes[2] && (x[i].childNodes[2].id.indexOf('ClientForm')!=-1 || x[i].childNodes[2].id.indexOf('FormCompany')!=-1 || x[i].childNodes[2].id.indexOf('FormUser')!=-1 || x[i].childNodes[2].id.indexOf('ClientListForm')!=-1))
        {
          x[i].style.display = 'block';

          if(document.getElementById(currentGroup))
          {
            previousGroup = currentGroup;
            document.getElementById(currentGroup).style.display = 'none';
          }
          break;
        }
        if(x[i].id == currentGroup)
        {
          nextGroup = 1;
        }
      }
    }
  }
}

function goToPage(currentGroup,newGroup)
{
  if(validate(currentGroup) && document.getElementById(newGroup) && document.getElementById(currentGroup))
  {
    document.getElementById(newGroup).style.display = 'block';
    document.getElementById(currentGroup).style.display = 'none';
  }
}

function previousPage(currentGroup) {
  var x = document.getElementsByTagName('div');
  var lastId = '';
  if(document.getElementById(currentGroup))
    document.getElementById(currentGroup).style.display = 'none';

  var pageCount = 0;
  for (var i=0;i<x.length;i++)
  {
    if (x[i].className == 'page')
    {
      if((x[i].id == currentGroup) && lastId != '')
      {
        while(pageCount >= 1)
        {
          var page = 'page' + pageCount;
          node = document.getElementById(page);
          if(node.childNodes[2] && (node.childNodes[2].id.indexOf('ClientForm')!=-1 || node.childNodes[2].id.indexOf('ClientList')!=-1 || node.childNodes[2].className.indexOf('addressGroup')!=-1)) 
          {
            node.style.display = 'block';
            break;
          }
          pageCount--; 
        }
        break;
      }
      pageCount++;
      var lastId = x[i].id;
    }
  }
}

function specialSelect(id,key,hiddenField) {
  div = id + key;
  if(document.getElementById(div)) {
    hidden = document.forms[frmName].elements[hiddenField];
    if(document.getElementById(div).className == 'specialActive') {
      document.getElementById(div).className = 'specialItem';
      
      dummyVar = hidden.value.split(',')
      hidden.value = ''
      for (i=0; i<dummyVar.length; i++)
      {
        if ((dummyVar[i] != id) && (dummyVar[i] != ''))
        {
          if (hidden.value != '')
            hidden.value = hidden.value + ','
          hidden.value = hidden.value + dummyVar[i]
        }
      }
    } else {
      document.getElementById(div).className = 'specialActive';

      if (hidden.value != '')
        hidden.value = hidden.value + ',';
      hidden.value = hidden.value + id;
    }
  }
}

function makeRequest(url, parameters) {
  http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType) {
      http_request.overrideMimeType('text/xml');
    }
  } else if (window.ActiveXObject) { // IE
    try {
      http_request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        http_request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }
  
  if (!http_request) {
    alert(addressValidationError);
    return false;
  }
  if(call != 'location')
    http_request.onreadystatechange = showAddressResponse;
  else
    http_request.onreadystatechange = showLocationResponse;
  http_request.open('POST', url, true);
  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http_request.setRequestHeader("Content-length", parameters.length);
  http_request.setRequestHeader("Connection", "close");
  http_request.send(parameters);
}

function resetAddressForm(reference)
{
  var divID = reference.replace(/\//g,"");
  changeDisplay(divID + 'Search,' + divID + 'Links,Client' + divID + 'Zipcode,Client' + divID + 'Housenumber,Client' + divID + 'HousenumberAddition',divID + 'Display');
  if(button=document.getElementById(divID + 'reset'))
  {
    button.style.display = 'none';
  }
}

function hideAddressForm(reference)
{
  var divID = reference.replace(/\//g,"");

  changeDisplay(divID + 'Display',divID + 'Search,' + divID + 'Links,Client' + divID + 'Zipcode,Client' + divID + 'Street,Client' + divID + 'Housenumber,Client' + divID + 'HousenumberAddition,Client' + divID + 'City,Client' + divID + 'Country');
  if(button=document.getElementById(divID + 'reset'))
  {
    button.style.display = 'inline';
  }
}

function showAddressResponse()
{
  if (http_request.readyState == 4) {
    if (http_request.status == 200 && http_request.responseText != '' && http_request.responseText != 'error' && http_request.responseText!='8')
    {
      addressVars = http_request.responseText.split(',');
      var divID = ref.replace(/\//g,"");
      if(call != 'suggest')
      {
        setField(ref + '/Street',addressVars[0],true);
        setField(ref + '/City',addressVars[4],true);
        setField(ref + '/Housenumber',addressVars[1],true);
        setField(ref + '/HousenumberAddition',addressVars[2],true);
        setField(ref + '/Zipcode',addressVars[3],true);
        setField(ref + '/Municipality',addressVars[5],true);
        setField(ref + '/State',addressVars[6],true);
        document.getElementById(divID + 'Display').innerHTML = addressVars[0] + " " + addressVars[1] + addressVars[2] + "<br />" + addressVars[3] + "&nbsp;&nbsp;" + addressVars[4];
        document.getElementById(divID + 'Display').style.display = 'block';
        changeDisplay(divID + 'Display',divID + 'Search,' + divID + 'Links,Client' + divID + 'Zipcode,Client' + divID + 'Street,Client' + divID + 'Housenumber,Client' + divID + 'HousenumberAddition,Client' + divID + 'City,Client' + divID + 'Country');
        if(button=document.getElementById(divID + 'reset'))
        {
          button.style.display = 'inline';
        }
      }
      else
      {
        divID += 'PlaceSuggest';
        if(document.getElementById(divID)) {
          document.getElementById(divID).innerHTML = '';
          for (i=0; i<addressVars.length; i++) {
            document.getElementById(divID).innerHTML += '<a href="javascript:setField(\'' + ref + '/City\',\'' + addressVars[i].replace('\'','\\\'') + '\',false);javascript:changeDisplay(\'\',\'' + divID + '\')">' + addressVars[i] + '</a>';
          }
          var left = getPosition(document.forms[frmName].elements[ref + '/City'],'x');
          var top = getPosition(document.forms[frmName].elements[ref + '/City'],'y') + 20;
          document.getElementById(divID).style.left = left + 'px';
          document.getElementById(divID).style.top = top + 'px';
          document.getElementById(divID).style.display = 'block';
        }
      }      
    }
    else
    {
      alert(addressValidationFault);
    }
    cursor_clear();
  } 
}

function setField(field,value,disable) {
  var form = document.forms[frmName];
  form.elements[field].value = value;
  form.elements[field].readonly=disable;
}

function getPosition(obj,pos) {
  var cur = 0;
  if (obj.offsetParent)
  {
    while (obj.offsetParent)
    {
      if(pos == 'x')
        cur += obj.offsetLeft;
      else
        cur += obj.offsetTop;
      obj = obj.offsetParent;
    }
  } else if (obj.x)
    cur += obj.x;
  return cur;
}
   
function validateAddress(reference) {
  cursor_wait();
  var pars = '';
  var form = document.forms[frmName];
  ref = reference;
  
  if(form.elements[ref + '/Zipcode'].value != '' && form.elements[ref + '/Housenumber'].value != '')
    pars = pars + 'zipcode=' + form.elements[ref + '/Zipcode'].value + '&housenumber=' + form.elements[ref + '/Housenumber'].value;
  else if (form.elements[ref + '/Street'].value != '' && form.elements[ref +'/City'].value != '' && form.elements[ref + '/Housenumber'].value != '')
    pars = pars + 'place=' + form.elements[ref + '/City'].value + '&housenumber=' + form.elements[ref + '/Housenumber'].value + '&street=' + form.elements[ref + '/Street'].value; 
  else {
    alert(addressValidationFault);
    return;
  }
  if(pars != '')
  {
    if(office = document.getElementById('FormHeaderRealtorID'))
      pars = pars + '&realtor_id=' + office.value;
    if(form.elements[ref+ '/HousenumberAddition'].value != '')
      pars = pars + '&addition=' + form.elements[ref + '/HousenumberAddition'].value;
    if(form.elements['country'].value != '')
      pars = pars + '&country=' + form.elements[ref + '/Country'].value;
    pars = pars + '&g4folder=' + g4folder;
    call = 'validate'; 
    makeRequest(g4folder + '/tools/address_call.php', pars);     
  }
}

function suggestPlace(reference)
{
  cursor_wait();
  var form = document.forms[frmName];
  if(form.elements[reference + '/City'].value != '' && form.elements[reference + '/City'].value.length > 2)
  {
    ref = reference;
    var pars = 'place=' + form.elements[ref + '/City'].value;
    if(office = document.getElementById('FormHeaderRealtorID'))
      pars = pars + '&realtor_id=' + office.value;
    call = 'suggest';
    makeRequest(g4folder + '/tools/address_call.php', pars);
  } 
}
function getLocation(field,pars,start)
{
  cursor_wait();
  var idName = 'client' + ucFirst(field);
  if(document.getElementById(idName) && document.getElementById(idName).style.display != 'block')
  {
    call = 'location';
    fieldName = field;
    if(pars != '')
      pars += '&'; 
    pars += 'location=' + field + '&g4folder=' + g4folder + '&start=' + start;
    if(document.getElementById('OfficeSelect') && document.getElementById('OfficeSelect').value!='')
    {
      pars += '&realtor_id=' + document.getElementById('OfficeSelect').value;
    }
    else if(office = document.getElementById('FormHeaderRealtorID'))
    {
      pars = pars + '&realtor_id=' + office.value; 
    }
    makeRequest(g4folder + '/tools/location_data.php', pars);
  } 
}
function selectLocation(dest,value,id) {
  if(document.getElementById(id).className == 'specialItem')
    var action = 'add';
  else
    var action = 'del';

  var pars = 'selected=' + value + '&action=' + action;

  getLocation(dest,pars,'');
}

function showLocationResponse()
{
  if (http_request.readyState == 4)
  {
    if (http_request.status == 200 && http_request.responseText != 'error')
    {
      responce = http_request.responseText.split('|');

      if(document.getElementById('specialSelectRegion'))
        document.getElementById('specialSelectRegion').innerHTML = responce[0];
      if(document.getElementById('specialSelectPlaces'))
        document.getElementById('specialSelectPlaces').innerHTML = responce[1];
      if(document.getElementById('specialSelectAreas'))
        document.getElementById('specialSelectAreas').innerHTML = responce[2];
      if(document.getElementById('specialSelectNeighbourhoods'))
        document.getElementById('specialSelectNeighbourhoods').innerHTML = responce[3];
      if(document.getElementById('locationPath'))
        document.getElementById('locationPath').value = responce[4];
    }
    cursor_clear();
  }
}

function setFieldsOnload(uri,xform)
{
  
  if(document.forms[frmName])
  {
    if(document.forms[frmName].elements['Form/Header/Source/WebsiteURI'])
    {
      document.forms[frmName].elements['Form/Header/Source/WebsiteURI'].value = uri;
    }
    if(document.forms[frmName].elements['xformsFileName'])
    {
      document.forms[frmName].elements['xformsFileName'].value = xform;
    }
  }
}

/*cookie functions*/
function setCookie(fieldName)
{
  value = getValue(fieldName);
  //if(value) {
    if(fieldName.indexOf('Name/Initials')!=-1)
    {
      value = initials(value);
      document.forms[frmName].elements[fieldName].value = value;
    }
    else if (fieldName.indexOf('Name/Lastname')!=-1 && fieldName.indexOf('Name/LastnamePrefix')==-1)
    {
      value = ucFirst(value);
      document.forms[frmName].elements[fieldName].value = value;
    }
  
    var newCookie = '';
    var valueSet = 0;
    var today = new Date();
    var expire = new Date();
    expire.setTime(today.getTime() + 3600000*24*31);
    var cookie = readCookie();
    if(cookie)
    {
      var values = cookie.split('--');
      for(var i=0;i < values.length;i++)
      {
        if (values[i].indexOf(fieldName) == 0)
        {
          valueSet = 1;
          newCookie = newCookie + "--" + fieldName + "__" + value;
        } else
          newCookie = newCookie + "--" + values[i];
      }
    }
    
    if(valueSet==0)
      newCookie = newCookie + "--" + fieldName + "__" + value; 
      
    while (newCookie.charAt(0)=='-') newCookie = newCookie.substring(1,newCookie.length);

    document.cookie = cookieName+"="+escape(newCookie) + ";expires="+expire.toGMTString()+"; path=/";
  //}
}

function readCookie()
{
  if(document.cookie)
  {
    var cookieN = cookieName + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++)
    {
      var c = ca[i];
      while (c.charAt(0)==' ') c = c.substring(1,c.length);
      if (c.indexOf(cookieN) == 0) return unescape(c.substring(cookieN.length,c.length));
    }
  }
  return null;
}

function getCookieValues(cookie,formName)
{
  frmName = formName;
  cookieName = cookie;
  var cookie = readCookie();
  var cookieValues = new Array()
  if(cookie)
  {
    var values = cookie.split('--');
    for(var i=0;i < values.length;i++)
    {
      var value = values[i];
      var value = value.split('__');
      if(document.forms[frmName] && value[0] != '' && document.forms[frmName].elements[value[0]] && value[1] != '')
         cookieValues[value[0]] = unescape(value[1]).replace('%20',' ').replace('%2520',' ').replace('%2C',',');
    }
  }

  if(document.forms[frmName] && document.forms[frmName].elementsS)
  {
    for (var j = 0; j < document.forms[frmName].elements.length; j++) {
      var name = document.forms[frmName].elements[j].name;
      if(cookieValues[name])
      {
        var value = cookieValues[name];
        if(((document.forms[frmName].elements[j].type == 'radio') || (document.forms[frmName].elements[j].type == 'checkbox')) && (document.forms[frmName].elements[j].value==value))
          document.forms[frmName].elements[j].checked = true;
        else
          document.forms[frmName].elements[j].value = value;
      }
    }
  }
}
/*end cookie functions*/

/*form validate functions */
function validateAll()
{
  var x = document.getElementsByTagName('div');
  var error = '';

  for (var i=0;i<x.length;i++)
  {
    if (x[i].className=='page' && x[i].childNodes[2] && (x[i].childNodes[2].id.indexOf('ClientForm')!=-1 || x[i].childNodes[2].id.indexOf('ClientListForm')!=-1))
    {
      var val = validateGroup(x[i].id);

      if(val!=true)
      {
        error += "Pagina " + x[i].id.replace("page","") + "(" + x[i].childNodes[1].innerHTML + "):\n" + val + "\n";
      }
    }
  }
  
  if(error!='')
  {
    alert("Niet alle velden zijn correct ingevuld\n\n" + error);
    return false;
  }
  
  return true;
}

function validate(group)
{
    var val = validateGroup(group);
    if(val==true)
    {
      return true;
    }
    else
    {
      alert(val);
      return false;
    }
}

function validateGroup(currentGroup)
{       
  var objCurrentSection = document.getElementById(currentGroup);        
  var validateAttribute = objCurrentSection.getAttribute('validate');
  if(validateAttribute && validateAttribute == 'no')
    return true;

  if (objCurrentSection != null)
  {
    var errors = '';
    for(var i=0;i < objCurrentSection.childNodes.length;i++)
    {
      var curValidateAttribute = objCurrentSection.childNodes[i].validate;
      var currentField = false;

      if(objCurrentSection.childNodes[i].nodeName == 'DIV' && (!curValidateAttribute || (curValidateAttribute && curValidateAttribute != 'no') )) 
      {
        if(objCurrentSection.childNodes[i].id.indexOf('ClientForm')!=-1)
        { 
          var currentChildNode = objCurrentSection.childNodes[i];
      
          if((currentChildNode.childNodes[1]) && (currentChildNode.childNodes[1].className=='fieldAttr') && (currentChildNode.childNodes[1].childNodes[0].nodeName=='INPUT') && (currentChildNode.childNodes[1].childNodes[0].type=='hidden') && (currentChildNode.childNodes[1].childNodes[0].id.indexOf('Form')!=-1)) {
            var currentField = currentChildNode.childNodes[1].childNodes[0];
            var validation = currentField.className;
            var currentDesc = "\"" + currentChildNode.childNodes[0].childNodes[0].innerHTML + "\" niet ingevuld";
          }
          else if ((currentChildNode.childNodes[1]) && (currentChildNode.childNodes[1].childNodes[0]) && (currentChildNode.childNodes[1].childNodes[0].childNodes[0]) && currentChildNode.childNodes[1].childNodes[0].childNodes[0].value!='' && (currentChildNode.childNodes[1].childNodes[0].childNodes[0].name) && currentChildNode.childNodes[1].childNodes[0].childNodes[0].name.indexOf('Email')!=-1)
          {
            var currentField = currentChildNode.childNodes[1].childNodes[0].childNodes[0];
            var validation = 'validateEmail';
            var currentDesc = "\"" + currentChildNode.childNodes[0].childNodes[0].innerHTML + "\" niet correct";
          }
          else if((currentChildNode.childNodes[1]) && (currentChildNode.childNodes[1].className=='fieldAttr') && (currentChildNode.childNodes[1].childNodes[0].childNodes[0].nodeName=='INPUT') && (currentChildNode.childNodes[1].childNodes[0].childNodes[0].type=='textbox'||currentChildNode.childNodes[1].childNodes[0].childNodes[0].type=='text'||currentChildNode.childNodes[1].childNodes[0].childNodes[0].type=='hidden') && (currentChildNode.childNodes[1].childNodes[0].childNodes[0].id.indexOf('Form')!=-1))
          {
            var currentField = currentChildNode.childNodes[1].childNodes[0].childNodes[0];
            var validation = currentField.className;
            var currentDesc = "\"" + currentChildNode.childNodes[0].childNodes[0].innerHTML + "\" niet ingevuld";
          }
          else if((currentChildNode.childNodes[1]) && (currentChildNode.childNodes[1].className=='fieldAttr') && (currentChildNode.childNodes[1].childNodes[0].childNodes[0].nodeName=='SELECT'))
          {
            var currentField = currentChildNode.childNodes[1].childNodes[0].childNodes[0];
            var validation = currentField.className;
            var currentDesc = "\"" + currentChildNode.childNodes[0].childNodes[0].innerHTML + "\" niet ingevuld";
          }
          else if(objCurrentSection.childNodes[i].id=='ClientFormlocation')
          {
            var currentField = objCurrentSection.childNodes[i].childNodes[0];
            var validation = objCurrentSection.childNodes[i].className;
            var currentDesc = "Locatie niet geselecteerd";
          }
        } else if(objCurrentSection.childNodes[i].className.indexOf('addressGroup')!=-1) {
          var currentField = objCurrentSection.childNodes[i].childNodes[2].childNodes[1].childNodes[0].childNodes[0];
          var validation = objCurrentSection.childNodes[i].className;
          var currentDesc = "Adres niet gevalideerd";
        }
      }

      if(currentField!=false && ((validation.indexOf('validateRequired')!=-1 && currentField.value=='') ||
      (validation.indexOf('validateAddress')!=-1 && currentField.readonly!=true) ||
      (validation.indexOf('validateEmail')!=-1 && !validateEmail(currentField.value))
      ))
      {
        errors += currentDesc.replace(' *','') + "\n";
        var currentField = false; 
      }
    }
    if(document.getElementById('OfficeSelect') && document.getElementById('OfficeSelect').value=='')
    {
      errors += "Niet geselecteerd naar welk kantoor het formulier verstuurd dient te worden\n";
    }
    
    if(errors!='')
    {
      return errors;
    }
    else
    {
      return true;     
    }
  }
}

function getValue(fieldName)
{
  for (var j = 0; j < document.forms[frmName].elements.length; j++) {
    if(document.forms[frmName].elements[j].name == fieldName)
    {
      _element = document.forms[frmName].elements[j];
      if(_element.type == 'radio' || _element.type == 'checkbox') {
        if (_element.checked)
          return _element.value;
      } else if (_element.type == 'select' || _element.type == 'select-multiple') {
        if (-1 != _element.selectedIndex)
          return _element.options[_element.selectedIndex].value;
      } else
        return _element.value;
    }
  }
  return false;
}

function validateEmail(s)
{
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(s))
    return true;
  else
    return false;
}
/*end form validate functions */

/*Transform data functions */
function ucFirst(s)
{
  s = trim(s);
  if(s.length > 0)
  {
    s = s.toLowerCase();
    s = s.substring(0,1).toUpperCase() + s.substring(1,s.length);
    return s; 
  }
  return false;
}
function initials(s)
{
  s = trim(s);
  if(s.length > 0)
  {
    var newString = '';
    for (i = 0; i < s.length; i++)
    {
      if((i < s.length) && s.charAt(i) != '.')
        newString = newString + s.charAt(i) + '.';
    }
    return newString.toUpperCase();  
  }
  return false;
}
/*end transform data functions */


/* maxlength textarea / input */
function setMaxLength()
{
	var x = document.getElementsByTagName('textarea');
  var y = document.getElementsByTagName('input');
	for (var i=0;i<x.length;i++)
  {
    insertCounterNode(x[i]);
	}
	for (var i=0;i<y.length;i++)
  {
    if(y[i].getAttribute('type')=='text' && y[i].getAttribute('maxlength') && (y[i].getAttribute('maxlength')<2147483647))
    {
      insertCounterNode(y[i]);
    }
	}
}

function insertCounterNode(relatedElement)
{
  if (relatedElement.getAttribute('maxlength'))
  {
	  var counter = document.createElement('div');
    counter.className = 'maxlength_counter ' + relatedElement.type + '_counter';
	  counter.relatedElement = relatedElement;
	  counter.innerHTML = '<span>0</span>/'+relatedElement.getAttribute('maxlength');
	  relatedElement.parentNode.insertBefore(counter,relatedElement.nextSibling);
	  relatedElement.relatedElement = counter.getElementsByTagName('span')[0];

	  relatedElement.onkeyup = relatedElement.onchange = checkMaxLength;
	  relatedElement.onkeyup();
  }
}

function checkMaxLength() {
	var maxLength = this.getAttribute('maxlength');
	var currentLength = this.value.length;
	if (currentLength > maxLength)
  {
		//this.relatedElement.className = 'toomuch';
    this.value = this.value.substr(0,maxLength);
    currentLength = maxLength;
  }
	//else
	//	this.relatedElement.className = '';
	this.relatedElement.firstChild.nodeValue = currentLength;
	// not innerHTML
}