function dw(what) { document.write(what); }

function QueryString(key) 
{ 
var value = null; 
for (var i=0;i<QueryString.keys.length;i++) 
{ 
if (QueryString.keys[i]==key) 
{ 
value = QueryString.values[i]; 
break; 
} 
} 
return value; 
} 
QueryString.keys = new Array(); 
QueryString.values = new Array(); 

function QueryString_Parse() 
{ 
QueryString.keys = new Array(); 
QueryString.values = new Array(); 

var query = unescape(window.location.search.substring(1).replace( /\+/g , ' ')); 
var pairs = query.split("&"); 

for (var i=0;i<pairs.length;i++) 
{ 
var pos = pairs[i].indexOf('='); 
if (pos >= 0) 
{ 
var argname = pairs[i].substring(0,pos); 
var value = pairs[i].substring(pos+1); 
QueryString.keys[QueryString.keys.length] = argname; 
QueryString.values[QueryString.values.length] = value; 
} 
} 
}

function strTrim(s) {
  s = s.replace( /^\s+/g, "" );
  return s.replace( /\s+$/g, "" );
}

var urlsplit=top.location.href.split("?");

// Interpolation specific:

// qls=1/200/201/300&rn=Treatment,Stamina,TL&rv=11/951/1001/2051,6/404/426/1095,1/1/5/6&en=Sense,Agility&ev=3/33/33/44,2/22/22/29&ids=111283/111284/181052/181053&tit=Waist Implant of Sense and Agi
var nps=0;
var pars=new Array(20);
// NameInUrlQuery,DefaultVal,Val,Type,Par1,HtmlPrompt
//  Type=
//    0: text               (Par1=Size)
//    1: option aggregator  (Par1=number of pre-options)
//    9: radio-button select options  (Par1=default). Assumed defined before the aggregator.
//    2: Submit button
pars[nps++]=new Array('qls'  ,'' , '',0, 50,'QL list. Example: <b>1/200/201/300</b><br>','');

pars[nps++]=new Array('aql'  ,'' , '',9,  1,'','Show only <b>Best QLs</b> (lowest QLs for same effects)');
pars[nps++]=new Array('aql'  ,'1', '',9,  0,'','Show All QLs<br>');
pars[nps++]=new Array('aql'  ,'' , '',1,  2,'','Show All QLs?');

pars[nps++]=new Array('ids'  ,'' , '',0, 75,'<center>The following fields are <b>optional</b>, but at least one requirement or effect must be defined:</center><br><br>ID list, as many IDs as QLs. Example: <b>111283/111284/181052/181053</b><br>','');
pars[nps++]=new Array('rn'   ,'' , '',0, 75,'<b>Requirements</b> names, comma-separated. Example: <b>Treatment,Stamina,TL</b><br>','');
pars[nps++]=new Array('rv'   ,'' , '',0, 75,'Value lists for all requirements, comma-separated. Example: <b>11/951/1001/2051,6/404/426/1095,1/1/5/6</b><br>','');
pars[nps++]=new Array('en'   ,'' , '',0, 75,'<b>Effects</b> names, comma-separated. Example: <b>Sense,Agility</b><br>','');
pars[nps++]=new Array('ev'   ,'' , '',0, 75,'Value lists for all effects, comma-separated. Example: <b>3/33/33/44,2/22/22/29</b><br>','');
pars[nps++]=new Array('tit'  ,'' , '',0, 50,'A title for the interpolation table. Example: <b>Waist Implants of Sense+Agility</b><br>','');
pars[nps++]=new Array('notes','' , '',0, 75,'','Additional notes');
pars[nps++]=new Array(''     ,'' , '',2,  0,'','View Interpolation Table');

var pfName=0,pfDefVal=1,pfVal=2,pfType=3,pfP1=4,pfPrePrompt=5,pfPrompt=6;

if (iframes==0)
 dw("<br><center><font size=+2>Sorry, you need an iframes-enabled browser to view this page properly.</font></center><br><br>");
else
{
 QueryString_Parse(); 

 // Read query string pars into array
 for (var i=0;i<nps;i++)
 {
     var val=QueryString(pars[i][pfName]);
     if (val) pars[i][pfVal] = strTrim(val);
     
     if (pars[i][pfType]==1)
     {  // Handle option aggregator
        var defi=i-pars[i][pfP1];
        for (var j=defi;j<i;j++) {
            if (pars[j][pfVal]==pars[j][pfDefVal]) { defi=j; break; }
            if (pars[j][pfP1]) defi=j;
        }
        pars[i][pfVal] = pars[defi][pfDefVal];
        
        for (var j=i-pars[i][pfP1];j<i;j++) pars[j][pfVal] = pars[i][pfVal]==pars[j][pfDefVal]? ' checked' : '';
     }
 }

 dw('<center>');

 searchfor = strTrim(pars[0][pfVal]);
 if (searchfor!="")
 { // Show the query result
   var url='http://mmorpg-world.info/aoitems.info/cgi-bin/aointq.cgi';
   var parsout=0;
   for (i=0;i<nps;i++)
   {
       if (pars[i][pfVal]!=pars[i][pfDefVal] && pars[i][pfType]!=9)
       {
          var val=escape(pars[i][pfVal]); val = val.replace( /\+/g ,"%2b");
          url += parsout? '&':'?'; url += pars[i][pfName] + '=' + val;
          parsout++;
       }
   }
   dw('<br><iframe src="'+url+'" width=640 height=400 scrolling=auto hspace=0 vspace=0 frameborder=1 marginheight=0 marginwidth=0></iframe>');
 }

 // Present the form, filled with query pars if any
 dw('<br><br><form name=query action='+urlsplit[0]+' method=get>');
  for (i=0;i<nps;i++)
  {
   switch (pars[i][pfType])
   {
   case 0:
        dw(pars[i][pfPrePrompt]+ '<input type="text" name="' +pars[i][pfName]+ '" size="' +pars[i][pfP1]+ '" value="'+ pars[i][pfVal].replace( /\"/g ,"&quot;") +'"> ' +pars[i][pfPrompt]+ '<br><br>');
        break;

   case 9:
        dw(pars[i][pfPrePrompt]+ '<input type="radio" name="' +pars[i][pfName]+ '" value="' +pars[i][pfDefVal]+ '"' +pars[i][pfVal]+'> ' +pars[i][pfPrompt]+ '<br>');
        break;

   case 2:
        dw('<input type="submit" value="' +pars[i][pfPrompt]+ '"><br><br>');
        break;
   }
  }
 dw('</form>');

 dw('</center>');
 
}

