var FLASHAJAXConnector = "FLASHAJAX";

function CreateConnector(AConnectorFileName){
  document.write('<EMBED src="' + AConnectorFileName + '" menu=false quality=low wmode=transparent WIDTH="1" HEIGHT="1" ' +
    'swLiveConnect=true ID="' + FLASHAJAXConnector + '" NAME="' + FLASHAJAXConnector + '" TYPE="application/x-shockwave-flash" ' +
    'PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED>');
}

CFlashAJAX = function(AURL){
  this.URL = AURL;
}

var Encode = function(AString){
  return encodeURIComponent(AString);
}

var Decode = function(AString){
  return decodeURIComponent(AString);
}

CFlashAJAX.prototype.Execute = function(ACommand, AParams, ACallbackName){
  var Params = new Array();
  for(var ParamName in AParams)
    Params.push(ParamName + ":" + Encode(AParams[ParamName]));
  Params.push("__CALLBACK:" + ACallbackName);
  Params.push("__URL:" + this.URL);
  Params.push("__COMMAND:" + ACommand);
  var ParamString = Params.join(",");
  var Connector = document.getElementById(FLASHAJAXConnector);
  Connector.SetVariable("Query", ParamString);
}

eval("function " + FLASHAJAXConnector + "_DoFSCommand(command, args){HandleFSCommand(command, args);}");

var IsInternetExplorer = navigator.appName.indexOf("Microsoft") != -1;

var UserAgent = navigator.userAgent;
if (IsInternetExplorer && (UserAgent.indexOf("Windows") != -1) && (UserAgent.indexOf("Windows 3.1") == -1)) {
  with(document){
    write('<SCRIPT LANGUAGE=VBScript\> \n');
    write('on error resume next \n');
    write('Sub ' + FLASHAJAXConnector + '_FSCommand(ByVal command, ByVal args)\n');
    write('  call HandleFSCommand(command, args)\n');
    write('end sub\n');
    write('</SCRIPT\> \n');
  }
}

function DecodeArray(AArrayStr){
  var Obj = new Object();
  if(AArrayStr == "")
    return Obj;
  var Data = AArrayStr.split("&");
  for(var I = 0; I < Data.length; I++){
    var NameVal = Data[I].split("=");
    NameVal[0] = Decode(NameVal[0]);
    NameVal[1] = Decode(NameVal[1]);
    if(/^<\[.*\]>$/.test(NameVal[1])){
      NameVal[1] = NameVal[1].replace("<[", "");
      NameVal[1] = NameVal[1].replace("]>", "");
      Obj[NameVal[0]] = DecodeArray(NameVal[1]);
    }else{
      Obj[NameVal[0]] = NameVal[1];
    }
  }
  return Obj;
};

function HandleFSCommand(command, args){
  eval(command)(DecodeArray(args));
}