var filter = [];
var maxt = 20;

//function redirect() {
// window.location = "index.php?id="+encode(filter);
//}

function retitle(t) {
 document.title = t;
}

function regen(filter) {
 filter.post='regen'; 
 switch (filter.step) {
  case 'done':
   delete filter.post;
   filter.mode='list';
  break;
  case 'update':
   filter.step='update';
  break;
  case 'zero': 
   filter.step='update';
  break;
  case 'zap':
   filter.step='zero';
  break;
  default:     
   filter.mode='regen';  
   filter.step='zap';
  break; 
 } 
 xajax_x_display(filter); 
}

function analysis(filter) {
 filter.post='analysis';
 if (filter.step == 'done') {
  delete filter.post;
 }
 xajax_x_display(filter);
}

function season(filter) {
 filter.post='season';
 if (filter.step == 'done') {
  delete filter.post;
 }
 xajax_x_display(filter);
}

function runbias(filter) {
 filter.post='runbias';
 switch (filter.step) {
 case 'start':
  filter.mode = 'runbias';
  filter.step = 'zap'; 
 break; 
 case 'zap':
  filter.step = 'runbias';
 break;
 case 'done': 
  delete filter.post;
  filter.mode = 'info';
 break;   
 }
 xajax_x_display(filter); 
}

function next_analysis(s) {
 filter=decode(s);
 analysis(filter);
}

function next_season(s) {
 filter=decode(s);
 season(filter);
}

function next_regen(s) {
 filter=decode(s);
 regen(filter);
}

function next_runbias(s) {
 filter=decode(s);
 runbias(filter);
}

function wait() {
 xajax.callback.global.onRequest = function() {xajax.$('buttons').style.display='none'; xajax.$('loading').style.display='block'; };
 xajax.callback.global.beforeResponseProcessing = function() {xajax.$('loading').style.display='none'; xajax.$('buttons').style.display='block'; };
}


function index_start(s) {
 wait();
 if (s==="") {
  filter.page='index';
  filter.mode='welcome';
 } else {
  filter=decode(s);
 }
 switch (filter.page) {
  case 'regeneration': 
   regen(filter);
  break;
  case 'analysis':
   analysis(filter);
  break;
  case 'season':
   season(filter);
  break;
  case 'runbias':
   runbias(filter);
  break;
  default:
   xajax_x_display(filter); 
  break; 
 } 
}

function index_select(s) {
 xajax_x_display(decode(s));  
}

function nav_import(s,inputs) {
 wait();
 filter=decode(s);
 filter.mode='import';
 filter.text=inputs.value;
 xajax_x_display(filter);
}

function nav_clear(inputs) {
 inputs.value='';
}

function nav_mode(s,m) {
 wait();
 filter=decode(s);
 filter.mode=m;
 xajax_x_display(filter); 
}

function nav_page(s,p) {
 wait();
 filter=decode(s);
 filter.page=p;
 xajax_x_display(filter);  
}

function nav_login(s) {
 nav_mode(s,'login');
}

function nav_register(s) {
 nav_mode(s,'register');
}

function nav_forgot(s) {
 nav_mode(s,'forgot');
}

function nav_update(s) {
 nav_mode(s,'update');
}

function nav_calc(s) {
 nav_mode(s,'calc');
}

function nav_logout(s) {
 wait();
 filter=decode(s);
 filter.mode='logout';
 xajax_x_display(filter); 
}

function refresh(s) {
 wait();
 filter=decode(s);
 filter.post='';
 window.location.href='index.php?id='+encode(filter);
}

function nav_check(s,f) {
 wait();
 filter=decode(s);
 filter.user=f.login_user.value;
 filter.pass=f.login_pass.value;
 filter.mode='check';
 xajax_x_display(filter); 
}

function nav_checkreg(s,f) {
 wait();
 filter=decode(s);
 filter.first=f.reg_first.value;
 filter.last=f.reg_last.value;
 filter.landline=f.reg_land.value;
 filter.mobile=f.reg_mobile.value;
 filter.email=f.reg_email.value;
 filter.emailconfirm=f.reg_email_confirm.value;
 filter.user=f.reg_user.value;
 filter.pass=f.reg_pass.value;
 filter.passconfirm=f.reg_pass_confirm.value;
 filter.mode='checkreg';
 xajax_x_display(filter); 
} 

function nav_checkupdate(s,f) {
 wait();
 filter=decode(s);
 filter.first=f.upd_first.value;
 filter.last=f.upd_last.value;
 filter.landline=f.upd_land.value;
 filter.mobile=f.upd_mobile.value;
 filter.email=f.upd_email.value;
 filter.emailconfirm=f.upd_email_confirm.value;
 filter.user=f.upd_user.value;
 filter.pass=f.upd_pass.value;
 filter.passconfirm=f.upd_pass_confirm.value;
 filter.mode='checkupdate';
 xajax_x_display(filter); 
} 

function nav_checkforgot(s,f) {
 wait();
 filter=decode(s);
 filter.user=f.forgot_user.value;
 filter.mode='checkforgot';
 xajax_x_display(filter); 
}

function nav_checkfeedback(s,f) {
 wait();
 filter=decode(s);
 filter.name=f.fb_name.value;
 filter.user=f.fb_user.value;
 filter.email=f.fb_email.value;
 filter.comments=f.fb_comments.value;
 filter.mode='checkfeedback';
 xajax_x_display(filter); 
}

function nav_biasform(s,f) {
 wait();
 filter=decode(s);
 filter.drawweight = f.drawweight.value;
 filter.jockeyweight = f.jockeyweight.value;
 filter.trainerweight = f.trainerweight.value;
 filter.combweight = f.combweight.value;
 filter.familyweight = f.familyweight.value;
 filter.improvweight = f.improvweight.value;
 filter.massweight = f.massweight.value;
 filter.progwgt = f.progwgt.value;
 filter.scorewgt = f.scorewgt.value;
 filter.distwgt = f.distwgt.value;
 filter.coursewgt = f.coursewgt.value;
 filter.goingwgt = f.goingwgt.value;
 filter.alumwgt = f.alumwgt.value;
 filter.blinkwgt = f.blinkwgt.value;
 filter.jockwgt = f.jockwgt.value;
 filter.trainwgt = f.trainwgt.value;
 filter.maxraces = f.maxraces.value;
 filter.step = 'start';
 runbias(filter);
}

function nav_funct(s,t) {
 wait();
 filter=decode(s);
 filter.funct=t;
 xajax_x_display(filter); 
}

function nav_applysearch(s,f) {
 wait();
 filter=decode(s);
 filter.item=0;
 filter.itemofs=0;
 switch (filter.page) {
  case 'meetings':
   filter.year=f.search_year.value;
   filter.month=f.search_month.value;
   filter.course=f.search_course.value;
   filter.day=f.search_day.value;
  break;
  case 'horses':
   filter.match=f.search_match.value;
   filter.like=f.search_like.value;
   filter.agefrom=f.search_agefrom.value;   
   filter.ageto=f.search_ageto.value;   
   filter.gender=f.search_gender.value;   
   filter.runsfrom=f.search_runsfrom.value;   
   filter.runsto=f.search_runsto.value;   
   filter.winsfrom=f.search_winsfrom.value;   
   filter.winsto=f.search_winsto.value;   
   filter.plcsfrom=f.search_plcsfrom.value;   
   filter.plcsto=f.search_plcsto.value;   
   filter.earnfrom=f.search_earnfrom.value;   
   filter.earnto=f.search_earnto.value;   
   filter.flag=f.search_flag.value;   
   filter.lastran=f.search_lastran.value;   
   filter.sort1=f.search_sort1.value;   
   filter.ord1=f.search_ord1.value;   
   filter.sort2=f.search_sort2.value;   
   filter.ord2=f.search_ord2.value;   
   filter.sort3=f.search_sort3.value;   
   filter.ord3=f.search_ord3.value;   
   filter.sort4=f.search_sort4.value;   
   filter.ord4=f.search_ord4.value; 
  break;
  case 'trainers':
  case 'jockeys':
   filter.match=f.search_match.value;
   filter.like=f.search_like.value;
   filter.statistics=f.search_statistics.value;   
   filter.runsfrom=f.search_runsfrom.value;   
   filter.runsto=f.search_runsto.value; 
   filter.pos1from=f.search_pos1from.value;   
   filter.pos1to=f.search_pos1to.value;
   filter.pos2from=f.search_pos2from.value;   
   filter.pos2to=f.search_pos2to.value; 
   filter.pos3from=f.search_pos3from.value;   
   filter.pos3to=f.search_pos3to.value; 
   filter.pos4from=f.search_pos4from.value;   
   filter.pos4to=f.search_pos4to.value;   
   filter.winsfrom=f.search_winsfrom.value;   
   filter.winsto=f.search_winsto.value;   
   filter.plcsfrom=f.search_plcsfrom.value;   
   filter.plcsto=f.search_plcsto.value;   
   filter.earnfrom=f.search_earnfrom.value;   
   filter.earnto=f.search_earnto.value;   
   filter.sort1=f.search_sort1.value;   
   filter.ord1=f.search_ord1.value;   
   filter.sort2=f.search_sort2.value;   
   filter.ord2=f.search_ord2.value;   
   filter.sort3=f.search_sort3.value;   
   filter.ord3=f.search_ord3.value; 
   filter.sort4=f.search_sort4.value;   
   filter.ord4=f.search_ord4.value; 
  break; 
 }
 delete filter.funct;
 xajax_x_display(filter);
}

function nav_applyhelp(s,f) {
 filter=decode(s);
 delete filter.funct;
 xajax_x_display(filter);
}

function nav_applynote(s,f) {
 wait();
 filter=decode(s);
 filter.note=f.note;
 xajax_x_display(filter);
}

function nav_stats(s) {
 nav_funct(s,'stats');
}

function nav_search(s) {
 nav_funct(s,'search');
}

function nav_help(s) {
 nav_funct(s,'help');
}

function nav_note(s) {
 nav_funct(s,'note');
}

function nav_copy(s) {
 xajax_x_copy(decode(s));
}

function nav_edit(s) {
 xajax_x_edit(decode(s));
}

function nav_delete(s) {
 filter=decode(s);
 if (confirm("Are you sure you want to delete "+filter.button+"?")) {
  nav_mode(s,'delete');
 } 
}

function nav_print(s) {
 xajax_x_print(decode(s));
}

function nav_result(s) {
 filter=decode(s);
 filter.view='result';
 filter.runner=0;
 xajax_x_display(filter);
}

function nav_speed(s) {
 filter=decode(s);
 filter.view='speed';
 filter.runner=0;
 xajax_x_display(filter);
}

function nav_compare(s) {
 filter=decode(s); 
 filter.view='compare';
 filter.runner=0;
 xajax_x_display(filter);
}

function nav_field(s) {
 filter=decode(s); 
 filter.view='card';
 filter.runner=0;
 xajax_x_display(filter);
}

function nav_forecast(s) {
 filter=decode(s); 
 filter.view='forecast';
 filter.runner=0;
 xajax_x_display(filter);
}

function nav_form(s) {
 filter=decode(s); 
 filter.detail='form';
 xajax_x_display(filter);
}

function nav_pedigree(s) {
 filter=decode(s); 
 filter.detail='pedigree';
 xajax_x_display(filter);
}

function nav_info(s) {
 filter=decode(s); 
 filter.detail='info';
 xajax_x_display(filter);
}

function nav_runners(s) {
 filter=decode(s); 
 filter.detail='runners';
 filter.runnerofs=0;
 filter.runner=0;
 xajax_x_display(filter);
}

function nav_dams(s) {
 filter=decode(s); 
 filter.detail='dams';
 filter.damofs=0;
 filter.dam=0;
 xajax_x_display(filter);
}

function nav_back(s) {
 filter=decode(s);
 switch (filter.page) {
  case 'index': history.back(); break;
  case 'meetings':
   switch (filter.mode) {
    case 'list' : filter.page='index'; break;
    case 'race' : filter.mode='list'; break;
    case 'runner' : filter.mode='race'; break;
    case 'form' : filter.mode='runner'; break;
    case 'formline' : filter.mode='form'; break;
   }
  break;
  case 'horses':
  case 'jockeys':
  case 'trainers':      
  case 'combs':
   switch (filter.mode) {
    case 'list' : filter.page='index'; break;
    case 'form' : filter.mode='list'; break;
    case 'formline' : filter.mode='form'; break;
   }
  break;
  case 'dams':
  case 'sires':
   switch (filter.mode) {
    case 'list' : filter.page='index'; break;
    case 'runners' : filter.mode = 'list'; break;
    case 'form' : filter.mode='runners'; break;
    case 'formline' : filter.mode='form'; break;
   }
  break; 
  case 'nicks':   
  case 'bmsires':
   switch (filter.mode) {
    case 'list' : filter.page='index'; break;
    case 'dams' : filter.mode='list'; break;    
    case 'runners' : filter.mode = 'dams'; break;
    case 'form' : filter.mode='runners'; break;
    case 'formline' : filter.mode='form'; break;
   }
  break;   
  case 'bias':
  case 'classes':   
  case 'courses':
  case 'draws':
  case 'goings':
  case 'translations':
  case 'log':
  case 'registry':
  case 'importfield': 
  case 'importresult':
  case 'regeneration':
  case 'help':
   switch (filter.mode) {
    case 'list' : filter.page='index'; break;
    case 'info' : filter.mode='list'; break;    
   }
  break;   
 }
 xajax_x_display(filter); 
 return false; 
}

function nav_prev(s) {
 filter=decode(s);
 switch (filter.page) {
  case 'meetings':
   switch (filter.mode) {
    case 'list': filter.meetofs=filter.meetofs-maxt; break;
    case 'race': 
     if (filter.meet === 0) {
      filter.meetofs=filter.meetofs-maxt;
      filter.meets=maxt+1;
      filter.meet=maxt-1;
     } else {
      filter.meet=filter.meet-1;
     }  
    break;
    case 'runner':
     if (filter.race === 0) {
      filter.races=100;
      filter.race=99;
      filter.meet=filter.meet+1;
      if (filter.meet==filter.meets) {
       filter.meet=0;
       filter.meetofs=filter.meetofs+maxt;
      }
     } else {
      filter.race=filter.race-1;
     }  
    break;
    case 'form':
     filter.runner=filter.runner-1;
    break;
    case 'formline':
     filter.form=filter.form-1;
    break;  
   }
  break;
  case 'horses':
  case 'jockeys':
  case 'trainers':
  case 'combs':
   switch (filter.mode) {
    case 'list': filter.itemofs=filter.itemofs-maxt; break;
    case 'form': 
     if (filter.item === 0) {
      filter.itemofs=filter.itemofs-maxt;
      filter.items=maxt+1;
      filter.item=maxt-1;
     } else {
      filter.item=filter.item-1;
     }  
    break;
    case 'formline': filter.form=filter.form-1; break;  
   }
  break;
  case 'dams': 
  case 'sires':
   switch (filter.mode) {
    case 'list': filter.itemofs=filter.itemofs-maxt; break;
    case 'runners': 
     switch (filter.detail) {
      case 'runners': filter.runnerofs=filter.runnerofs-maxt; break;
      case 'info':
      case 'pedigree': 
       if (filter.item === 0) {
       filter.itemofs=filter.itemofs-maxt;
       filter.items=maxt+1;
       filter.item=maxt-1;
       } else {
        filter.item=filter.item-1;
       }
      break;
     }    
    break;    
    case 'form': 
     if (filter.runner === 0) {
      filter.runnerofs=filter.runnerofs-maxt;
      filter.runner=maxt+1;
      filter.runners=maxt-1;
     } else {
      filter.runner=filter.runner-1;
     }
    break;    
    case 'formline': filter.form=filter.form-1; break;  
   }
  break;
  case 'nicks':
  case 'bmsires':
   switch (filter.mode) {
    case 'list': filter.itemofs=filter.itemofs-maxt; break;
    case 'dams':
     switch (filter.detail) {
      case 'dams': filter.damofs=filter.damofs-maxt; break;
      case 'info':
      case 'pedigree': 
       if (filter.item === 0) {
       filter.itemofs=filter.itemofs-maxt;
       filter.items=maxt+1;
       filter.item=maxt-1;
       } else {
        filter.item=filter.item-1;
       }
      break;
     }    
    break;        
    case 'runners': 
     switch (filter.detail) {
      case 'runners': filter.runnerofs=filter.runnerofs-maxt; break;
      case 'info':
      case 'pedigree': 
       if (filter.dam === 0) {
       filter.damofs=filter.damofs-maxt;
       filter.dams=maxt+1;
       filter.dam=maxt-1;
       } else {
        filter.dam=filter.dam-1;
       }
      break;
     }    
    break;    
    case 'form': 
     if (filter.runner === 0) {
      filter.runnerofs=filter.runnerofs-maxt;
      filter.runner=maxt+1;
      filter.runners=maxt-1;
     } else {
      filter.runner=filter.runner-1;
     }
    break;    
    case 'formline': filter.form=filter.form-1; break;  
   }
  break;
  case 'bias':
  case 'classes':   
  case 'courses':
  case 'draws':
  case 'goings':
  case 'translations':
  case 'log':
  case 'registry':
  case 'importfield': 
  case 'importresult':
  case 'regeneration':
  case 'help':
   switch (filter.mode) {
    case 'list': filter.itemofs=filter.itemofs-maxt; break;
    case 'info': 
     if (filter.item === 0) {
      filter.itemofs=filter.itemofs-maxt;
      filter.items=maxt+1;
      filter.item=maxt-1;
     } else {
      filter.item=filter.item-1;
     }  
    break;
   }
  break;
 }  
 xajax_x_display(filter); 
 return false; 
}

function nav_next(s) {
 filter=decode(s);
 switch (filter.page) {
  case 'meetings':
   switch (filter.mode) {
    case 'list' : 
     filter.meetofs=filter.meetofs+maxt; 
    break;
    case 'race':
     filter.meet=filter.meet+1;
     if (filter.meet==maxt) {
      filter.meet=0;
      filter.meetofs=filter.meetofs+maxt;
     } 
    break;
    case 'runner':
     if (filter.race>=filter.races-1) {
      filter.race=0;
      filter.races=99;
      if (filter.meet === 0) {
       filter.meetofs=filter.meetofs-maxt;
       filter.meets=maxt+1;
      } else {
       filter.meet=filter.meet-1;
      }
     } else {
      filter.race=filter.race+1;
     }     
    break;
    case 'form':
     filter.runner=filter.runner+1;
    break;
    case 'formline':
     filter.form=filter.form+1;
    break;  
   }
  break; 
  case 'horses':
  case 'jockeys':
  case 'trainers':
  case 'combs':
   switch (filter.mode) {
    case 'list': filter.itemofs=filter.itemofs+maxt; break;
    case 'form':      
     filter.item=filter.item+1;
     if (filter.item==maxt) {
      filter.item=0;
      filter.itemofs=filter.itemofs+maxt;
     } 
    break;
    case 'formline': filter.form=filter.form+1; break;  
   }
  break; 
  case 'dams': 
  case 'sires':
   switch (filter.mode) {
    case 'list': filter.itemofs=filter.itemofs+maxt; break;
    case 'runners': 
     switch (filter.detail) {
      case 'runners': filter.runnerofs=filter.runnerofs+maxt; break;
      case 'pedigree':
      case 'info':
       filter.item=filter.item+1;
       if (filter.item==maxt) {
        filter.item=0;
        filter.itemofs=filter.itemofs+maxt;
       }        
      break;
     }  
    break;  
    case 'form':       
     filter.runner=filter.runner+1;
     if (filter.runner==maxt) {
      filter.runner=0;
      filter.runnerofs=filter.runnerofs+maxt;
     }
    break; 
    case 'formline': filter.form=filter.form+1; break;  
   }
  break; 
  case 'nicks':
  case 'bmsires':
   switch (filter.mode) {
    case 'list': filter.itemofs=filter.itemofs+maxt; break;
    case 'dams': 
     switch (filter.detail) {
      case 'dams': filter.damofs=filter.damofs+maxt; break;
      case 'pedigree':
      case 'info':
       filter.item=filter.item+1;
       if (filter.item==maxt) {
        filter.item=0;
        filter.itemofs=filter.itemofs+maxt;
       }        
      break;
     }  
    break;      
    case 'runners': 
     switch (filter.detail) {
      case 'runners': filter.runnerofs=filter.runnerofs+maxt; break;
      case 'pedigree':
      case 'info':
       filter.dam=filter.dam+1;
       if (filter.dam==maxt) {
        filter.dam=0;
        filter.damofs=filter.damofs+maxt;
       }        
      break;
     }  
    break;  
    case 'form':       
     filter.runner=filter.runner+1;
     if (filter.runner==maxt) {
      filter.runner=0;
      filter.runnerofs=filter.runnerofs+maxt;
     }
    break; 
    case 'formline': filter.form=filter.form+1; break;  
   }
  break; 
  case 'bias':
  case 'classes':   
  case 'courses':
  case 'draws':
  case 'goings':
  case 'translations':
  case 'log':
  case 'registry':
  case 'importfield': 
  case 'importresult':
  case 'regeneration':
  case 'help':
   switch (filter.mode) {
    case 'list': filter.itemofs=filter.itemofs+maxt; break;
    case 'info':      
     filter.item=filter.item+1;
     if (filter.item==maxt) {
      filter.item=0;
      filter.itemofs=filter.itemofs+maxt;
     } 
    break;
   }
  break; 
 } 
 xajax_x_display(filter); 
 return false;
}
