home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 2004 August / DPPCPRO0804.ISO / Aug / Survey / page.js < prev    next >
Encoding:
Text File  |  2004-05-20  |  13.0 KB  |  528 lines

  1. var randomiser=new Array();
  2. var progressStyle=1;
  3.  
  4. function disablebuttons(){
  5.     document.survey.bprev.disabled=true;
  6.     document.survey.bnext.disabled=true;
  7. }
  8.  
  9. var sep='|' //unescape("%09")
  10.  
  11. function doSubmitHere(){
  12.     document.survey.bnext.disabled=true;
  13.     //document.survey.submit();
  14.     arrj=parent.xanswers.ranswers.join(sep);
  15.     parent.xanswers.document.answersform.subanswers.value=unescape(arrj);
  16.     MM_showhide('submitting','','hide');
  17.     setTimeout('time()',2000);
  18.     MM_showhide('thanks','','show');
  19.     parent.xanswers.document.answersform.submit();
  20. }
  21.  
  22. function setprogress(inpage){
  23.     /*
  24.     xc=document.survey.c.value;
  25.     var ret=setTimeout('showprogress(xc)',100);
  26.     }
  27.  
  28.     function showprogress(inpage){
  29.     */
  30. var ptext=MM_findObj('progresstext');
  31. var plabel=MM_findObj('progresslabel');
  32.     var xpages=parent.xnav.document.navform.pages.value;
  33.     pagestogo=xpages-inpage;
  34.     switch (progressStyle){
  35.         case 0: //none
  36.             //document.progress.width=0;
  37.             //document.progressx.width=0;
  38.             //ptext.innerHTML='';
  39.             //plabel.innerHTML=''
  40.             break;
  41.         case 1: //progress bar
  42.             document.progress.width=12*(inpage);
  43.             document.progressx.width=12*(pagestogo);
  44.             switch(inpage){
  45.                 case 1:
  46.                     ptext.innerHTML=' Survey 0% complete';
  47.                     break;
  48.                 case xpages:
  49.                     ptext.innerHTML='  Survey 100% complete';
  50.                     break;
  51.                 default:
  52.                     ptext.innerHTML=' Survey '+Math.floor(100*inpage/xpages)+'% complete';
  53.             }
  54.             //plabel.innerHTML='PROGRESS '
  55.             plabel.innerHTML=''
  56.             break;
  57.         case 2: //text
  58.             //document.progress.width=0;
  59.             //document.progressx.width=0;
  60.             ptext.innerHTML='Page '+inpage+' of ' + xpages;
  61.             plabel.innerHTML=''
  62.             break;
  63.         }
  64. }
  65.  
  66. function XXcheckpageOK(){
  67. window.status='Survey system by Demgraphix';
  68. var checkOK=true;
  69. startfile=self.location.href.lastIndexOf('/');
  70. thispage=(self.location.href.slice(startfile+5,-5))*1
  71. thispagecondition=parent.xanswers.jspagearray[thispage+1];
  72. thisreferrer=parent.xanswers.document.answersform.referrer.value;
  73. if(thispagecondition!='-'){
  74.     checkOK=false;
  75.     thispcq=thispagecondition.split('=')[0]
  76.     thispca=thispagecondition.split('=')[1]
  77.     thispcansweroptionsarray=thispca.split(',');
  78.     a=parent.xanswers.getanswer(thispcq);
  79.     for(i=0;i<thispcansweroptionsarray.length;i++){
  80.         if(parseInt(thispcansweroptionsarray[i])==parseInt(a)){checkOK=true}
  81.         }
  82.     }
  83. if (checkOK==true ){refill()}
  84. else {
  85.     //go to referring page
  86.     if(thisreferrer*1<thispage*1){newpage=thispage+1}else{newpage=thispage-1}
  87.     document.location.href=self.location.href.replace('page'+thispage+'.html','page'+newpage+'.html');
  88.     }
  89. }
  90.  
  91. function MM_showhide() { //v3.0
  92.   var i,p,v,obj,args=MM_showhide.arguments;
  93.   for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
  94.     if (obj.style) { obj=obj.style; v=(v=='show')?'':(v='hide')?'none':v; }
  95.     obj.display=v; }
  96. }
  97.  
  98. function xdoselect(intarget){
  99. var args=xdoselect.arguments;
  100. if (args[1].length==0){return;}
  101. source=MM_findObj(args[0]);
  102. var chkarray=new Array(source.length);
  103. thisqsarray=args[1].split('|');
  104. var hold=new Array(thisqsarray.length)
  105. //initialise as hide
  106. for(i=0;i<thisqsarray.length;i++){
  107.     hold[i]='-';
  108.     testarray=args[i+2].split('|');
  109.     for(j=0;j<testarray.length;j++){
  110.         if(source.options[testarray[j]*1+1].selected==true){
  111.             hold[i]='+';
  112.             }
  113.         }
  114.     target='q'+thisqsarray[i]
  115.     switch (hold[i]){
  116.         case '+':
  117.             MM_showhide(target,'','show');
  118.             break;
  119.         case '-':
  120.             MM_showhide(target,'','hide');
  121.             break;
  122.         }
  123.     }
  124. }
  125.  
  126. function xdo(intarget){
  127. var args=xdo.arguments;
  128. if (args[1].length==0){return;}
  129. source=MM_findObj(args[0]);
  130. var chkarray=new Array(source.length);
  131. thisqsarray=args[1].split('|');
  132. var hold=new Array(thisqsarray.length)
  133. //initialise as hide
  134. for(i=0;i<thisqsarray.length;i++){
  135.     hold[i]='-';
  136.     testarray=args[i+2].split('|');
  137.     for(j=0;j<testarray.length;j++){
  138.         if(source[testarray[j]].checked==true){
  139.             hold[i]='+';
  140.             }
  141.         }
  142.     target='q'+thisqsarray[i]
  143.     switch (hold[i]){
  144.         case '+':
  145.             MM_showhide(target,'','show');
  146.             break;
  147.         case '-':
  148.             MM_showhide(target,'','hide');
  149.             break;
  150.         }
  151.     }
  152. }
  153.  
  154. function doDropDownMatrix(inq,invalue){
  155.     var qhold='000'+inq.name.substr(3,7);
  156.     var xrow=inq.name.substr(0,2);
  157.     var tObj=MM_findObj(qhold);
  158.     var ahold=tObj.value+'';
  159.     var xfound;
  160.     var xmode=inq.checked;
  161.     if(ahold==''){xfound=-1}
  162.     else {
  163.         rxs=''+xrow + '[0-9],';
  164.         rx=new RegExp(rxs,"gi");
  165.         ahold=ahold.replace(rx,"")
  166.         }
  167.     ahold+=inq.value+',';
  168.     tObj.value=ahold;
  169. }
  170.  
  171. function doRadioMatrix(inq,invalue){
  172.     var qhold='000'+inq.name.substr(3,7);
  173.     var xrow=inq.name.substr(0,2);
  174.     var tObj=MM_findObj(qhold);
  175.     var ahold=tObj.value+'';
  176.     var xfound;
  177.     var xmode=inq.checked;
  178.     if(ahold==''){xfound=-1}
  179.     else {
  180.         rxs=''+xrow + '[0-9],';
  181.         rx=new RegExp(rxs,"gi");
  182.         ahold=ahold.replace(rx,"")
  183.         }
  184.     ahold+=inq.value+',';
  185.     tObj.value=ahold;
  186. }
  187.  
  188. function doCheckboxMatrix(inq,invalue){
  189.     var qhold='000'+inq.name.substr(3,7);
  190.     var tObj=MM_findObj(qhold);
  191.     var ahold=tObj.value+'';
  192.     var xfound;
  193.     var xmode=inq.checked;
  194.     if(ahold==''){xfound=-1}
  195.     else {xfound=ahold.search(''+invalue);}
  196.     switch(xmode){
  197.         case true:
  198.             if(xfound==-1){tObj.value+=invalue+',';}
  199.             break;
  200.         case false:
  201.             ahold=ahold.substr(0,xfound) + ahold.substr(xfound+3);
  202.             re=/,,/g
  203.             tObj.value=ahold.replace(re,',');
  204.             break;
  205.         }
  206. }
  207.  
  208. function set_cookie(inq,invalue){
  209. today=new Date();
  210. expires=new Date(today.getTime()+60*24*60*60);
  211. document.cookie=inq+"="+invalue +';path=/;expires='+expires;
  212. }
  213.  
  214. function get_cookie(inq) {
  215. var search = inq + "=";
  216. var returnvalue = "";
  217. //return;
  218. if (document.cookie.length > 0) {
  219.     offset = document.cookie.indexOf(search);
  220.     if (offset != -1) {
  221.         offset += search.length
  222.         end = document.cookie.indexOf(";", offset);
  223.         if (end == -1) end = document.cookie.length;
  224.         returnvalue=unescape(document.cookie.substring(offset, end));
  225.         }
  226.     }
  227.     return returnvalue;
  228. }
  229.  
  230. function fillrand(infield){
  231.     thisfield=MM_findObj(infield);
  232.     //thisfieldint=eval(infield.slice(0,6));
  233.     thisfieldint=(infield.slice(0,6)*1);
  234.     if (get_cookie(infield).length==0){
  235.         thisoptsa=randomiser[thisfieldint].split('|');
  236.         thisoptsl=thisoptsa.length;
  237.         thisrand=Math.floor(Math.random()*thisoptsl,0);
  238.         thischoice=thisoptsa[thisrand];
  239.         }
  240.     else thischoice=get_cookie(infield);
  241.     thisfield[0].value=thischoice;
  242.     thisfield[1].value='-'+thischoice;
  243.     thistextfield='f'+infield.slice(0,7)+ 't';
  244.     thistext=MM_findObj(thistextfield);
  245.     thistext.innerHTML=thischoice;
  246.     set_cookie(infield,thischoice);
  247. }
  248.  
  249. function pad(inq){
  250.     switch((''+inq).length){
  251.         case 1:
  252.             return '00000'+inq
  253.             break
  254.         case 2:
  255.             return '0000'+inq
  256.             break
  257.         case 3:
  258.             return '000'+inq
  259.             break
  260.         case 4:
  261.             return '00'+inq
  262.             break
  263.         case 5:
  264.             return '0'+inq
  265.             break
  266.         case 6:
  267.             return inq
  268.             break
  269.         }
  270. }
  271. function showerrs(instring){
  272. var errstring='';
  273. errarray=(instring.split('|')[0]).split(',');
  274. for(i=1;i<errarray.length-1;i++){
  275.     switch(errarray[i].charAt(6)){
  276.         case 'X':
  277.             errstring='COMPULSORY QUESTION'
  278.             break;
  279.         case 'P':
  280.         case 'p':
  281.             errstring='INVALID POSTCODE'
  282.             break;
  283.         case 'N':
  284.         case 'n':
  285.             errstring='NUMBER REQUIRED'
  286.             break;
  287.         case 'E':
  288.         case 'e':
  289.             errstring='INVALID EMAIL ADDRESS'
  290.             break;
  291.         case 'W':
  292.         case 'w':
  293.             errstring='INVALID WEB ADDRESS'
  294.             break;
  295.         case 'Z':
  296.         case 'z':
  297.             errstring='INVALID ZIP CODE'
  298.             break;
  299.         }
  300.     errfield=errarray[i].slice(0,7)+'z';
  301.     errID=MM_findObj(errfield);
  302.     //errID=document.getElementById(errfield);
  303.     errID.innerHTML=' '+ errstring;
  304.     }
  305. self.location+=(instring.split('|')[1]);
  306. }
  307.  
  308. function refill(inpage){
  309. //setTimeout("time()",500);
  310. var pq;
  311. var a='';
  312. pq=document.getElementById('pageqs'+inpage).value;
  313.  
  314. if (pq.length==0) return;
  315. qq=pq.split("|");
  316. if (qq.length>0){
  317.     for (var i=0; i < qq.length-1; i++) {
  318.         if(qq[i].substr(7,1)=='z'){
  319.             fillrand(qq[i]);
  320.             }
  321.         }
  322.     for (var i=0; i < qq.length-1; i++) {
  323.         a='';
  324.         q=(qq[i].substr(0,6))*1;
  325.         v=qq[i].substr(6,1);
  326.         t=qq[i].substr(7,1);
  327.         r=setTimeout("time()",100);
  328.         a=parent.xanswers.getanswer(q);
  329.         aID=MM_findObj(qq[i]);
  330.         if ((a!='+')&&(a.length>0)) {
  331.             switch (t){
  332.                 case 'z':
  333.                     if (a.length!=0){
  334.                         if(a=='0'){aID[1].checked=true;}
  335.                         else     aID[0].checked=true;
  336.                     }
  337.                     break;
  338.                 case 'x':
  339.                 case 'y':
  340.                     a=unescape(a);
  341.                     aID.value=a;
  342.                     var xsource=qq[i];
  343.                     var ca=a.split(',');
  344.                     for(var j=0;j<ca.length-1;j++){
  345.                         var xrow=ca[j].substr(0,2);
  346.                         var xfield=''+xrow+xsource.substr(2);
  347.                         var xval=ca[j].substr(2,1);
  348.                         xObj=MM_findObj(xfield);
  349.                         xObj[xval].checked=true;
  350.                         }
  351.                     break;
  352.                 case 'w':
  353.                     a=unescape(a);
  354.                     aID.value=a;
  355.                     var xsource=qq[i];
  356.                     var ca=a.split(',');
  357.                     for(var j=0;j<ca.length-1;j++){
  358.                         var xrow=ca[j].substr(0,2);
  359.                         var xfield=''+xrow+xsource.substr(2);
  360.                         var xval=ca[j].substr(2,1);
  361.                         xObj=MM_findObj(xfield);
  362.                         xObj.selectedIndex=1+(xval*1);
  363.                         }
  364.                     break;
  365.                 case 'r':
  366.                     //aID[a].checked=true;
  367.                     aID[a].click();
  368.                     break;
  369.                 case 'c':
  370.                     ca=a.split(',');
  371.                     for(j=0;j<ca.length;j++){
  372.                         //aID[ca[j]*1].checked=true;
  373.                         aID[ca[j]*1].click();
  374.                         }
  375.                     break;
  376.                 case 'd':
  377.                     aID.selectedIndex=1+(a*1);
  378.                     break;
  379.                 case 'm':
  380.                     ca=a.split(',');
  381.                     for(j=0;j<ca.length-1;j++){
  382.                         aID[(ca[j]*1)+1].options.selected=true;
  383.                         }
  384.                         break;
  385.                 case 't':
  386.                     aID.value=unescape(a);
  387.                     break;
  388.                 case 'k':
  389.                     aID.value=unescape(a);
  390.                     var ka=aID.value.split(',');
  391.                     khold=new Array();
  392.                     ksource=MM_findObj(qq[i].substr(0,7)+'_');
  393.                     for(j=0;j<ksource.length;j++){
  394.                         khold[j]=escape(ksource.options[j].text);
  395.                         }
  396.                     var above=true;
  397.                     ksource.length=0;
  398.                     for(j=0;j<ka.length;j++){
  399.                         thisone=1+1*ka[j];
  400.                         thistext=unescape(khold[thisone]);
  401.                         if(thistext.substr(0,4)=='===='){above=false;}
  402.                         if(above==true){thistext=eval(j+1) +'.'+thistext;}
  403.                        var optionName = new Option(thistext, ka[j])
  404.                        var length = ksource.length;
  405.                        ksource.options[length] = optionName;
  406.                         }
  407.                     break;
  408.                 }
  409.             }
  410.         }
  411.     }
  412. }
  413.  
  414. function time(){
  415. var a,b;
  416. a=b;
  417. }
  418.  
  419. function MM_findObj(n, d) { //v4.0
  420.   var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
  421.     d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  422.   if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  423.   for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  424.   if(!x && document.getElementById) x=document.getElementById(n); return x;
  425. }
  426.  
  427. function formatnumber(inint){
  428.     strinint=''+inint
  429.     switch (strinint.length){
  430.         case 0:
  431.             return inint+'.';
  432.             break;
  433.         case 1:
  434.             return '_'+inint+'.';
  435.             break;
  436.         case 2:
  437.             return inint+'.';
  438.             break;
  439.         default:
  440.             return inint;
  441.     }
  442. }
  443.  
  444. function moveup(that) {
  445. thisobj=MM_findObj(that);
  446. var sel=thisobj.selectedIndex;
  447. if (sel<0){alert('No option selected');return;}
  448. if (sel>0) {
  449.     var hold=thisobj.options[sel].value;
  450.     var holdt=thisobj.options[sel].text;
  451.     var hold2=thisobj.options[sel-1].value;
  452.     var hold2t=thisobj.options[sel-1].text;
  453.     thisobj.options[sel].value=hold2;
  454.     thisobj.options[sel-1].value=hold;
  455.     thisobj.options[sel].text=hold2t;
  456.     thisobj.options[sel-1].text=holdt;
  457.     thisobj.selectedIndex=sel-1;
  458.     var h=that.substr(0,7)+'k';
  459.     var s='';
  460.     hobj=MM_findObj(h);
  461.     for(i=0;i<thisobj.length;i++){
  462.         s+=thisobj[i].value+',';
  463.         }
  464.     hobj.value=s;
  465.     renumber(that)
  466.     }
  467.     else alert('Choice at top of list already');
  468.  
  469. }
  470.  
  471. function movedown(that) {
  472. thisobj=MM_findObj(that);
  473. var sel=thisobj.selectedIndex;
  474. if (sel<0){alert('No option selected');return;}
  475. if (sel<thisobj.options.length-1) {
  476.     var hold=thisobj.options[sel].value;
  477.     var hold2=thisobj.options[sel+1].value;
  478.     var holdt=thisobj.options[sel].text;
  479.     var hold2t=thisobj.options[sel+1].text;
  480.     thisobj.options[sel].value=hold2;
  481.     thisobj.options[sel+1].value=hold;
  482.     thisobj.options[sel].text=hold2t;
  483.     thisobj.options[sel+1].text=holdt;
  484.     thisobj.selectedIndex=sel+1;
  485.     var h=that.substr(0,7)+'k';
  486.     var s='';
  487.     hobj=MM_findObj(h);
  488.     for(i=0;i<thisobj.length;i++){
  489.         s+=thisobj[i].value+',';
  490.         }
  491.     hobj.value=s;
  492.     renumber(that)
  493.     }
  494.         else alert('Choice at end of list already');
  495. }
  496.  
  497. function renumber(that){
  498. thisobj=MM_findObj(that);
  499. hold=thisobj.selectedIndex;
  500. diff=false;
  501.     for(i=0;i<thisobj.options.length;i++){
  502.         s=''+thisobj.options[i].text;
  503.         //alert(s);
  504.         v=thisobj[i].value;
  505.         if (v=='-1'){diff=true}
  506.             else{
  507.                 if(s.substr(2,1)=='.'){s=s.slice(3)}
  508.                 if(diff==true){thisobj.options[i].text=s;
  509.                     }
  510.                     else {
  511.                     thisobj.options[i].text=formatnumber(i+1)+s;
  512.                     }
  513.                 }
  514.             }
  515. thisobj.selectedIndex=hold;
  516. }
  517.  
  518. function checktextarea(c){
  519.     var tmax=1400;
  520.     if(c.value.length>tmax){
  521.         c.value=c.value.slice(0, tmax);
  522.         document.getElementById(c.name+'counter').innerHTML='Maximum of 1400 characters used';
  523.         //alert('Maximum of 500 words allowed');
  524.     }
  525.     else document.getElementById(c.name+'counter').innerHTML=c.value.length + ' of 1400 characters used';
  526. }
  527.  
  528.