
//This script is the copyright of TJD Patent Services LLP, No copying is authorised for any use without written permission.
//The only exception is the use of the script merely by virtue of browsing webpages controlled by TJD Patent Services, solely 
//for the good faith purposes of using the respective webpage as a reference tool.


English=0;
Japanese=0;
French=0;
German=0;
Spanish=0;
Indian=0;
Chinese=0;
other=0;

lang=new Array();
lang["E"]=0;
lang["J"]=0;
lang["F"]=0;
lang["G"]=0;
lang["S"]=0;
lang["I"]=0;
lang["C"]=0;
lang["O"]=0;

generaldifficulty=1;
fielddifficulty=1;
draftingdifficulty=1;
agencylevel=3;
patentpages=16;
eulanguages=4;
startmonth=0;
priorityfilingentry=0;
no=2093520355;
is=0;

examine="S";
renewal="H";
translate="S";
legalissues=2;
symbol="£";
value=1;
fee=50;
entitysize="yes";
discount="no";
pc="N226SU";

iterritory=new Array();
iact=new Array();
icost=new Array();
iofees=new Array();
iafees=new Array();
imonth=new Array();
iyear=new Array();
irno= new Array();
ilanguage= new Array();
datesorter=new Array();

rn=new Array();
rn["EU"]=new Array('0','0','257','274','291','483','500','517','655','689','689','689','689','689','689','689','689','689','689','689');
rn["US"]=new Array('','','496','','','','1267','','','','2096','','','','','','','','','');
rn["JP"]=new Array('25','25','25','81','81','81','254','254','254','812','812','812','812','812','812','812','812','812','812','812');
rn["UK"]=new Array('','','','','50','70','90','110','130','150','170','190','210','130','150','170','300','330','360','400');
rn["CA"]=new Array('','100','100','100','200','200','200','200','200','250','250','250','250','250','450','450','450','450','450','');
rn["IN"]=new Array('40','40','40','40','40','40','56','56','56','56','125','125','125','125','125','187','187','187','187','187');
rn["CN"]=new Array('60','60','60','80','80','80','133','133','133','267','267','267','400','400','400','533','533','533','533','533');
rn["D"]=new Array('','44','44','44','69','79','89','99','109','130','140','150','160','170','225','235','249','264','279','279');
rn["U"]=new Array('25','25','25','30','30','30','47','47','47','80','98','98','131','131','131','180','180','180','180','180');

gc=new Array();
gc["EU"]=1.2;gc["PCT"]=1.2;gc["US"]=1.4;gc["JP"]=1.8;gc["UK"]=1;gc["CA"]=1;gc["DE"]=1;gc["FR"]=0.9;gc["IT"]=1;gc["IN"]=0.4;gc["CN"]=0.3;gc["BR"]=0.6;gc["D"]=1;gc["U"]=0.5;
fc=new Array();
fc["EU"]=2;fc["PCT"]=3;fc["US"]=1.6;fc["JP"]=2;fc["UK"]=1;fc["CA"]=1;fc["DE"]=1;fc["FR"]=0.9;fc["IT"]=1;fc["IN"]=0.2;fc["CN"]=0.1;fc["BR"]=0.3;fc["D"]=1;fc["U"]=0.3;
ff=new Array();
ff["EU"]=61;ff["PCT"]=628;ff["US"]=165;ff["JP"]=81;ff["UK"]=0;ff["CA"]=176;ff["DE"]=80;ff["FR"]=80;ff["IT"]=80;ff["IN"]=37;ff["CN"]=63;ff["BR"]=50;ff["D"]=65;ff["U"]=25;
sf=new Array();
sf["EU"]=446;sf["PCT"]=1078;sf["US"]=276;sf["JP"]=0;sf["UK"]=130;sf["CA"]=0;sf["DE"]=130;sf["FR"]=80;sf["IT"]=130;sf["IN"]=0;sf["CN"]=0;sf["BR"]=80;sf["D"]=65;sf["U"]=20;
ef=new Array();
ef["EU"]=966;ef["PCT"]=1122;ef["US"]=110;ef["JP"]=1084;ef["UK"]=70;ef["CA"]=146;ef["DE"]=100;ef["FR"]=100;ef["IT"]=100;ef["IN"]=63;ef["CN"]=167;ef["BR"]=100;ef["D"]=145;ef["U"]=57;
dr=new Array();
dr["EU"]=1.2;dr["PCT"]=1.2;dr["US"]=1.2;dr["JP"]=1.4;dr["UK"]=1;dr["CA"]=1;dr["DE"]=1;dr["FR"]=1;dr["IT"]=1;dr["IN"]=0.5;dr["CN"]=0.5;dr["BR"]=0.6;dr["D"]=1;dr["U"]=0.6;
tr=new Array(); //per page - per language
tr["EU"]=30;tr["PCT"]=30;tr["US"]=30;tr["JP"]=100;tr["UK"]=30;tr["CA"]=30;tr["DE"]=30;tr["FR"]=30;tr["IT"]=30;tr["IN"]=15;tr["CN"]=15;tr["BR"]=20;tr["D"]=30;tr["U"]=15;

function of(n){
if( iact[n]=="patent filing") iofees[n]=ff[iterritory[n]];
if( iact[n]=="requesting search") iofees[n]=sf[iterritory[n]];
if( iact[n]=="requesting examination") iofees[n]=ef[iterritory[n]];
if( iact[n]=="examination response") iofees[n]=0;
if( iact[n]=="renewal payment") iofees[n]=rn[iterritory[n]][irno[n]-1]; //+1
if( iterritory[n]=="IN"&&entitysize=="yes") iofees[n]*=(1.0/2.5);
if( iterritory[n]=="US"&&entitysize=="yes") iofees[n]*=(1.0/2.0);
if( iterritory[n]=="PCT"&&discount=="yes"&&iact[n]=="patent filing")iofees[n]*=(1.0/4.0);
if( iact[n]=="patent drafting") iofees[n]=0;
if( iact[n]=="arranging translations") iofees[n]=0;
if( iact[n]=="arranging EU translations") iofees[n]=0;
return(iofees[n]);
}

function af(n){
if( iact[n]=="patent drafting") iafees[n]=1000*dr[iterritory[n]]*draftingdifficulty*fielddifficulty*agencylevel;
if( iact[n]=="patent filing") iafees[n]=fc[iterritory[n]]*25*agencylevel;
if( iact[n]=="requesting search") iafees[n]=fc[iterritory[n]]*25*agencylevel;
if( iact[n]=="requesting examination") iafees[n]=fc[iterritory[n]]*25*agencylevel;
if( iact[n]=="arranging translations") iafees[n]=(tr[iterritory[n]]*patentpages)+25*agencylevel;
if( iact[n]=="arranging EU translations") iafees[n]=(tr[iterritory[n]]*patentpages*eulanguages)+25*agencylevel;
if( iact[n]=="examination response") iafees[n]=fc[iterritory[n]]*150*agencylevel;
if( iact[n]=="renewal payment") iafees[n]=fee; 
return(iafees[n]);
}

function modifyit(){
fielddifficulty=document.settings.field.value;
draftingdifficulty=1*document.settings.difficulty.value;
agencylevel=1*document.settings.level.value;
patentpages=1*document.settings.pages.value;
eulanguages=1*document.settings.languages.value;
legalissues=1*document.settings.problems.value;
symbol=document.settings.symbol.value;
value=1*document.settings.currencytothepound.value;
fee=document.settings.renewalfees.value;
renewal=document.settings.rens.value;
translate=document.settings.tras.value;
examine=document.settings.exas.value;
entitysize=document.settings.bigapplicant.value;
discount=document.settings.discount.value;
symbol=document.settings.symbol.value;
value=1*document.settings.currencytothepound.value;
document.getElementById('s0').innerHTML="";
if(((fee-fee)!=0)||fee<0){
   document.getElementById('s0').innerHTML="<b><font color='red'>Note: your renewal fee value must be a positive number (in Pounds) E.g. 50</b></font>";
   document.getElementById('s').innerHTML="";
   }
if(((value-value)!=0)||(value<=0)){
   document.getElementById('s0').innerHTML="<b><font color='red'>Note: your currency exchange rate value must be a number E.g. 1.60</b></font>";
   document.getElementById('s').innerHTML="";
   }
if((value-value==0)&&(fee-fee==0)&&fee>=0&&value>0&&value!=null)printit();
return(0);}

function deleteit(){
   if((zib=document.settings.etodelet.value)!="x") deli(zib);
   if(zib=="all")is=0;
   printit();
return(0);
}


function monthit(m){
if(m=="01"||m=="1")m="Jan";
if(m=="02"||m=="2")m="Feb";
if(m=="03"||m=="3")m="Mar";
if(m=="04"||m=="4")m="Apr";
if(m=="05"||m=="5")m="May";
if(m=="06"||m=="6")m="Jun";
if(m=="07"||m=="7")m="Jul";
if(m=="08"||m=="8")m="Aug";
if(m=="09"||m=="9")m="Sep";
if(m=="10"||m=="10")m="Oct";
if(m=="11"||m=="11")m="Nov";
if(m=="12"||m=="12")m="Dec";
return(m);}

function sortit(){
   temp=0;
   for(q=1;q<=is;q++){
      datesorter[q]=(100*iyear[q])+(imonth[q]*8);
      if( iact[q]=="patent drafting") datesorter[q]+=2;
      if( iact[q]=="patent filing") datesorter[q]+=3;
      if( iact[q]=="requesting search") datesorter[q]+=4;
      if( iact[q]=="requesting examination") datesorter[q]+=5;
      if( iact[q]=="arranging translations") datesorter[q]+=6;
      if( iact[q]=="examination response") datesorter[q]+=7;
      if( iact[q]=="renewal payment") datesorter[q]+=8;
      if( iterritory[q]=="EU")datesorter[q]+=0.01;
      if( iterritory[q]=="PCT")datesorter[q]+=0.02;
      if( iterritory[q]=="US")datesorter[q]+=0.03;
      if( iterritory[q]=="JP")datesorter[q]+=0.04;
      if( iterritory[q]=="UK")datesorter[q]+=0.05;
      if( iterritory[q]=="DE")datesorter[q]+=0.06;
      if( iterritory[q]=="FR")datesorter[q]+=0.07;
      if( iterritory[q]=="IT")datesorter[q]+=0.08;
      if( iterritory[q]=="IN")datesorter[q]+=0.09;
      if( iterritory[q]=="CN")datesorter[q]+=0.1;
      if( iterritory[q]=="BR")datesorter[q]+=0.11;
      if( iterritory[q]=="D")datesorter[q]+=0.12;
      if( iterritory[q]=="U")datesorter[q]+=0.13;
   }
   for(q=1;q<=is;q++){
      minpos=q;
      min=10000000000000;
      for(j=q+1;j<=is;j++){
         if(datesorter[j]<datesorter[q]&&datesorter[j]<min) {
            minpos=j;
            min=datesorter[j];
         }
      }
         temp=datesorter[minpos];
         datesorter[minpos]=datesorter[q];
         datesorter[q]=temp;
         temp=iact[minpos];
         iact[minpos]=iact[q];
         iact[q]=temp;
         temp=iterritory[minpos];
         iterritory[minpos]=iterritory[q];
         iterritory[q]=temp;
         temp=icost[minpos];
         icost[minpos]=icost[q];
         icost[q]=temp;
         temp=imonth[minpos];   
         imonth[minpos]=imonth[q];
         imonth[q]=temp;
         temp=iyear[minpos];   
         iyear[minpos]=iyear[q];
         iyear[q]=temp;
         temp=iafees[minpos];   
         iafees[minpos]=iafees[q];
         iafees[q]=temp;
         temp=iofees[minpos];   
         iofees[minpos]=iofees[q];
         iofees[q]=temp;
         temp=irno[minpos];   
         irno[minpos]=irno[q];
         irno[q]=temp;
         temp=ilanguage[minpos];   
         ilanguage[minpos]=ilanguage[q];
         ilanguage[q]=temp;
   }
return(0);
}

function printit(){ 
   document.getElementById('sa').innerHTML="<b><font  color='blue'>Items </b></font><br><br>";   
   document.getElementById('sb').innerHTML="<b><font  color='blue'> Fees, Tariffs </b></font><br><br>";   
   document.getElementById('sb2').innerHTML="<b><font  color='blue'> & Totals </b></font><br><br>";   
   document.getElementById('sc').innerHTML="<br><br>";   
   document.getElementById('s2').innerHTML="";
   document.getElementById('s3').innerHTML="";
   clearit();
   if(examine!="E")showexamine();
   if(renewal!="E")showrenewals();
   if(translate!="E")showtranslate();
   sortit();
   totalcost=0;
   x=0;
   y=0;
   p=0;
   yeartotal=0;
   for(o=1;o<=is;o++){
      if((iact[o]=='renewal payment'&&renewal=="H")||(iact[o]=='examination response'&&examine=="H")||(iact[o]=='arranging translations'&&translate=="H")) {
          totalcost+=(yeartotal+=((1*af(o))+(1*of(o))));
          if(iyear[1+o]!=iyear[o]){
            document.getElementById('s2').innerHTML+="<font size=-1><br>"+iyear[o]+": "+symbol+Math.floor(yeartotal*value)+" ("+symbol+Math.floor(totalcost *value)+")";
             yeartotal=0;
      }  }
      else {
         if((iact[o]!='renewal payment' && iact[o]!='examination response' && iact[o]!='arranging translations')||(renewal=="S" && iact[o]=='renewal payment')||(examine=="S" && iact[o]=='examination response')||(translate=="S" && iact[o]=='arranging translations')){

            if(iact[o]=='renewal payment')p=irno[o];
            else p="";   document.getElementById('sa').innerHTML+="#"+o+":";
            if(iact[o]=='renewal payment')document.getElementById('sa').innerHTML+="<font color='brown'>"+iterritory[o] + " renewal "+p+"</b></font><br>";
            if(iact[o]=='arranging translations'||iact[o]=='arranging EU translations')document.getElementById('sa').innerHTML+="<font color='orange'>"+iterritory[o] + " translation "+"</b></font><br>";
            if(iact[o]=='examination response')document.getElementById('sa').innerHTML+="<font color='blue'>"+iterritory[o] + " response "+"</b></font><br>";
            if(iact[o]=='requesting examination')document.getElementById('sa').innerHTML+=iterritory[o] + " examination "+"</b></font><br>";
            if(iact[o]=='requesting search')document.getElementById('sa').innerHTML+=iterritory[o] + " search "+"</b></font><br>";
            if(iact[o]=='patent drafting')document.getElementById('sa').innerHTML+=iterritory[o] + " drafting "+"</b></font><br>";
            if(iact[o]=='patent filing')document.getElementById('sa').innerHTML+="<font color='red'>"+iterritory[o] + " filing "+"</b></font><br>";

            document.getElementById('sb').innerHTML+="( "+symbol + Math.floor((x=of(o))*value) +", "+symbol + Math.floor((y=af(o))*value)+" )<br>";
            document.getElementById('sb2').innerHTML+=symbol+Math.floor(((x*=1)+(y*=1)) *value)+ "<br>";
            document.getElementById('sc').innerHTML+="  "+monthit(imonth[o])+" "+iyear[o]+"<br></font>";

            yeartotal+=((x*=1)+(y*=1));
            totalcost+=((x*=1)+(y*=1));
            if(iact[o]=='patent drafting')document.getElementById('s3').innerHTML+="<br><font size=-1>"+monthit(imonth[o])+" "+iyear[o]+": "+iterritory[o] + " drafting";
            if(iact[o]=='patent filing')document.getElementById('s3').innerHTML+="<br><font size=-1>"+monthit(imonth[o])+" "+iyear[o]+": "+iterritory[o] + " filing";
         }  
         if(iyear[1+o]!=iyear[o]){
document.getElementById('s2').innerHTML+="<font size=-1><br>"+iyear[o]+": "+symbol+Math.floor(yeartotal*value)+" ("+symbol+Math.floor(totalcost *value)+")";
yeartotal=0;
         }
  }  }
  document.getElementById('sa').innerHTML+=" <br>Total cost: "+symbol+Math.floor(totalcost*value);
  return(0);
}

function clearit(){
   for(v=1;v<=is;v++){
         if(iact[v]=="examination response"||iact[v]=="renewal payment"||iact[v]=="arranging translations"||iact[v]=="arranging EU translations"){
               deli(v);
               v--;
         }
   }
return(0);}

function showexamine(){
   for(b=1;b<=is;b++){
      if(iact[b]=="requesting examination"){
         is+=1;
         iterritory[is]=iterritory[b];
         iact[is]="examination response";
         imonth[is]=imonth[b];
         iyear[is]=1*(iyear[b]+1);
         if(legalissues==2||legalissues==3){
            is+=1;
            iterritory[is]=iterritory[b];
            iact[is]="examination response";
            imonth[is]=imonth[b];
            iyear[is]=1*(iyear[b]+2);
         }
         if(legalissues==3){
            is+=1;
            iterritory[is]=iterritory[b];
            iact[is]="examination response";
            imonth[is]=imonth[b];
            iyear[is]=1*(iyear[3]+3);
         }
      }
   }
return(0);
}

function showrenewals(){
   for(h=1;h<=is;h++){
      if(iact[h]=="patent filing"&&iterritory[h]!="PCT"){
         for(k=2;k<=20;k++){
            if(rn[iterritory[h]][k-2]!=null&&rn[iterritory[h]][k-2]!=0){
               is+=1;
               iact[is]="renewal payment";
               iterritory[is]=iterritory[h];
               imonth[is]=imonth[h];
               iyear[is]=1*((iyear[h]*1)+(k*1)-(1*1));
               irno[is]=k-1;
            }
         }
      }
   }
return(0);
}

function showtranslate(){
   lang["E"]=0;
   lang["J"]=0;
   lang["F"]=0;
   lang["G"]=0;
   lang["R"]=0;
   lang["S"]=0;
   lang["C"]=0;
   lang["I"]=0;
   for(r=1;r<=is;r++){
      if(iact[r]=="patent drafting"){
         if(ilanguage[r]=="E")lang["E"]=1;
         if(ilanguage[r]=="J")lang["J"]=1;
         if(ilanguage[r]=="F")lang["F"]=1;
         if(ilanguage[r]=="G")lang["G"]=1;
         if(ilanguage[r]=="S")lang["S"]=1;
         if(ilanguage[r]=="R")lang["R"]=1;
         if(ilanguage[r]=="I")lang["I"]=1;
         if(ilanguage[r]=="C")lang["C"]=1;
   } }
   for(r=1;r<=is;r++){
      tran=0;
      if(iact[r]=="patent filing"){
         if(iterritory[r]=="EU"&&(lang["E"]==0&&lang["F"]==0&&lang["G"]==0)) tran=1;
         if(iterritory[r]=="EU"&&(ilanguage[r]=="E"||ilanguage[r]=="F"||ilanguage[r]=="G"))lang[ilanguage[r]]=1;
         if(iterritory[r]=="PCT"&&(lang["E"]==0&&lang["F"]==0&&lang["G"]==0&&lang["S"]==0&&lang["C"]==0&&lang["J"]==0&&lang["R"]==0))tran=1;
         if(iterritory[r]=="PCT"&&(ilanguage[r]=="E"||ilanguage[r]=="F"||ilanguage[r]=="G"||ilanguage[r]=="S"||ilanguage[r]=="C"||ilanguage[r]=="J"||ilanguage[r]=="R"))lang[ilanguage[r]]=1;
         if((iterritory[r]=="US"||iterritory[r]=="UK"||iterritory[r]=="CA")&&lang["E"]==0)tran=1; 
         if(iterritory[r]=="JP"&&lang["J"]==0)tran=1;
         if(iterritory[r]=="IN"&&lang["I"]==0)tran=1;
         if(iterritory[r]=="CN"&&lang["C"]==0)tran=1;
         if(r==1) tran=0;
         if(tran==1){
            is+=1;
            iact[is]="arranging translations"
            iterritory[is]=iterritory[r];
            imonth[is]=1*((1*imonth[r])+(1*1));
            iyear[is]=iyear[r];
            if(imonth[is]>12){
               imonth[is]=1*((1*imonth[is])-(1*12));
               iyear[is]=1*((1*iyear[is])+(1*1));
            }     
         }
      }
      if(iact[r]=="patent filing"&&iterritory[r]=="EU"){
         is+=1;
         iact[is]="arranging EU translations"
         iterritory[is]=iterritory[r];
         imonth[is]=imonth[r];
         iyear[is]=1*((iyear[r]*1)+(3*1));
      }
   }
return(0);}

function deli(d){
   for(f=d;f<is;f++){
      imonth[f]=imonth[1*((f*1)+(1*1))];
      iyear[f]=iyear[1*((f*1)+(1*1))];
      iterritory[f]=iterritory[1*((f*1)+(1*1))];
      iact[f]=iact[1*((f*1)+(1*1))];
      irno[f]=irno[1*((f*1)+(1*1))];
      ilanguage[f]=ilanguage[1*((f*1)+(1*1))];
    }
   is-=1;
return(0);
}

function add(){
   is+=1;
   ilanguage[is]=document.entries.flanguage.value
   iterritory[is]=document.entries.territoryinput.value;
   iact[is]=document.entries.actinput.value;
   imonth[is]=document.entries.monthinput.value;
   iyear[is]=1*document.entries.yearinput.value;
   if(iact[is]=="patent drafting"){
      is+=1;
      iterritory[is]=iterritory[is-1];
      iact[is]="patent filing";
      iyear[is]=iyear[is-1];
      imonth[is]=imonth[is-1];
   }
   is+=1;
   iterritory[is]=iterritory[is-1];
   iact[is]="requesting search";
   iyear[is]=iyear[is-1];
   imonth[is]=1*((1*imonth[is-1])+2);
   if(imonth[is]>12){
      imonth[is]-=12;
      iyear[is]+=1;
   }      
   is+=1;
   iterritory[is]=iterritory[is-1];
   iact[is]="requesting examination";
   iyear[is]=1*((1*iyear[is-1])+(1*1));
   imonth[is]=1*imonth[is-1];
   document.getElementById('s0').innerHTML="";
   printit();
   return(0);
}

//Online filings?
//<SELECT name="online" onblur="modifyit()">
//<OPTION selected value="yes">Yes
//<OPTION value="no">No
//</select>


//PCT ISA
//<SELECT name="isa" onblur="modifyit()">
//<OPTION value="aouao">aou
//</select>

//<OPTION value="nat filing">a PCT national filing
