﻿function fixLink()
{
  switch(errorid)
  {
    case 10:
      /// URL has '#&' instead of '#&&' ///
      var url = location.href.replace("%23","#").split('#&');
      location.replace(url[0] + '#&&' + url[1]);
      break;
      
    case 11:
      /// URL has '#' instead of '#&&' ///
      var url = location.href.replace("%23","#").split('#');
      location.replace(url[0] + '#&&' + url[1]);
      break;
      
    case 12:
      /// URL has invalid tag ///
      var url = location.href.replace("%23","#").split('#&&');
      var list = url[1].split('&');
      var tmp = "";
      var sublist; var found;
      for( var i = 0; i < list.length; i++ )
      {
        found = false;
        sublist = list[i].split('=');
        for( var j = 0; j < checklist.length; j++)
        {
          if( sublist[0] == checklist[j] )
          { found = true; break; }
        }
        
        if(found)
        { tmp += "&" + list[i]; }
      }
      location.replace(url[0] + '#&' + tmp);
      break;
    
    case 13:
      /// 'ver'-tag value is invalid ///
      var tmp = "";
      if(statemap["sura"] != null)
      { tmp += "&sura=" + statemap['sura']; }
      if(statemap["aya"] != null)
      { tmp += "&aya=" + statemap['aya']; }
      tmp += "&trans=" + statemap['trans'];
      if(statemap["show"] != null)
      { tmp += "&show=" + statemap['show']; }
      if(statemap["format"] != null)
      { tmp += "&format=" + statemap['format']; }
      var url = location.href.replace("%23","#").split('#&&');
      location.replace(url[0] + '#&' + tmp + "&ver=1.00");
      break;
    
    case 14:
      /// Version 2.00 does not support 'format'-tag ///
      var tmp = "";
      if(statemap["sura"] != null)
      { tmp += "&sura=" + statemap['sura']; }
      if(statemap["aya"] != null)
      { tmp += "&aya=" + statemap['aya']; }
      tmp += "&trans=" + statemap['trans'];
      if(statemap["show"] != null)
      { tmp += "&show=" + statemap['show']; }
      tmp += "&ver=" + statemap['ver'];
      var url = location.href.replace("%23","#").split('#&&');
      location.replace(url[0] + '#&' + tmp);
      break;
    
    case 15:
      /// 'sura'-tag value is invalid ///
      var tmp = "";
      if(statemap["aya"] != null)
      { tmp += "&aya=" + statemap['aya']; }
      tmp += "&trans=" + statemap['trans'];
      if(statemap["show"] != null)
      { tmp += "&show=" + statemap['show']; }
      if(statemap["format"] != null)
      { tmp += "&format=" + statemap['format']; }
      tmp += "&ver=" + statemap['ver'];
      var url = location.href.replace("%23","#").split('#&&');
      location.replace(url[0] + '#&&sura=1' + tmp);
      break;
    
    case 16:
      /// 'aya'-tag value is invalid ///
    case 17:
      /// 'aya'-tag value doesn't exist in corresponding sura ///
      var tmp = "";
      if(statemap["sura"] != null)
      { tmp += "&sura=" + statemap['sura']; }
      tmp += "&trans=" + statemap['trans'];
      if(statemap["show"] != null)
      { tmp += "&show=" + statemap['show']; }
      if(statemap["format"] != null)
      { tmp += "&format=" + statemap['format']; }
      tmp += "&ver=" + statemap['ver'];
      var url = location.href.replace("%23","#").split('#&&');
      location.replace(url[0] + '#&' + tmp);
      break;
    
    case 18:
      /// 'trans'-tag value is invalid ///
      var tmp = ""; var tmp2 = "";
      if(statemap["sura"] != null)
      { tmp += "&sura=" + statemap['sura']; }
      if(statemap["aya"] != null)
      { tmp += "&aya=" + statemap['aya']; }
      if(statemap["show"] != null)
      { tmp2 += "&show=" + statemap['show']; }
      if(statemap["format"] != null)
      { tmp2 += "&format=" + statemap['format']; }
      tmp2 += "&ver=" + statemap['ver'];
      var defurllist = HF_DefaultState.value.split('&');
      var sublist; var translist;
      for(var i = 0; i < defurllist.length; i++)
      {
        sublist = defurllist[i].split('=');
        if(sublist[0] == "trans")
        { translist = sublist[1]; break; }
      }
      
      var url = location.href.replace("%23","#").split('#&&');
      location.replace(url[0] + '#&' + tmp + "&trans=" + translist + tmp2);
      break;
    
    case 19:
      /// Some translations in URL couldn't be found ///
      var tmp = ""; var tmp2 = "";
      if(statemap["sura"] != null)
      { tmp += "&sura=" + statemap['sura']; }
      if(statemap["aya"] != null)
      { tmp += "&aya=" + statemap['aya']; }
      if(statemap["show"] != null)
      { tmp2 += "&show=" + statemap['show']; }
      if(statemap["format"] != null)
      { tmp2 += "&format=" + statemap['format']; }
      tmp2 += "&ver=" + statemap['ver'];
      var tmp3 = statemap["trans"].split(',');
      var tmp4 = ""; var tmp5 = ""; var found; var header;
      HF_TransState.value = ""; var i;
      for(var j = 0; j < tmp3.length; j++)
      {
        found = false;
        for(var i = 1; i < t_OQP_Flyout_Trans_Overview.rows.length; i++)
        {
          header = t_OQP_Flyout_Trans_Overview.rows[i].className;
          
          if(header != "" && header != null )
          { i++; }
          else
          {
            tmp4 = t_OQP_Flyout_Trans_Overview.rows[i].cells[3].innerHTML;
            
            if( tmp3[j] == tmp4 )
            { found = true; break; }
          }
        }
        
        if(found)
        {
          tmp5 += tmp3[j] + ",";
        }
      }
      
      tmp5 = tmp5.substring(0,tmp5.length-1);
      var url = location.href.replace("%23","#").split('#&&');
      location.replace(url[0] + '#&' + tmp + "&trans=" + tmp5 + tmp2);
      break;
    
    case 20:
      /// 'show'-tag value is invalid ///
      var tmp = ""; var tmp2 = "";
      if(statemap["sura"] != null)
      { tmp += "&sura=" + statemap['sura']; }
      if(statemap["aya"] != null)
      { tmp += "&aya=" + statemap['aya']; }
      tmp += "&trans=" + statemap['trans'];
      if(statemap["format"] != null)
      { tmp2 += "&format=" + statemap['format']; }
      tmp2 += "&ver=" + statemap['ver'];
      var url = location.href.replace("%23","#").split('#&&');
      var tmp3 = statemap['show'].split(',');
      var tmp4 = "";
      if( tmp3.length > 1 )
      { tmp4 = "," + tmp3[1]; }
      location.replace(url[0] + '#&' + tmp + "&show=both" + tmp4 + tmp2);
      break;
    
    case 21:
      /// 'show'-tag specifies an invalid arabic text ///
      var tmp = ""; var tmp2 = "";
      if(statemap["sura"] != null)
      { tmp += "&sura=" + statemap['sura']; }
      if(statemap["aya"] != null)
      { tmp += "&aya=" + statemap['aya']; }
      tmp += "&trans=" + statemap['trans'];
      if(statemap["format"] != null)
      { tmp2 += "&format=" + statemap['format']; }
      tmp2 += "&ver=" + statemap['ver'];
      var url = location.href.replace("%23","#").split('#&&');
      var tmp3 = statemap['show'].split(',');
      location.replace(url[0] + '#&' + tmp + "&show=" + tmp3[0] + tmp2);
      break;
  }
  
  errorid = 0;
}
