var type_array=new Array("text","email","phone","number","zip","date","time","comments");var type_name_array=new Array("Text","E-mail","Phone Number","Number","Zip","Date","Time","Comments");function checkEmail(object){    var emailStr=object.value;        var emailPat=/^(.+)@(.+)$/;        var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]\\!\\#\\$\\%";        var validChars="\[^\\s" + specialChars + "\]";        var quotedUser="(\"[^\"]*\")";        var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;        var atom=validChars + '+';        var word="(" + atom + "|" + quotedUser + ")";        var userPat=new RegExp("^" + word + "(\\." + word + ")*$");        var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");        var matchArray=emailStr.match(emailPat);        if (matchArray==null)         {            alert("Invalid Email.");            object.focus();            return false;        }        var user=matchArray[1];        var domain=matchArray[2];        if (user.match(userPat)==null)         {                alert("Invalid Email.");        object.focus();                return false;        }        var IPArray=domain.match(ipDomainPat);        if (IPArray!=null)         {                for (var i=1;i<=4;i++)                 {                        if (IPArray[i]>255)                         {                            alert("Invalid Email.");                            object.focus();                            return false;                        }                }                return true;        }        var domainArray=domain.match(domainPat);        if (domainArray==null)         {                alert("Invalid Email.");        object.focus();                return false;        }        var atomPat=new RegExp(atom,"g");        var domArr=domain.match(atomPat);        var len=domArr.length;        if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>4)        {            alert("Invalid Email.");            object.focus();            return false;        }        if (len<2)         {            alert("Invalid Email.");            object.focus();            return false;        }        return true;}function checkDigits(object,maxvalue){    var strDigits=object.value;    var valid="0123456789";    var ok=1;    var temp;    if (strDigits.length==0)    {        alert("Invalid value. Maximum value is "+maxvalue);        object.focus();        return false;    }    for (var i=0;i<strDigits.length;i++)    {        temp=""+strDigits.substring(i,i+1);        if (valid.indexOf(temp)=="-1")        {            ok=0;            alert("Invalid value. Only digits allowed.");            object.focus();            return false;        }    }    if (strDigits>maxvalue || strDigits<1)    {        alert("Invalid value. Maximum value is "+maxvalue);        object.focus();        return false;    }    return true;}function checkText(object){    var strText=object.value;    var invalid=".,;:/\'\"@#$&^%~|+=[]{}<>_*";    var ok=1;    var temp;    if (strText.length==0)    {        alert("Invalid value.");        object.focus();        return false;    }    for (var i=0;i<strText.length;i++)    {        temp=""+strText.substring(i,i+1);        if (invalid.indexOf(temp)>0)        {            ok=0;            alert("Invalid value. Only alphanumeric symbols should be used.");            object.focus();            return false;        }    }        return true;}function checkStep1(sform,maxfields){    if (!checkEmail(sform.email))    {        return false;    }    if (!checkDigits(sform.fields,maxfields))    {        return false;    }    return true;}function checkStep2(sform,fieldnum,offset){    for (var i=0;i<fieldnum;i++)    {        if (!checkDigits(sform.elements[i*4+offset],fieldnum))        {            return false;        }        if (!checkText(sform.elements[i*4+1+offset]))        {            return false;        }    }    return true;}function makeForm(sform,fieldnum,offset){    var str="";    var required="";    var required_type="";    for (var i=0;i<fieldnum;i++)    {        order=sform.elements[i*4+offset].value-1;        if (sform.elements[order*4+offset+3].checked)        {            required+="field"+i+",";            required_type+="type"+i+",";            required_sign=" *";        }        else        {            required_sign=" ";        }        if (type_array[sform.elements[order*4+offset+2].value]=="comments")        {            str+='<tr>\n<td class="body" valign="top">'+sform.elements[order*4+offset+1].value+':'+required_sign+'</td>\n<td>';            str+='<textarea name="field'+i+'" cols="30" rows="5"></textarea><input type="hidden" name="caption'+i+'" value="'+sform.elements[order*4+offset+1].value+required_sign+'"><input type="hidden" name="type'+i+'" value="'+type_array[sform.elements[order*4+offset+2].value]+'">\n';        }        else        {            str+='<tr>\n<td class="body">'+sform.elements[order*4+offset+1].value+':'+required_sign+'</td>\n<td>';            str+='<input type="text" name="field'+i+'" size="40" maxlength="127"><input type="hidden" name="caption'+i+'" value="'+sform.elements[order*4+offset+1].value+required_sign+'"><input type="hidden" name="type'+i+'" value="'+type_array[sform.elements[order*4+offset+2].value]+'">\n';        }        str+='</td>\n</tr>\n';    }    strHTML='<form name="contForm" action="send.php" method="post" onSubmit="return checkSend(\'document.contForm\',\''+required+'\',\''+required_type+'\',document.contForm.demo.value);">\n\n<table>\n'+str+'<tr>\n<td colspan="2"><input type="submit" name="submit" value="Send"><input type="hidden" name="email" value="'+sform.email.value+'"><input type="hidden" name="demo" value="0"></td>\n</tr>\n</table>\n</form>';    document.all.contentDiv.innerHTML=strHTML;    document.contForm.demo.value=1;}function checkSend(sform,required,required_type,demo){    var required_array = required.split(",");    var required_type_array = required_type.split(",");    for (var i=0;i<required_array.length-1;i++)    {        type=eval(sform+"."+required_type_array[i]+".value");        el=eval(sform+"."+required_array[i]);        if (!checkMandatoryField(el))        {            return false;        }        if (type=="email")        {            if (!isEmail(el))            {                return false;            }        }        else if (type=="phone")        {            if (!isPhone(el))            {                return false;            }        }        else if (type=="number")        {            if (!isInteger(el))            {                return false;            }        }        else if (type=="zip")        {            if (!isZip(el))            {                return false;            }        }        else if (type=="date")        {            if (!isDate(el))            {                return false;            }        }        else if (type=="time")        {            if (!isTime(el))            {                return false;            }        }        else if (type=="comments")        {            if (!checkMandatoryField(el))            {                return false;            }        }        else if (type=="other")        {            if (!checkMandatoryField(el))            {                return false;            }        }    }    if (demo==1)    {        return false;    }    return true;}function checkPhone(object){    var strField=object.value;    if (strField.length==0)    {        alert("Phone must be a valid numeric entry.");        object.focus();        return false;    }    for (var i=0;i<strField.length;i++)    {        sSimb=strField.charAt(i);        if ((sSimb < '0' || sSimb > '9') && (sSimb != '-') && (sSimb != '.') && (sSimb != '+') && (sSimb != ' ') && (sSimb != '(') && (sSimb != ')'))        {            alert("Phone must be a valid numeric entry.");            object.focus();            return false;        }    }    return true;}function checkZip(object){    var strField=object.value;    if (strField.length!=5 && strField.length!=9)    {        alert("Please, make sure ZIP Code is 5 or 9 digits.");        object.focus();        return false;    }    for (var i=0;i<strField.length;i++)    {        if (strField.charAt(i)<'0' || strField.charAt(i)>'9')        {            alert("ZipCode must be a valid numeric entry. Please do not use non-numeric symbols.");            object.focus();            return false;        }    }    return true;}function checkDate(object){    var strField=object.value;    if (strField.length==0)    {        alert("Field value must be in MM/DD/YYYY format.");        object.focus();        return false;    }    var i=0;    var j=0;    while ((strField.charAt(i)!= "/" && strField.charAt(i)!= "-") && i<strField.length)    {        i++;    }    if (i==strField.length || i>2)    {        alert("Field value must be in MM/DD/YYYY format.");        object.focus();        return false;    }    var addOne=false;    if (i==2)    {        addOne = true;    }    if (!isDateNumber(strField.substring(0,i),1))    {        alert("Field value must be in MM/DD/YYYY format.");        object.focus();        return false;    }    j=i+1;    i=0;    while ((strField.charAt(i+j)!= "/" && strField.charAt(j+i)!="-") && (i+j)<strField.length)    {        i++;    }    if ((i+j)==strField.length || i>2)    {        alert("Field value must be in MM/DD/YYYY format.");        object.focus();        return false;    }    if (!isDateNumber(strField.substring(j,i+j),2))    {        alert("Field value must be in MM/DD/YYYY format.");        object.focus();        return false;    }    j = i+3;    i = 0;    if (addOne)    {        j++;    }    while ((i+j)<strField.length)    {        i++;    }    if (i!= 2 && i!=4)    {        alert("Field value must be in MM/DD/YYYY format.");        object.focus();        return false;    }    if (!isDateNumber(strField.substring(j,i+j),3))    {        alert("Field value must be in MM/DD/YYYY format.");        object.focus();        return false;    }    return true;}function isDateNumber(str,method){    var i=0;    if (isNaN(parseInt(str)) || parseInt(str) < 0)    {        return false;    }    if (method == 2)    {        if (parseInt(str)>31)        {            return false;        }    }    if (method==1)    {        if (parseInt(str)>12)        {            return false;        }    }    for (i=0;i<str.length;i++)    {        if (str.charAt(i)<'0' || str.charAt(i)>'9')        {            return false;        }    }    return true;}function checkTime(object){    var s=object.value;    sError="Please, enter time in format 'HH:MM'";    if (s.length==0)    {        alert(sError);        object.focus();        return false;    }    var bFlag=false;    var i=0;    while ((s.charAt(i)!=":") && (i<s.length))    {        i++;    }    if ((s.charAt(i)!=':') || (s.length>5))    {        bFlag=true;    }    var iHour=parseInt(s.substr(0,i));    if (isNaN(iHour) || (parseInt(iHour)>24) || (parseInt(iHour)<0))    {        bFlag=true;    }    var iMin=parseInt(s.substr(i+1,s.length-i));    if (isNaN(iMin) || (parseInt(iMin)>60) || (parseInt(iMin)<0))    {        bFlag=true;    }    if (s=='24:00')    {        object.value='23:59';    }    if (bFlag)    {        alert(sError);        object.focus();        return false;    }    else    {        return true;    }}function checkMandatoryField(object){    if (object.value.length==0)    {        alert ("Please, fill field!");        object.focus();        return false;    }    return true;}function insertForm(sform,object){    var container=window.opener.foo.document.contForm;    if (container!=null)    {        sform.demo.value=0;        container.outerHTML=object.innerHTML;    }    else    {        var sel = window.opener.foo.document.selection;        if (sel!=null)        {            var rng = sel.createRange();            if (rng!=null)            {                sform.demo.value=0;                rng.pasteHTML(object.innerHTML);            }        }    }    window.opener.switchOnBorders();    window.close();    window.opener.foo.focus();}function makeStep2(fieldnum){    var count;    var str='<table width="80%" border="0" cellspacing="" cellpadding="1">\n<tr>\n<td class="bodybold" valign="middle">Order</td>\n<td class="bodybold" valign="middle">Field Caption</td>\n<td class="bodybold" valign="middle">Field Type</td>\n<td class="bodybold" valign="middle">Required</td>\n</tr>';    for (var i=0;i<fieldnum;i++)    {        count=i+1;        str+='<tr>\n<td valign="middle"><input type="name" name="order['+i+']" size="2" maxlength="2" value="'+count+'"></td>\n<td valign="middle"><input type="name" name="name['+i+']" size="35" maxlength="127"></td>\n<td valign="middle"><select name="type['+i+']">';        for (var j=0;j<type_array.length;j++)        {            str+='<option value="'+j+'">'+type_name_array[j]+'</option>';        }        str+='</select></td>\n<td valign="middle"><input type=checkbox name="required['+i+']" value="1"></td>\n</tr>';    }    str+='</table>\n';    document.all.step2Content.innerHTML=str;}function makeStep3(sform,fieldnum,offset){    var count;    var str='<table width="80%" border="0" cellspacing="0" cellpadding="1">\n<tr>\n<td class="bodybold" valign="middle">Order</td>\n<td class="bodybold" valign="middle">Field Caption</td>\n<td class="bodybold" valign="middle">Field Type</td>\n<td class="bodybold" valign="middle">Required</td>\n</tr>\n<tr>\n<td colspan="4">&nbsp;</td>\n</tr>\n';    for (var i=0;i<fieldnum;i++)    {        count=i+1;        order=sform.elements[i*4+offset].value-1;        if (sform.elements[order*4+3+offset].checked)        {            checked="Yes";        }        else        {            checked="No";        }        str+='<tr>\n<td valign="middle" class="body">'+count+'</td>\n<td valign="middle" class="body">'+sform.elements[order*4+offset+1].value+'</td>\n<td valign="middle" class="body">'+type_name_array[sform.elements[order*4+offset+2].selectedIndex]+'</td>\n<td valign="middle" class="body">'+checked+'</td>\n</tr>\n';    }    str+='<tr>\n<td colspan="4">&nbsp;</td>\n</tr></table>\n';    document.all.step3Content.innerHTML=str;}function goForward(sform,maxfields){    if (document.all.step1.style.display=="inline")    {        if (checkStep1(sform,maxfields))        {            makeStep2(sform.fields.value);            document.all.step1.style.display="none";            document.all.step2.style.display="inline";            document.all.step3.style.display="none";        }    }    else if (document.all.step2.style.display=="inline")    {        if (checkStep2(sform,sform.fields.value,4))        {            makeStep3(sform,sform.fields.value,4);            makeForm(sform,sform.fields.value,4);            document.all.step1.style.display="none";            document.all.step2.style.display="none";            document.all.step3.style.display="inline";        }    }}function goBack(){    if (document.all.step2.style.display=="inline")    {        document.all.step1.style.display="inline";        document.all.step2.style.display="none";        document.all.step3.style.display="none";    }    else if (document.all.step3.style.display=="inline")    {        document.all.step1.style.display="none";        document.all.step2.style.display="inline";        document.all.step3.style.display="none";    }}function getContent(sform,offset){    var sourceFormName='window.opener.foo.document.contForm';    var sourceForm=eval(sourceFormName);    var caption;    if (sourceForm)    {        var fields=(sourceForm.elements.length-3)/3;        makeStep2(fields);        for (var i=0;i<fields;i++)        {            caption=eval(sourceFormName+'.caption'+i+'.value');            if (caption.indexOf("*")!=-1)            {                sform.elements[i*4+offset+1].value=caption.substr(0,caption.length-2);                sform.elements[i*4+offset+3].checked=true;            }            else            {                sform.elements[i*4+offset+1].value=caption;            }            for (var j=0;j<type_array.length;j++)            {                if (eval(sourceFormName+'.type'+i+'.value')==type_array[j])                {                    sform.elements[i*4+offset+2].selectedIndex=j;                    break;                }            }        }        document.all.prev.style.display="none";        document.all.step1.style.display="none";        document.all.step2.style.display="inline";        document.all.step3.style.display="none";    }}
