// $Revision: 1.3 $
// Implements AC_GenerateObj() function. This is a generic function used to generate
// object/embed/param tags. It is used by higher level api functions.

var MSG_EvenArgs = 'The %s function requires an even number of arguments.'
+ '\nArguments should be in the form "atttributeName","attributeValue",...';
var MSG_SrcRequired = "The %s function requires that a movie src be passed in as one of the arguments.";
function AC_AddExtension(args, paramName, extension)
{
var currArg, paramVal, queryStr, endStr;
for (var i=0; i < args.length; i=i+2){
currArg = args[i].toLowerCase();    
if (currArg == paramName.toLowerCase() && args.length > i+1) {
paramVal = args[i+1];
queryStr = "";
var indQueryStr = args[i+1].indexOf('?');
if (indQueryStr != -1){
paramVal = args[i+1].substring(0, indQueryStr);
queryStr = args[i+1].substr(indQueryStr);
}
endStr = "";
if (paramVal.length > extension.length)
endStr = paramVal.substr(paramVal.length - extension.length);
if (endStr.toLowerCase() != extension.toLowerCase()) {
args[i+1] = paramVal + extension + queryStr;
}
}
}
}
function AC_sprintf(str){
for (var i=1; i < arguments.length; i++){
str = str.replace(/%s/,arguments[i]);
}
return str;
}
function AC_checkArgs(args,callingFn){
var retVal = true;
if (parseFloat(args.length/2) != parseInt(args.length/2)){
alert(sprintf(MSG_EvenArgs,callingFn));
retVal = false;
}
return retVal;
}
function AC_GenerateObj(callingFn, useXHTML, classid, codebase, pluginsPage, mimeType, args){
if (!AC_checkArgs(args,callingFn)){
return;
}
var loc = document.location || document.location.href;
if( loc )
{
loc = loc.toString();
if( loc.indexOf( "https://" ) == 0 )
{
if( codebase )
{
var c = codebase.split( "://" );
codebase = "https://" + c[1];
}
if( pluginsPage )
{
var p = pluginsPage.split( "://" );
pluginsPage = "https://" + p[1];
}
}
}
var tagStr = '';
var currArg = '';
var closer = (useXHTML) ? '/>' : '>';
var srcFound = false;
var embedStr = '<embed';
var paramStr = '';
var embedNameAttr = '';
var objStr = '<object classid="' + classid + '" codebase="' + codebase + '"';
for (var i=0; i < args.length; i=i+2){
currArg = args[i].toLowerCase();    
if (currArg == "src"){
if (callingFn.indexOf("RunSW") != -1){
paramStr += '<param name="' + args[i] + '" value="' + args[i+1] + '"' + closer + '\n';
embedStr += ' ' + args[i] + '="' + args[i+1] + '"';
srcFound = true;
}
else if (!srcFound){
paramStr += '<param name="movie" value="' + args[i+1] + '"' + closer + '\n'; 
embedStr += ' ' + args[i] + '="' + args[i+1] + '"';
srcFound = true;
}
}
else if (currArg == "movie"){
if (!srcFound){
paramStr += '<param name="' + args[i] + '" value="' + args[i+1] + '"' + closer + '\n'; 
embedStr += ' src="' + args[i+1] + '"';
srcFound = true;
}
}
else if (   currArg == "width" 
|| currArg == "height" 
|| currArg == "align" 
|| currArg == "vspace" 
|| currArg == "hspace" 
|| currArg == "class" 
|| currArg == "title" 
|| currArg == "accesskey" 
|| currArg == "tabindex"){
objStr += ' ' + args[i] + '="' + args[i+1] + '"';
embedStr += ' ' + args[i] + '="' + args[i+1] + '"';
}
else if (currArg == "id"){
objStr += ' ' + args[i] + '="' + args[i+1] + '"';
if (embedNameAttr == "")
embedNameAttr = ' name="' + args[i+1] + '"';
}
else if (currArg == "name"){
objStr += ' ' + args[i] + '="' + args[i+1] + '"';
embedNameAttr = ' ' + args[i] + '="' + args[i+1] + '"';
}    
else if (currArg == "codebase"){
}    
else{
paramStr += '<param name="' + args[i] + '" value="' + args[i+1] + '"' + closer + '\n'; 
embedStr += ' ' + args[i] + '="' + args[i+1] + '"';
}
}
if (!srcFound){
alert(AC_sprintf(MSG_SrcRequired,callingFn));
return;
}
if (embedNameAttr)
embedStr += embedNameAttr;	
if (pluginsPage)
embedStr += ' pluginspage="' + pluginsPage + '"';
if (mimeType)
embedStr += ' type="' + mimeType + '"';
objStr += '>\n';
embedStr += '></embed>\n'; 
tagStr = objStr + paramStr + embedStr + "</object>\n"; 
document.write(tagStr);
}
