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_GetCodebase(baseURL, defaultVersion, args){
	var codebase = baseURL + defaultVersion;
	for (var i=0; i < args.length; i=i+2){
		currArg = args[i].toLowerCase();
		if (currArg == "codebase" && args.length > i+1){
			if (args[i+1].indexOf("http://") == 0){
				codebase = args[i+1];
			}else{
				codebase = baseURL + args[i+1];
			}
		}
	}
	return codebase;	
}

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 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);
}
