/** 
	SWFController 
	(alpha)

	last modified date: 6.26.2006
	
	by Ian Coyle (iancoyle.com)


*/

FlashController = function(){
	
}

FlashController.prototype.flashVersion = function(){
	return ( this.checkFlash("version") );
}

FlashController.prototype.detectFlash = function(ver){
	return ( this.checkFlash(ver) );
}

FlashController.prototype.createSWFObject = function(swfPath,swfAttributes,divID,detectionAttributes){
	var detectionNumber = 0
	var detectedNumber = 0
	var errors = new Array()
	var _err = ""
	if (detectionAttributes.detectFlash==true){
		detectionNumber++
		if (this.detectFlash(detectionAttributes.flashVersion)){
			detectedNumber++
		}else{
			errors.push("invalidFlash")
			if (_err=="") _err = "invalidFlash"
			
		}
	}
	
	if (detectionAttributes.detectResolution==true){
		if (detectionAttributes.resolutionY!=undefined){
			detectionNumber++
			if (ScreenControl.resolutionY() >= detectionAttributes.resolutionY){
				detectedNumber++
			}else{
				errors.push("invalidResolutionY")
				if (_err=="") _err = "invalidResolution"
			}
		}
		if (detectionAttributes.resolutionX!=undefined){
			detectionNumber++
			if (ScreenControl.resolutionX() >= detectionAttributes.resolutionX){
				detectedNumber++
			}else{
				errors.push("invalidResolutionX")
				if (_err=="") _err = "invalidResolution"
			}
		}
	}
	
	if (detectionAttributes.detectViewport==true){
		if (detectionAttributes.viewportY!=undefined){
			detectionNumber++
			if (ScreenControl.viewportY() >= detectionAttributes.viewportY){
				detectedNumber++
			}else{
				errors.push("invalidViewportY")
				if (_err=="") _err = "invalidViewport"
			}
		}
		if (detectionAttributes.viewportX!=undefined){
			detectionNumber++
			if (ScreenControl.viewportX() >= detectionAttributes.viewportX){
				detectedNumber++
			}else{
				errors.push("invalidViewportX")
				if (_err=="") _err = "invalidViewport"
			}
		}
	}
	
	
	//alert(detectionNumber + " | " + detectedNumber)
	if (detectionNumber==detectedNumber){
		
		this.outputSWF(swfPath,swfAttributes,divID)
	}else{
		//alert(detectionAttributes.onError)
		detectionAttributes.onError(_err,errors)
	}
	
}

FlashController.prototype.setVar = function(varname,val){
	this._FlashVars[varname] = val;
}

FlashController.prototype.setProperty = function(ver){
	
}





/**
	WORKER METHODS
	do not call
*/

FlashController.prototype.outputSWF = function(swfPath,swfAttributes,divID)
{
	var flashDIV = document.getElementById(divID);
	
	
	var _objectHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"'
	var _paramHTML = ""
	var _embedHTML = '<embed '
							
	
	for (var attrib in swfAttributes){
		switch (attrib){
			case "id":
				_objectHTML+= ' ' + attrib + '="' + swfAttributes[attrib] + '" ';
				_embedHTML+= ' name="' + swfAttributes[attrib] + '" ';
			break;
			case "width":
			case "height":
				_objectHTML+= ' ' + attrib + '="' + swfAttributes[attrib] + '" ';
				_embedHTML+= ' ' + attrib + '="' + swfAttributes[attrib] + '" ';
			break;
			default:
				_paramHTML+='<param name="' + attrib + '" value="' + swfAttributes[attrib] + '" />';
				_embedHTML+= ' ' + attrib + '="' + swfAttributes[attrib] + '" ';
			break;
		}
	}
	_paramHTML+='<param name="movie" value="' + swfPath + '" />';
	_embedHTML+= ' src="' + swfPath + '"></embed>';
	_objectHTML +='>'
	
	var _html_ = _objectHTML + _paramHTML + _embedHTML + '</object>'
//	alert(_html_)
	flashDIV.innerHTML=_html_;
}

FlashController.prototype.checkFlash = function(ver)
{
		
	
		var myflashversion =0;
		var vNumber;
		var MM_contentVersion = ver;
		
		var plugin = (navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"]) ? navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : 0;

		if ( plugin ) {

					var words = navigator.plugins["Shockwave Flash"].description.split(" ");
					for (var i = 0; i < words.length; ++i)
					{
					if (isNaN(parseInt(words[i])))
					continue;
					var MM_PluginVersion = words[i]; 
					}
					vNumber = MM_PluginVersion;
					var MM_FlashCanPlay = MM_PluginVersion >= MM_contentVersion;
			
			}
			else if (navigator.userAgent && navigator.userAgent.indexOf("MSIE")>=0 && (navigator.appVersion.indexOf("Win") != -1)) {

				try
				{
					var flash = new ActiveXObject("ShockwaveFlash.ShockwaveFlash")
					vNumber =  parseInt(flash.GetVariable("$version").split(",")[0].split(" ")[1]);
					
				}
				catch(e)
				{
					vNumber=0;
				}
			
				if (vNumber >=MM_contentVersion){
					MM_FlashCanPlay=true
				}

				
				
			}

		var returnVar;
		switch (ver){
			case "version":
				returnVar = vNumber;
			break;
			default:
				returnVar = MM_FlashCanPlay;
			break;
		}
		
		return (returnVar);

}


var FlashControl = new FlashController();


