// signature_signature.js // RJM Programming // May, 2017 // Help out signature_signature.html and others like it var toplastta='',topfirst=true,toplthere=false, topelem=null, topielem=null, topcontext=null, topwidth=0, topheight=0, topvswidth=0, topvsheight=0, topvswidthoff=0, topvsheightoff=0; var firstcall=true;savenow=0, lastsavenow=0, ppx=-1,ppy=-1,pmore='', isScribble=1; //0; var prevlines=[], lines=[]; var eighteen=18; var jsemail = ""; var jscf = "18px Verdana", lastjscf=jscf; var colcf = "black"; var xua = navigator.userAgent; var isiPad = /iPad/i.test(xua) || /iPhone/i.test(xua) || /iPhone OS 3_1_2/i.test(xua) || /Andrxoid/i.test(xua) || /iPhone OS 3_2_2/i.test(xua); var isTouch = /touch/i.test(xua) || /Touch/i.test(xua); var sscoords = (location.search.split('sscoords=')[1] ? decodeURIComponent(location.search.split('sscoords=')[1].split('&')[0]) : ''); var ninehundred = (location.search.split('ninehundred=')[1] ? eval(decodeURIComponent(location.search.split('ninehundred=')[1].split('&')[0])) : 900); if (ninehundred > 900) sscoords=''; function ssj_setCookie(thisg) { // thanks to JavaScript and Ajax by Tom Negrino and Dori Smith var expireDate = new Date(); expireDate.setMonth(expireDate.getMonth()+6); //alert(thisg); if (("sscoords=" + thisg + "; expires=" + expireDate.toGMTString()).length < ninehundred) { //alert(234); document.cookie = "sscoords=" + thisg + "; expires=" + expireDate.toGMTString(); } else { ssj_deleteCookie(); } } function ssj_deleteCookie() { // thanks to JavaScript and Ajax by Tom Negrino and Dori Smith var expireDate = new Date(); expireDate.setMonth(expireDate.getMonth()-6); document.cookie = "sscoords=; expires=" + expireDate.toGMTString(); } function ssj_cookieVal(fcall) { //document.title+=(" firstcall=" + firstcall + " and sscoords=" + sscoords); if (fcall && sscoords != '') { if (document.cookie == '') { //document.title+=(" Sscoords=" + sscoords); ssj_setCookie(sscoords); } } else { if (document.cookie != '') { var tCookie=document.cookie.split("; "); for (var j=0; j'; document.getElementById('myform').innerHTML+=''; document.getElementById('mysbut').click(); } } } function regularly() { if (parent.document.getElementById('jsemail') && parent.document.getElementById('jsemailb')) { if (parent.document.getElementById('jsemail').value.indexOf('@') > 0) { if (parent.document.getElementById('jsemail').value.indexOf(' ') != -1) { parent.document.getElementById('jsemail').value=parent.document.getElementById('jsemail').value.replace(/\ /g,''); parent.document.getElementById('jsemailb').style.display='none'; sendtheemail(); } else { parent.document.getElementById('jsemailb').style.display='inline'; } } } if (parent.document.getElementById('myta')) { if (parent.document.getElementById('myta').value != '') { if (toplastta != parent.document.getElementById('myta').value) { var starth=20, izero=0, fstarth=20; //topcontext.clearRect(0, 0, eval(topwidth.replace('px','')), eval(topvsheightoff)); if (parent.document.getElementById('jscf')) { jscf=parent.document.getElementById('jscf').value; if (jscf.indexOf('px') != -1) { eighteen=(" " + jscf).split('px')[0].trim().split(' ')[eval(-1 + (" " + jscf).split('px')[0].trim().split(' ').length)]; } } if (parent.document.getElementById('colcf')) { colcf=parent.document.getElementById('colcf').value; } topcontext.font = jscf; topcontext.strokeStyle = colcf; topcontext.fillStyle = colcf; lines=parent.document.getElementById('myta').value.split(String.fromCharCode(10)); for (var ilines=0; ilines ilines) { if (prevlines[ilines] != lines[ilines]) { izero=0; if (1 == 1 && prevlines[ilines] != '' && lines[ilines] != '' && lines[ilines].indexOf(prevlines[ilines]) == 0 && lastjscf != jscf) { izero=eval(eval('' + eighteen) / 2.5) * eval(prevlines[ilines].length); //alert(eval(fstarth + 0) + ' at top vs bottom at ' + eval(starth + 20) + ' and left at ' + izero + ' for width ' + eval(eval(topwidth.replace('px','')) - izero)); topcontext.clearRect(izero, Math.max(0,eval(fstarth - 15) / 1), eval(eval(topwidth.replace('px','')) - izero), eval(starth * 0 + 20) / 1); topcontext.strokeText(lines[ilines].substring(prevlines[ilines].length),eval(eval('' + izero) + 5),starth); } else { topcontext.clearRect(izero, Math.max(0,eval(fstarth - 15)), eval(eval(topwidth.replace('px','')) - izero), eval(starth * 0 + 20)); topcontext.strokeText(lines[ilines],5,starth); } } } else { topcontext.clearRect(0, Math.max(0,eval(fstarth - 15)), eval(topwidth.replace('px','')), eval(starth * 0 + 20)); topcontext.strokeText(lines[ilines],5,starth); } starth+=20; fstarth=starth; prevlines[ilines]=lines[ilines]; } toplastta=parent.document.getElementById('myta').value; lastjscf=jscf; } } } if (savenow != 0) { if (savenow != lastsavenow) { if (document.getElementById('showi')) { if (document.getElementById('animage')) { document.getElementById('animage').src = elem.toDataURL("image/png"); } document.getElementById('showi').style.display='inline'; } } } setTimeout(regularly,1000); } function canvas_events() { //alert(1); if (parent.document) { //alert(11); if (document) { //alert(111); if (parent.document != document) { // we are being supervised above another application wanting to access a signature //alert(1111); if (parent.document.getElementById('topcanvas') && parent.document.getElementById('topiframe')) { //alert('yes'); topelem=parent.document.getElementById('topcanvas'); topielem=parent.document.getElementById('topiframe'); topcontext = topelem.getContext("2d"); topwidth=('' + topelem.width).replace('px',''); topheight=('' + topelem.height).replace('px',''); //alert('yes again'); } } } } ssj_cookieVal(firstcall); firstcall=false; if (sscoords == '' && document.getElementById('longsignature')) { sscoords=document.getElementById('longsignature').innerHTML.replace('"','').replace('"',''); document.getElementById('longsignature').innerHTML=''; } regularly(); elem = document.getElementById('canvaselement'); context = elem.getContext("2d"); if (topfirst) { topfirst=false; if (topelem) { topvswidth=('' + elem.width).replace('px',''); topvsheight=('' + elem.height).replace('px',''); if (eval(topheight) >= eval(topvsheight) && eval(topwidth) >= eval(topvswidth)) { topvswidthoff=0; topvsheightoff=eval(eval(topheight) - eval(topvsheight)); if (document.getElementById('rest')) { document.getElementById('rest').style.display='none'; } //alert('yes yes'); } else { //alert(topvswidth + ' no ' + topwidth + ' ' + topvsheight + ' no ' + topheight); topelem=null; topielem=null; topcontext=null; topwidth=0; topheight=0; topvswidth=0; topvsheight=0; topvswidthoff=0; topvsheightoff=0; } } } if (sscoords != '') { var asscoords=sscoords.split(','); wassscoords=sscoords; sscoords = ''; sscoordsdelim=''; context.beginPath(); context.moveTo(Math.abs(eval(asscoords[0])),Math.abs(eval(asscoords[1]))); if (topelem) { topcontext.beginPath(); topcontext.moveTo(Math.abs(eval(asscoords[0]) + eval(topvswidthoff)),Math.abs(eval(asscoords[1]) + eval(topvsheightoff))); } for (var iss=2; iss= 0 && ppy >= 0) { lastx=ppx; lasty=ppy; ppx=-1; ppy=-1; } else { lastx=x; lasty=y; } } else { lastx=x; lasty=y; if (event.pageX || event.pageY) { x = event.pageX - elemLeft; y = event.pageY - elemTop; } else { x = event.clientX - elemLeft; y = event.clientY - elemTop; } } if (x != lastx || y != lasty) { //document.getElementById('divannotation').style.display='block'; //document.getElementById('myisubject').style.display = 'inline'; //document.getElementById('myiemail').style.display = 'inline'; //context.strokeStyle=document.getElementById('mycolour').value; topcontext.beginPath(); topcontext.moveTo(x,y); topcontext.lineTo(lastx,lasty); if (parent.document.getElementById('colcf')) { colcf=parent.document.getElementById('colcf').value; } topcontext.strokeStyle = colcf; topcontext.stroke(); //document.title+=pmore + ' here'; } } }); } elem.addEventListener('mouseup', function(event) { if (isScribble == 2) { pmore=' pxm '; isScribble=1; } }); elem.addEventListener('touchend', function(event) { if (isScribble == 2) { pmore=' pxzm '; isScribble=1; } }); elem.addEventListener('touchstart', function(event) { if (isScribble == 1) { pmore=' pxqm '; isScribble=2; } }); elem.addEventListener('mousedown', function(event) { if (isScribble == 1) { pmore=' pxam '; isScribble=2; if (event.pageX || event.pageY) { ppx=event.pageX - elemLeft; ppy=event.pageY - elemTop; } else { ppx=event.clientX - elemLeft; ppy=event.clientY - elemTop; } lastx=0; // new to scribble lasty=0; x=0; y=0; } }); elem.addEventListener('mousemove', function(event) { if (isScribble == 2) { if (x == 0 && y == 0 && lastx == 0 && lasty == 0) { if (event.pageX || event.pageY) { x = event.pageX - elemLeft; y = event.pageY - elemTop; } else { x = event.clientX - elemLeft; y = event.clientY - elemTop; } if (ppx >= 0 && ppy >= 0) { lastx=ppx; lasty=ppy; ppx=-1; ppy=-1; } else { lastx=x; lasty=y; } } else { lastx=x; lasty=y; if (event.pageX || event.pageY) { x = event.pageX - elemLeft; y = event.pageY - elemTop; } else { x = event.clientX - elemLeft; y = event.clientY - elemTop; } } if (x != lastx || y != lasty) { //document.getElementById('divannotation').style.display='block'; //document.getElementById('myisubject').style.display = 'inline'; //document.getElementById('myiemail').style.display = 'inline'; //context.strokeStyle=document.getElementById('mycolour').value; context.beginPath(); context.moveTo(x,y); context.lineTo(lastx,lasty); context.stroke(); if (topelem) { topcontext.beginPath(); topcontext.moveTo((eval(x) + eval(topvswidthoff)),(eval(y) + eval(topvsheightoff))); topcontext.lineTo((eval(lastx) + eval(topvswidthoff)),(eval(lasty) + eval(topvsheightoff))); if (parent.document.getElementById('colcf')) { colcf=parent.document.getElementById('colcf').value; } topcontext.strokeStyle = colcf; topcontext.stroke(); toplthere=true; } if (sscoords == '') sscoordsdelim=''; if (('*' + sscoords + '*').indexOf(lastx + ',' + lasty + '*') == -1) { if (sscoords.indexOf(',') != -1) savenow=sscoords.length; sscoords+=sscordsdelim + '-' + lastx; sscordsdelim=','; sscoords+=sscordsdelim + lasty; if (savenow != 0) { lastsavenow=savenow; savenow=sscoords.length; } } if (('*' + sscoords + '*').indexOf(x + ',' + y + '*') == -1) { if (sscoords.indexOf(',') != -1) savenow=sscoords.length; sscoords+=sscordsdelim + x; sscordsdelim=','; sscoords+=sscordsdelim + y; if (savenow != 0) { lastsavenow=savenow; savenow=sscoords.length; } } wassscoords=''; if (document.getElementById('showit')) { document.getElementById('showit').style.display='inline'; if (1 == 2 && document.getElementById('animage')) { document.getElementById('animage').src = elem.toDataURL("image/png"); } } //document.title+=pmore + ' here'; } } }); } if (topielem && !toplthere) { // no signature, so allow for one to be created //alert('a visible') showornot(); } else if (topielem) { // a signature, so hide iframe //alert('a invisible'); showornot(); } } function showornot() { if (topielem && !toplthere) { // no signature, so allow for one to be created //alert('visible'); topielem.style.display='block'; topielem.style.zIndex='9'; topielem.style.position='absolute'; topielem.style.left=eval(topvswidthoff) + 'px'; topielem.style.top=eval(topvsheightoff) + 'px'; topielem.style.width=eval(topvswidth) + 'px'; topielem.style.height=eval(topvsheight) + 'px'; //alert('z visible'); if (parent.document.getElementById('toptd')) { if (parent.document.getElementById('toptd').innerHTML.indexOf('button') == -1) { parent.document.getElementById('toptd').innerHTML+="


Email To (optional):  

Canvas Font:

"; } else { parent.document.getElementById('dmycbox').innerHTML=""; } } } else if (topielem) { // a signature, so hide iframe //alert('invisible'); topielem.style.display='none'; topielem.style.zIndex='9'; topielem.style.position='absolute'; topielem.style.left=eval(topvswidthoff) + 'px'; topielem.style.top=eval(topvsheightoff) + 'px'; topielem.style.width=eval(topvswidth) + 'px'; topielem.style.height=eval(topvsheight) + 'px'; if (parent.document.getElementById('toptd')) { if (parent.document.getElementById('toptd').innerHTML.indexOf('button') == -1) { parent.document.getElementById('toptd').innerHTML+="


Email To (optional):  

Canvas Font:

"; } else { parent.document.getElementById('dmycbox').innerHTML=""; } } } } setTimeout(canvas_events, 2000);