var __isIE = navigator.appVersion.match(/MSIE/);
var __userAgent = navigator.userAgent;
var __isFireFox = __userAgent.match(/firefox/i);
var __isFireFoxOld = __isFireFox && (__userAgent.match(/firefox\/2./i) || __userAgent.match(/firefox\/1./i));
var __isFireFoxNew = __isFireFox && !__isFireFoxOld;

function __parseBorderWidth(width) {
  var res = 0;
  if (typeof (width) == "string" && width != null && width != "") {
    var p = width.indexOf("px");
    if (p >= 0) {
      res = parseInt(width.substring(0, p));
    }
    else {
      //do not know how to calculate other values (such as 0.5em or 0.1cm) correctly now
      //so just set the width to 1 pixel
      res = 1;
    }
  }
  return res;
}

//returns border width for some element
function __getBorderWidth(element) {
  var res = new Object();
  res.left = 0; res.top = 0; res.right = 0; res.bottom = 0;
  if (window.getComputedStyle) {
    //for Firefox
    var elStyle = window.getComputedStyle(element, null);
    res.left = parseInt(elStyle.borderLeftWidth.slice(0, -2));
    res.top = parseInt(elStyle.borderTopWidth.slice(0, -2));
    res.right = parseInt(elStyle.borderRightWidth.slice(0, -2));
    res.bottom = parseInt(elStyle.borderBottomWidth.slice(0, -2));
  }
  else {
    //for other browsers
    res.left = __parseBorderWidth(element.style.borderLeftWidth);
    res.top = __parseBorderWidth(element.style.borderTopWidth);
    res.right = __parseBorderWidth(element.style.borderRightWidth);
    res.bottom = __parseBorderWidth(element.style.borderBottomWidth);
  }

  return res;
}

//returns absolute position of some element within document
function getAbsolutePos(element) {
  var res = new Object();
  res.x = 0; res.y = 0;
  if (element !== null) {
    res.x = element.offsetLeft;
    res.y = element.offsetTop;

    var offsetParent = element.offsetParent;
    var parentNode = element.parentNode;
    var borderWidth = null;

    while (offsetParent != null) {
      res.x += offsetParent.offsetLeft;
      res.y += offsetParent.offsetTop;

      var parentTagName = offsetParent.tagName.toLowerCase();

      if ((__isIE && parentTagName != "table") || (__isFireFoxNew && parentTagName == "td")) {
        borderWidth = __getBorderWidth(offsetParent);
        res.x += borderWidth.left;
        res.y += borderWidth.top;
      }

      if (offsetParent != document.body && offsetParent != document.documentElement) {
        res.x -= offsetParent.scrollLeft;
        res.y -= offsetParent.scrollTop;
      }

      //next lines are necessary to support FireFox problem with offsetParent
      if (!__isIE) {
        while (offsetParent != parentNode && parentNode !== null) {
          res.x -= parentNode.scrollLeft;
          res.y -= parentNode.scrollTop;

          if (__isFireFoxOld) {
            borderWidth = kGetBorderWidth(parentNode);
            res.x += borderWidth.left;
            res.y += borderWidth.top;
          }
          parentNode = parentNode.parentNode;
        }
      }

      parentNode = offsetParent.parentNode;
      offsetParent = offsetParent.offsetParent;
    }
  }
  return res;
}

function FindObject( oName, oFrame, oDoc ) {
  if( !oDoc ) { if( oFrame ) { oDoc = oFrame.document; } else { oDoc = window.document; } }
  if( oDoc[oName] ) { return oDoc[oName]; } if( oDoc.all && oDoc.all[oName] ) { return oDoc.all[oName]; }
  if( oDoc.getElementById && oDoc.getElementById(oName) ) { return oDoc.getElementById(oName); }
  for( var x = 0; x < oDoc.forms.length; x++ ) { if( oDoc.forms[x][oName] ) { return oDoc.forms[x][oName]; } }
  for( var x = 0; x < oDoc.anchors.length; x++ ) { if( oDoc.anchors[x].name == oName ) { return oDoc.anchors[x]; } }
  for( var x = 0; document.layers && x < oDoc.layers.length; x++ ) {
    var theOb = FindObject( oName, null, oDoc.layers[x].document ); if( theOb ) { return theOb; } }
  if( !oFrame && window[oName] ) { return window[oName]; } if( oFrame && oFrame[oName] ) { return oFrame[oName]; }
  for( var x = 0; oFrame && oFrame.frames && x < oFrame.frames.length; x++ ) {
    var theOb = FindObject( oName, oFrame.frames[x], oFrame.frames[x].document ); if( theOb ) { return theOb; } }
  return null;
}

function FindObjectInForm(oName, oForm) {
  if (oForm) {
    var oDoc = window.document;
    if (oDoc.forms[oForm]) {
      if (oDoc.forms[oForm][oName]) {
        return (oDoc.forms[oForm][oName]);
      }
    }
  }
  return (FindObject(oName));
}

function SetObjectInstanceClass(aObject, aClass) {
  var obj = aObject;
  if (obj) {
    obj.setAttribute("class", aClass);
    if (obj.className) {
      obj.className = aClass;
    }
    if (obj.style) {
      if (obj.style.className) {
        obj.style.className = aClass;
      }
    }
  }
}

function SetObjectClass(aObject, aClass) {
  SetObjectInstanceClass(FindObject(aObject), aClass);
}

function ShowHideRegion(aName, aMode) {
  divobj = FindObject(aName);
  if (divobj) {
    if (aMode) {
      divobj.style.display = '';
    } else {
      divobj.style.display = 'none';
    }
  }
}

function IsRegionVisible(aName) {
    divobj = FindObject(aName);
    if (divobj != null) {
        if (divobj.style.display != 'none') {
            return (true);
        }
    }
    return (false);
}

function ToggleRegionVisibility(aName) {
  divobj = FindObject(aName);
  if (divobj) {
    ShowHideRegion(aName, !(divobj.style.display != 'none'));
  }
}

function AppendTextToField(aField, aText) {
  var edt = FindObject(aField);
  if (edt) {
    edt.value = edt.value + aText;
  }
}

function ValidEmailAddress(EmailAddr) {
	Filtro = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
    if (Filtro.test(EmailAddr)) {
      	return true;
    } else {
      	return false;
    }
}

function LTrim( value ) {
  if (value) {
    var re = /\s*((\S+\s*)*)/;
  	return value.replace(re, "$1");
  } else {
    return ("");
  }
}

function RTrim( value ) {
  if (value) {
    var re = /((\s*\S+)*)\s*/;
    return value.replace(re, "$1");
  } else {
    return ("");
  }
}

function Trim(value) {
	return LTrim(RTrim(value));
}

function SetCookie(name, value, expires, path, domain, secure ) {
  var today = new Date();
  today.setTime( today.getTime() );
  if ( expires ) {
    expires = expires * 1000 * 60 * 60 * 24;
  }
  var expires_date = new Date( today.getTime() + (expires) );
  document.cookie = name + "=" +escape( value ) +
    ( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
    ( ( path ) ? ";path=" + path : "" ) +
    ( ( domain ) ? ";domain=" + domain : "" ) +
    ( ( secure ) ? ";secure" : "" );
}

function GetCookie(name) {
  var dc = document.cookie;
  var prefix = name + "=";
  var begin = dc.indexOf("; " + prefix);
  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  } else {
    begin += 2;
  }
  var end = document.cookie.indexOf(";", begin);
  if (end == -1) end = dc.length;
  return unescape(dc.substring(begin + prefix.length, end));
}

function SetHashEntry(name, value) {
  GetContentByUrl("/system/ajax/actionmanager.aspx?cmd=writeajaxhash&key=" + name + "&value=" + value, false);
}

function GetHashEntry(name) {
  return (GetContentByUrl("/system/ajax/actionmanager.aspx?cmd=readajaxhash&key=" + name));
}

function SaveAbsolutePagePosition(aName) {
  var db = (document.body) ? 1 : 0;
  var scroll = (window.scrollTo) ? 1 : 0;
  if (scroll) {
    var x = (db) ? document.body.scrollLeft : pageXOffset;
    var y = (db) ? document.body.scrollTop : pageYOffset;
    SetCookie('xy_'+aName, x + '_' + y, 0);
  }
}

function LoadAbsolutePagePosition(aName) {
  var db = (document.body) ? 1 : 0;
  var scroll = (window.scrollTo) ? 1 : 0;
  if (scroll) {
    var xy = GetCookie('xy_'+aName);
    if (xy) {
      var ar = xy.split('_');
      if (ar.length == 2) {
        scrollTo(parseInt(ar[0]), parseInt(ar[1]));
      }
    }
  }
}

function getObjectAbsoluteYPosition(aName) {
  var obj = FindObject(aName);
  if (obj) {
    return(getAbsolutePos(obj).y)
  }
}

function ScrollToObject(aName) {
  if (window.scrollTo) {
    window.scrollTo(0, getObjectAbsoluteYPosition(aName));
  }
}

function HexEncode(s) {
  var hi,
      lo,
      i = 0;
  var sret = "";
  if (s) {
    for (i = 0; i < s.length; i++) {
      hi = s.charCodeAt(i) >> 4;
      lo = s.charCodeAt(i) & 0x0F;
      sret += hi.toString(16) + lo.toString(16);
    }
  }
  return (sret);
}

function GetXmlHttp() {
    var XMLHTTP_IDS,   
        xmlhttp,   
        success = false,   
        i;   
    // Mozilla/Chrome/Safari/IE7/IE8 (normal browsers)   
    try {   
        xmlhttp = new XMLHttpRequest();   
        xmlhttp.overrideMimeType('text/xml; charset=iso-8859-1');
    }   
    // IE(?!)   
    catch (e1) {   
      //        XMLHTTP_IDS = [ 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP' ];
      XMLHTTP_IDS = [ 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP' ];
        for (i = 0; i < XMLHTTP_IDS.length && !success; i++) {   
            try {   
                success = true;   
                xmlhttp = new ActiveXObject(XMLHTTP_IDS[i]);   
            }   
            catch (e2) {}   
        }   
        if (!success) {   
            throw new Error('Unable to create XMLHttpRequest!');   
        }   
    }   
    return xmlhttp;   
}   

function GetContentByUrl(aUrl, aAsync) {
  if (aUrl != "") {
    var xmlhttp = null;
    xmlhttp = GetXmlHttp();
    if (xmlhttp != null) {
      if (aAsync) {
        var strRes;
        xmlhttp.open("GET", aUrl, true);
        xmlhttp.onreadystatechange = function () {
          if (xmlhttp.readyState == 4) {
            if (xmlhttp.status == 200) {
              strRes = xmlhttp.responseText;
              if (strRes != "OK") {
                alert(strRes);
              }
            } else {
              alert("HTTP ERROR " + xmlhttp.status + ": accessing [" + aUrl + "]");
            }
          }
        }
        xmlhttp.setRequestHeader("Connection", "close");
        xmlhttp.send(null);
        return ("OK");
      } else {
        xmlhttp.open("GET", aUrl, false);
        xmlhttp.setRequestHeader("Connection", "close");
        xmlhttp.send(null);
        if (xmlhttp.status == 200) {
          return (xmlhttp.responseText);
        } else {
          alert("HTTP ERROR " + xmlhttp.status + ": accessing [" + aUrl + "]");
          return ("GetContentByUrl ERROR!");
        }
      }
    }
  } else {
    return ("GetContentByUrl ERROR: empty url!");
  }
}

function VerboseGetUrl(aUrl) {
  var s = GetContentByUrl(aUrl);
  if ((s != "") && (s != "OK")) {
    alert(s);
    return (false);
  } else {
    return (true);
  }
}

function VerbosePostUrl(aUrl, aData) {
  var xmlhttp = null;
  xmlhttp = GetXmlHttp();
  if (xmlhttp != null) {
    xmlhttp.open("POST", aUrl, false);
    xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded;');
    xmlhttp.setRequestHeader("Connection", "close");
    xmlhttp.send(aData);
    var s = xmlhttp.responseText;
    if ((s != "") && (s != "OK")) {
      alert(s);
      return (false);
    } else {
      return (true);
    }
  } else {
    return (false);
  }
}

function PostUrl(aUrl, aData) {
  var xmlhttp = null;
  xmlhttp = GetXmlHttp();
  if (xmlhttp != null) {
    xmlhttp.open("POST", aUrl, false);
    xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded;');
    xmlhttp.setRequestHeader("Connection", "close");
    xmlhttp.send(aData);
    var s = xmlhttp.responseText;
    return (s);
  } else {
    return ("");
  }
}

function ActionManager(aUrl, aReloadUrl) {
  if (VerboseGetUrl(aUrl)) {
    if (aReloadUrl) {
      window.location.href = aReloadUrl;
    } else {
      window.location.href = window.location.href;
    }
  }
}

function InjectHtmlInRegion(aRegion, aHtml) {
  var obj = FindObject(aRegion);
  if (obj) {
    obj.innerHTML = aHtml;
    return(true);
  } else {
    return(false);
  }
}

function InjectHtmlInRegionByUrl(aUrl, aRegion) {
  var obj = FindObject(aRegion);
  if (obj) {
    var s = GetContentByUrl(aUrl);
    if ( s != "GetContentByUrl ERROR!") {
      obj.innerHTML = s;
      return(true);
    } else {
      return(false);
    }
  } else {
    return(false);
  }
}

function InjectHtmlInEmptyRegionByUrl(aRegion, aUrl) {
  var obj = FindObject(aRegion);
  if (obj) {
    if (obj.innerHTML == "") {
      var s = GetContentByUrl(aUrl);
      if (s != "GetContentByUrl ERROR!") {
        obj.innerHTML = s;
        return (true);
      }
    }
  }
  return (false);
}

function SetComboValue(aName, aValue) {
  var retval = false
  var obj = FindObject(aName);
  if (obj) {
    if(obj.options) {
      for(var i=0; i<obj.options.length; i++) {
        if (obj.options[i].value == aValue) {
          retval = (!obj.options[i].selected);
          obj.options[i].selected = true;
        }
      }
    }
  }
  return (retval);
}

function SetFieldValue(aName, aValue, aForm) {
  var retval = false
  var obj = FindObjectInForm(aName, aForm);
  if (obj) {
    if (obj.options) {
      retval = SetComboValue(aName, aValue);
    } else {
      retval = (obj.value != aValue);
      obj.value = aValue;
    }
  }
  return (retval);
}

function CheckCheckbox(aName, aChecked) {
  var obj = FindObject(aName);
  if (obj) {
    obj.checked = aChecked;
  }
}

function CheckboxIsChecked(aName, aForm) {
  var obj = FindObjectInForm(aName, aForm);
  if (obj) {
    return (obj.checked);
  } else {
    return (false);
  }
}

function GetFieldValue(aName, aForm) {
  var obj = FindObjectInForm(aName, aForm);
  if (obj) {
    if (obj.options) {
      for (var i = 0; i < obj.options.length; i++) {
        if (obj.options[i].selected) {
          return (obj.options[i].value);
        }
      }
    } else {
      return (obj.value);
    }
  } else {
    alert("Missing object " + aName);
  }
  return ("");
}

function GetEncodedForm(aFormName) {
  var s = "";
  var ff = FindObject(aFormName);
  if (ff) {
    for (var i = 0; i < ff.elements.length; i++) {
      if (ff.elements[i].type != "button") {
        if (ff.elements[i].type == "checkbox") {
          if (ff.elements[i].checked) {
            if (s != "") {
              s = s + "&";
              s = s + ff.elements[i].name + '=' + HexEncode(ff.elements[i].value);
            }
          }
        } else {
          if (s != "") {
            s = s + "&";
          }
          s = s + ff.elements[i].name + '=' + HexEncode(ff.elements[i].value);
        }
      }
    }
  } else {
    alert("Missing form " + aFormName);
  }
  return (s);
}

function AjaxPostForm(aFormName, aUrl) {
  var s = GetEncodedForm(aFormName);
  if (s != "") {
    if (VerbosePostUrl(aUrl, s)) {
      window.location.href = window.location.href;
    }
  }
}

function SetFieldStyleBackground(aName, aValue) {
  var obj = FindObject(aName);
  if (obj) {
    obj.style.background='url('+aValue+')';
  }
}

function ccwsPopupWindow (url, win, width, height, options) {
  var leftPos = (screen.availWidth - width) / 2;
  var topPos = (screen.availHeight - height) / 2;
  options += 'width=' + width + ',height=' + height + ',left=' + leftPos + ',top=' + topPos;
  options += 'width=' + width + ',height=' + height;
  var mywin = window.open(url, win, options)
  mywin.focus();
  return (mywin);
}

function UploadFileDialog(aName) {
  ccwsPopupWindow('/system/dialogs/uploaddialog.aspx?pid='+aName, 'UploadFile', 400, 130, '');
}

function UploadImageDialog(aName) {
  ccwsPopupWindow('/system/dialogs/uploadimage.aspx?pid='+aName, 'UploadImage', 400, 135, '');
}

function ccwsShowMessage(aMessage) {
  alert(aMessage);
}

function ccwsShowWarningMessage(aMessage) {
  alert(aMessage);
}

function ccwsShowErrorMessage(aMessage) {
  alert(aMessage);
}

function ccwsAjaxCombo(aComboName, aUrl, aDefault) {
  var i,
      comboobj,
      strRes,
      arrValori,
      opt = null,
  comboobj = FindObject(aComboName);
  if (comboobj) {
    if (comboobj.options) {
      comboobj.options.length = 0;
      strRes = GetContentByUrl(aUrl);
      arrValori = strRes.split("|");
      if (arrValori.length > 1) {
        for (i = 0; i < arrValori.length; i += 2) {
          opt = new Option();
          opt.value = arrValori[i];
          opt.text = arrValori[i + 1];
          if ((opt.value == aDefault) && (aDefault != "")) {
            opt.selected = true;
          }
          comboobj.options[comboobj.options.length] = opt;
        }
      }
    }
  }
}

function TableSortManager(aTableName, aFieldName, aReloadUrl) {
  var s = GetContentByUrl("/system/ajax/actionmanager.aspx?cmd=tablesort&tablename=" + aTableName + "&fieldname=" + aFieldName);
  if (s == "OK") {
    window.location.href = aReloadUrl;
  } else {
    alert(s);
  }
}

function ItemsPerPageManager(aNumber, aContextName) {
  var s = GetContentByUrl("/system/ajax/actionmanager.aspx?cmd=itemsperpage&number=" + aNumber + "&context=" + (aContextName ? aContextName : "default"));
  if (s == "OK") {
    window.location.href = window.location.href;
  } else {
    alert(s);
  }
}


//f(x) per form                 
function addEvent(elm, evType, fn, useCapture) {
  if (elm.addEventListener) {
    elm.addEventListener(evType, fn, useCapture);
    return true;
  } else if (elm.attachEvent) {
    var r = elm.attachEvent("on" + evType, fn);
    return r;
  }
}

function prepopulate() {
  elements = document.getElementsByTagName('input');
  n_elements = elements.length;
  for (i = 0; i < n_elements; i++) {
    if (elements[i].type == 'text') {
      if ((elements[i].getAttribute('title') != '') && (elements[i].getAttribute('title') != null)) {
        elements[i].setAttribute('value', elements[i].getAttribute('title'));
        addEvent(elements[i], 'focus', input_focus);
        addEvent(elements[i], 'blur', input_blur);
      }
    }
  }
  elements = document.getElementsByTagName('textarea');
  n_elements = elements.length;
  for (i = 0; i < n_elements; i++) {
    if ((elements[i].getAttribute('title') != '') && (elements[i].getAttribute('title') != null)) {
      elements[i].value = elements[i].getAttribute('title');
      addEvent(elements[i], 'focus', input_focus);
      addEvent(elements[i], 'blur', input_blur);
    }
  }
}

function input_focus(e) {
  if (window.event) {
    target = window.event.srcElement;
  } else if (e) {
    target = e.target;
  } else return;
  if (target.nodeType == 3) {
    target = target.parentNode;
  }
  if ((target.nodeName.toLowerCase() != 'input') && (target.nodeName.toLowerCase() != 'textarea')) return false;
  if (target.value == target.getAttribute('title')) {
    target.value = '';
  }
  return true;
}

function input_blur(e) {
  if (window.event) {
    target = window.event.srcElement;
  } else if (e) {
    target = e.target;
  } else return;
  if (target.nodeType == 3) {
    target = target.parentNode;
  }
  if ((target.nodeName.toLowerCase() != 'input') && (target.nodeName.toLowerCase() != 'textarea')) return false;
  if (target.value == '') {
    target.value = target.getAttribute('title');
  }
  return true;
}

addEvent(window, 'load', prepopulate)
// fine f(x) per form

var ccwsValidateEMAIL        = 1;
var ccwsValidateMANDATORY    = 2;
var ccwsValidateNUMBER       = 3;
var ccwsValidateCHECKBOX     = 4;
var ccwsValidateUNIQUE       = 5;
var ccwsValidateCAPTCHA      = 6;
var ccwsValidateTHESAME      = 7;
var ccwsValidateUNIQUEEMAIL  = 8; // fa controllo ma gestisce se utente iscritto solo a newsletter e non al portale

var fValidatorOkClass = "";
var fValidatorErrorClass = "";
var fForceErrorAlerts = false;

function ccwsValidateEX(aFieldName, aValidator, aErrorRegion, aFormName, aEmptyVal, aMessageText, aTableName, aKeyField, aMinLength) {
  var i;
  var rit = false;
  var obj = FindObjectInForm(aFieldName, aFormName);
  var txt = "";
  if (obj) {
    switch (aValidator) {
      case 1:
        rit = (ValidEmailAddress(obj.value));
        if (!rit) {
          txt = aMessageText ? aMessageText : "indirizzo e-mail non valido";
        }
        break;
      case 2:
      case 5:
      case 8:
        var sfieldval = "";
        if(obj.options) {
          for(i=0; i < obj.options.length; i++) {
            if (obj.options[i].selected) {
              rit = (Trim(obj.options[i].value) != aEmptyVal);
              sfieldval = Trim(obj.options[i].value);
            }
          }
        } else {
          rit = ((Trim(obj.value) != aEmptyVal) && (obj.value != obj.title));
          sfieldval = Trim(obj.value);
        }
        if (!rit) {
          txt = aMessageText ? aMessageText : "campo obbligatorio";
        } else {
          if (aMinLength) {
            if (aMinLength > 0) {
              rit = (sfieldval.length >= aMinLength);
              if (!rit) {
                txt = aMessageText ? aMessageText : "contenuto errato";
              }
            }
          }
        }
        if ((rit) && (aValidator == ccwsValidateUNIQUE)) {
          var squery = "&t=" + HexEncode(aTableName) + "&f=" + HexEncode(aKeyField) + "&v=" + HexEncode(sfieldval);
          if (GetContentByUrl("/system/scripts/ajax/actionmanager.aspx?cmd=checkunique" + squery) != "OK") {
            rit = false;
            txt = aMessageText ? aMessageText : "campo duplicato";
          }
        }
        if ((rit) && (aValidator == ccwsValidateUNIQUEEMAIL)) {
          var squery = "&t=" + HexEncode(aTableName) + "&f=" + HexEncode(aKeyField) + "&v=" + HexEncode(sfieldval);
          if (GetContentByUrl("/system/scripts/ajax/actionmanager.aspx?cmd=checkuniqueemail" + squery) != "OK") {
            rit = false;
            txt = aMessageText ? aMessageText : "campo duplicato";
          }
        }
        break;
      case 3:
        rit = true;
        if (!rit) {
          txt = aMessageText ? aMessageText : "campo non numerico";
        }
        break;
      case 4:
        rit = obj.checked;
        if (!rit) {
          txt = aMessageText ? aMessageText : "campo non selezionato";
        }
        break;
      case 6:
        rit = (GetContentByUrl("/system/scripts/ajax/actionmanager.aspx?cmd=checkcaptcha&v=" + HexEncode(GetFieldValue(aFieldName, aFormName))) == "OK");
        if (!rit) {
          txt = aMessageText ? aMessageText : "codice di controllo errato";
          var cimg = FindObject(aTableName);
          if (cimg) {
            var d = new Date();
            cimg.src = "/system/captcha/captcha.aspx?" + d.getTime();
          }
        }        
        break;
      case 7:
        rit = (GetFieldValue(aFieldName, aFormName) == GetFieldValue(aTableName, aFormName));
        if (!rit) {
          txt = aMessageText ? aMessageText : "valori non uguali";
        }
        break;
      default:
        alert("Validatore sconosciuto");
        break;
    }
  }
  if (rit) {
    if ((aValidator != ccwsValidateCHECKBOX) && (fValidatorOkClass != "")) SetObjectInstanceClass(obj, fValidatorOkClass);
    if (aErrorRegion) {
      obj = FindObject(aErrorRegion);
      if (obj) {
        obj.innerHTML = "";
      }
    }
  } else {
    if ((aValidator != ccwsValidateCHECKBOX) && (fValidatorErrorClass != "")) SetObjectInstanceClass(obj, fValidatorErrorClass);
    if (aErrorRegion) {
      var errobj = FindObject(aErrorRegion);
      if (errobj) {
        errobj.innerHTML = txt;
      } else {
        if (txt != "") {
          if ((fForceErrorAlerts) || (aValidator == ccwsValidateCHECKBOX)) alert(txt);
        }
      }
    } else {
      if (txt != "") {
        if ((fForceErrorAlerts) || (aValidator == ccwsValidateCHECKBOX)) alert(txt);
      }
    }
    if (obj) {
      if (obj.focus) {
//        obj.focus();
      }
    }
  }
  return (rit);
}

function ccwsValidate(aFieldName, aValidator, aErrorRegion, aFormName, aMessageText, aMinLength) {
  return ( ccwsValidateEX(aFieldName, aValidator, aErrorRegion, aFormName, "", aMessageText, null, null, aMinLength) );
}

function ccwsServerValidate(aFieldName, aValidator, aErrorRegion, aFormName, aTableName, aKeyField, aMessageText) {
  return ( ccwsValidateEX(aFieldName, aValidator, aErrorRegion, aFormName, "", aMessageText, aTableName, aKeyField) );
}

/*---------------------------------------\
|      **** SMART VALIDATORS ****
\---------------------------------------*/

function SmartValidatorsSetClasses(aOkClass, aErrorClass, aForceErrorAlerts) {
  fValidatorOkClass = aOkClass;
  fValidatorErrorClass = aErrorClass;
  fForceErrorAlerts = aForceErrorAlerts;
}

function SmartValidatorEMAIL(aFieldName, aForm, aDefaultMessage) {
  return (ccwsValidate(aFieldName, ccwsValidateEMAIL, aFieldName + "_error", aForm, aDefaultMessage));
}

function SmartValidatorMANDATORY(aFieldName, aForm, aMinLength, aDefaultMessage) {
  return (ccwsValidate(aFieldName, ccwsValidateMANDATORY, aFieldName + "_error", aForm, aDefaultMessage, aMinLength));
}

function SmartValidatorNUMERIC(aFieldName, aForm, aDefaultMessage) {
  return (ccwsValidate(aFieldName, ccwsValidateNUMBER, aFieldName + "_error", aForm, aDefaultMessage));
}

function SmartValidatorCHECK(aFieldName, aForm, aDefaultMessage) {
  return (ccwsValidate(aFieldName, ccwsValidateCHECKBOX, aFieldName + "_error", aForm, aDefaultMessage));
}

function SmartValidatorUNIQUE(aFieldName, aTableName, aKeyField, aForm, aDefaultMessage) {
  return (ccwsServerValidate(aFieldName, ccwsValidateUNIQUE, aFieldName + "_error", aForm, aTableName, aKeyField, aDefaultMessage));
}

function SmartValidatorUNIQUEEMAIL(aFieldName, aForm, aDefaultMessage) {
  return (ccwsServerValidate(aFieldName, ccwsValidateUNIQUEEMAIL, aFieldName + "_error", aForm, "systemusers", "useremail", aDefaultMessage));
}

function SmartValidatorCAPTCHA(aFieldName, aImageName, aForm, aDefaultMessage) {
  return (ccwsServerValidate(aFieldName, ccwsValidateCAPTCHA, aFieldName + "_error", aForm, aImageName, "", aDefaultMessage));
}

function SmartValidatorTHESAME(aFieldName, aFieldName2, aForm, aDefaultMessage) {
  return (ccwsServerValidate(aFieldName, ccwsValidateTHESAME, aFieldName + "_error", aForm, aFieldName2, "", aDefaultMessage));
}
function ccwslogin_DoLogoutAction() {
  var s = GetContentByUrl("/system/login/Ajax/ActionManager.aspx?Content=Logout");
  if (s == "OK") {
    window.location.replace(window.location.href);
  } else {
    if (s != "") {
      ccwsShowErrorMessage(s);
    }
  }
  return (false);
}

function ccwslogin_DoLoginAction(aUrl) {
  var xmlhttp = null;
  var uobj = FindObject("loginusername");
  var pobj = FindObject("loginpassword");
  var robj = FindObject("remembermylogindata");
  var postdata = "";
  var s = ""
  if ((uobj) && (pobj)) {
    if (Trim(uobj.value) != "") {
      xmlhttp = GetXmlHttp();
      if (xmlhttp != null) {
        if (!aUrl) {
          aUrl = window.location.href;
        }
        postdata = "UserName=" + HexEncode(Trim(uobj.value)) + "&UserPassword=" + HexEncode(Trim(pobj.value)) + "&url=" + (aUrl ? HexEncode(aUrl) : "");
        if (robj) {
          postdata = postdata + "&remember=" + (robj.checked ? "Y" : "N");
        } else {
          postdata = postdata + "&remember=N";
        }
        xmlhttp.open("POST", "/system/login/Ajax/ActionManager.aspx?Content=Login", false);
        xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
        xmlhttp.send(postdata);
        s = xmlhttp.responseText;
        if (s.substr(0, 2) == "OK") {
          window.location.href = s.substr(3);
          return (true);
        } else {
          ccwsShowErrorMessage(s.substr(3));
        }
      }
    }
  } else {
    alert("ERROR: missing login fields!");
  }
  return(false);
}

