﻿function trim(str, chars) {return ltrim(rtrim(str, chars), chars);}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function fieldHasData(id, type) {
    switch (type.toLowerCase()) {
        case 'text': {
            return (document.getElementById(id).value != '');
        }
        case 'option': {
            return (document.getElementById(id).options[0].selected == false);
        }
    }
}

function setPageUrl(origID, destID)
{
    orig = document.getElementById(origID);
    dest = document.getElementById(destID);
    orig.value = trim(orig.value); //trim
    dest.value = trim(orig.value.replace(/(\&)+/g,""));
    dest.value = dest.value.replace(/(\ )+/g,"-");
}

//function readFilePath(hidFilePath, FileUpload1)
//{
//    if(document.getElementById(hidFilePath).value != '' || document.getElementById(hidFilePath).value != null)
//    {
//        alert(document.getElementById(hidFilePath).value);
//        document.getElementById(FileUpload1).value = document.getElementById(hidFilePath).value;
//        //alert(document.getElementById(FileUpload1).value);        
//    }
//}

function showPreview(url)
{
    window.open(url,"preview",'width=1024,height=768,resizable=yes,scrollbars=yes,left=200,top=200');
}



function matchCtlValues(id1, id2, titolomess, mess, errdiv)
{
    errdiv = errdiv || 'errorPanel';
    var ctlWarning = document.getElementById(errdiv);
    ctlWarning.style.display = 'none';
    
    var ctl1 = document.getElementById(id1);
    var ctl2 = document.getElementById(id2);
    
    ctl2.style.backgroundColor = 'ffffff';

    if(ctl1.value != ctl2.value)
        return notValid(ctl2, ctlWarning, titolomess, mess, errdiv);
    else return true;
}

function chkDifferentCtlValues(id1, id2, titolomess, mess, errdiv)
{
    errdiv = errdiv || 'errorPanel'; //
    var ctlWarning = document.getElementById(errdiv);
    ctlWarning.style.display = 'none';
    
    var ctl1 = document.getElementById(id1);
    var ctl2 = document.getElementById(id2);
    
    ctl2.style.backgroundColor = 'ffffff';

    if(ctl1.value == ctl2.value)
        return notValid(ctl2, ctlWarning, titolomess, mess, errdiv);
    else return true;
}

function checkValidComboDate(idMonth, idDay, idYear, titolomess, mess, errdiv) { 
    errdiv = errdiv || 'errorPanel';

    var ctlMonth = document.getElementById(idMonth);
    ctlMonth.style.backgroundColor = 'ffffff';
    
    var ctlDay = document.getElementById(idDay);
    ctlDay.style.backgroundColor = 'ffffff';
    
    var ctlYear = document.getElementById(idYear);
    ctlYear.style.backgroundColor = 'ffffff';
    
    var ctlWarning = document.getElementById(errdiv);
    ctlWarning.style.visibility = 'hidden';
    
    var dateString = ctlMonth.options[ctlMonth.selectedIndex].value + '-' + ctlDay.options[ctlDay.selectedIndex].value + '-' + ctlYear.options[ctlYear.selectedIndex].value;
    
    var re = /(((0[13578]|10|12)([-])(0[1-9]|[12][0-9]|3[01])([-])(\d{4}))|((0[469]|11)([-])([0][1-9]|[12][0-9]|30)([-])(\d{4}))|((02)([-])(0[1-9]|1[0-9]|2[0-8])([-])(\d{4}))|((02)([-])(29)([-])([02468][048]00))|((02)([-])(29)([-])([13579][26]00))|((02)([-])(29)([-])([0-9][0-9][0][48]))|((02)([-])(29)([-])([0-9][0-9][2468][048]))|((02)([-])(29)([-])([0-9][0-9][13579][26])))/;
    if (!re.test(dateString))
          return notValid(ctlDay, ctlWarning, titolomess, mess, errdiv);
    else return true;
}

function checkValidComboDateMY(idMonth, idYear, titolomess, mess, errdiv) {
    
    errdiv = errdiv || 'errorPanel';

    var ctlMonth = document.getElementById(idMonth);
    ctlMonth.style.backgroundColor = 'ffffff';
    
    var ctlYear = document.getElementById(idYear);
    ctlYear.style.backgroundColor = 'ffffff';
    
    var ctlWarning = document.getElementById(errdiv);
    ctlWarning.style.display = 'none';
    
    var cM = ctlMonth.options[0].selected;
    var cY = ctlYear.options[0].selected;
    
    if ((cM && !cY) || (!cM && cY))
          return notValid(ctlMonth, ctlWarning, titolomess, mess, errdiv);
    else return true;
}

function checkField(id, check, param, titolomess, mess, errdiv) 
{
    
    errdiv = errdiv || 'errorPanel'; //

    var ctl = document.getElementById(id);
    ctl.className = 'input';
     
    var expr = document.getElementById(id).value;
    var re;
    
    var ctlWarning = document.getElementById(errdiv);
    ctlWarning.style.display = 'none';

    switch (check.toLowerCase()) {
        case 'mandatory': {
            if (expr == '') // ATTENZIONE! xD
               return notValid(ctl, ctlWarning, titolomess, mess, errdiv);
            else return true;
        }
        case 'valid': {
            re = /^[a-zA-Z0-9',\-\s\.]*$/;
            //re = /^[a-zA-Z0-9',\s\.]*$/;
            if (!re.test(expr))
                   return notValid(ctl, ctlWarning, titolomess, mess, errdiv);
            else return true;
        }
        case 'url': {
            //re = /^(http|https|ftp)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?\/?([a-zA-Z0-9\-\._\?\,\'\/\\\+&amp;%\$#\=~])*[^\.\,\)\(\s]$/;
            re = /^[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?\/?([a-zA-Z0-9\-\._\?\,\'\/\\\+&amp;%\$#\=~])*[^\.\,\)\(\s]$/;
            if (!re.test(expr) && expr != '')
                   return notValid(ctl, ctlWarning, titolomess, mess, errdiv);
            else return true;
        }
        case 'numeric': {
            re = /^[0-9]*$/;
            if (!re.test(expr))
                   return notValid(ctl, ctlWarning, titolomess, mess, errdiv);
            else return true;
        }
        case 'currency': {
            re = /^\d+(\.\d{2})?$/; // /(^\d*\.\d{2}$)/; 
            if (!re.test(expr))
                   return notValid(ctl, ctlWarning, titolomess, mess, errdiv);
            else return true;
        }
        case 'length': {
            if (expr.length < param)
                   return notValid(ctl, ctlWarning, titolomess, mess, errdiv);
            else return true;
        }
        case 'maxlength': {
            if (expr.length > param)
                   return notValid(ctl, ctlWarning, titolomess, mess, errdiv);
            else return true;
        }
        case 'minimumlengthtextarea': {
            if (expr.length <= param)
                   return notValid(ctl, ctlWarning, titolomess, mess, errdiv);
            else return true;
        }
        case 'email': {
            re = /^[_a-zA-Z0-9+-]+(\.[_a-zA-Z0-9+-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/;
            if (!re.test(expr))
                   return notValid(ctl, ctlWarning, titolomess, mess, errdiv);
            else return true;
        }
        case 'date': {
            re = /(((0[13578]|10|12)([-])(0[1-9]|[12][0-9]|3[01])([-])(\d{4}))|((0[469]|11)([-])([0][1-9]|[12][0-9]|30)([-])(\d{4}))|((02)([-])(0[1-9]|1[0-9]|2[0-8])([-])(\d{4}))|((02)([-])(29)([-])([02468][048]00))|((02)([-])(29)([-])([13579][26]00))|((02)([-])(29)([-])([0-9][0-9][0][48]))|((02)([-])(29)([-])([0-9][0-9][2468][048]))|((02)([-])(29)([-])([0-9][0-9][13579][26])))/;
            if (!re.test(expr))
                  return notValid(ctl, ctlWarning, titolomess, mess, errdiv);
            else return true;
        }
        case 'italiandate': {
            re = /^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((1[6-9]|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((1[6-9]|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((1[6-9]|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/;
            if (!re.test(expr))
                  return notValid(ctl, ctlWarning, titolomess, mess, errdiv);
            else return true;
        }
        case 'optionselected': {
            if (ctl.options[0].selected == true)
                  return notValid(ctl, ctlWarning, titolomess, mess, errdiv);
            else return true;
        }
        case 'checked': {
            if (ctl.checked == false)
                  return notValid(ctl, ctlWarning, titolomess, mess, errdiv);
            else return true;
        }
        case 'uploadfilespecified': {
            if (ctl.value == '')
                  return notValid(ctl, ctlWarning, titolomess, mess, errdiv);
            else return true;
        }
        case 'validnotstrict': {
            //TODO: da verificare
            re = /((<)|(>)|(%3c)|(%3e)|(&lt)|(&gt))/;
            if (re.test(expr))
                return notValid(ctl, ctlWarning, titolomess, mess, errdiv);
            else 
                return true;
        }
    }
}

function notValid(ctl, ctlWarning, titolomess, mess, errdiv)
{
    errdiv = errdiv || 'errorPanel'; //se è panel generico 
    
    ctlWarning.style.display = 'block';
    ctlWarning.style.visibility = 'visible';
    ctl.style.backgroundColor = ''; //setta il background a quello che c'era, ennò IE lo rifà bianco

    if (ctl.type == 'textarea')
        ctl.className = 'textareaerrore';
    else if (ctl.type == 'checkbox')
        ctl.className = 'checkerrore';
    else
        ctl.className = 'inputerrore';
    
    var HTMLmess = '<span style="color:#f78673;">' + titolomess + ': ' + mess + '</span>';
        
    ctlWarning.innerHTML = HTMLmess;
    if (ctl.status != null || ctl.status != '') ctl.focus();
    return false;
}

function notServerValid(id, titolomess, mess)
{   
    //errdiv = errdiv || 'errorPanel'; //se è panel generico 
    
    var ctlWarning = document.getElementById(id);
    ctlWarning.style.display = 'none';
   
    ctlWarning.style.display = 'block';
    ctlWarning.style.visibility = 'visible';
    
    if((ctlWarning=='errorPanelPublic')||(ctlWarning=='errorPanelPublic2')||(ctlWarning=='errorPanelLogin'))
        var HTMLmess = '<span style="color:#f78673;">' + titolomess + ': ' + mess + '</span>';
    else
        var HTMLmess = '<h1>' + titolomess + '</h1><p>' + mess + '</p>';
        
    ctlWarning.innerHTML = HTMLmess;
    
    return false;
}