/**
 * FLAID "Flannel Plaid"
 * Flash Identificator
 * @author Paulo Cazarotto
 * @author Wanderson Camargo
 */
var FLAID = {
	requestBanner: function (width, height, type, custom, id) {
		
		width  = width  || '';
		height = height || '';
		custom = custom || '';
		type   = type   || 'jpg';
		id     = id     || 'banner';
		
		var request    = null;
		var url        = 'iss.php?iss=banner';
		var screen_res = screen.width+'x'+screen.height;
		var banner_res = width+'x'+height;
		var message    = '&r='+screen_res+'&b='+banner_res+'&c='+custom+'&t='+type;
		var out        = '';
		
		if(window.XMLHttpRequest) {
			request = new XMLHttpRequest();
		}
		else if(window.ActiveXObject) {
			request = new ActiveXObject('Microsoft.XMLHTTP');
		}
		if(request != null) {
			request.open('POST', url, true);
			request.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
			request.onreadystatechange = function() {
				if(request.readyState == 4 && request.status == 200) {
					var swf    = new RegExp('.swf$');
					var banner = request.responseText;
					var img    = banner.replace(/^[0-9]{1,}./, "");
					var ident  = banner.match(/^[0-9]{1,}/);
					
					if(swf.test(banner)) {
						img = img.replace(/.swf$/,"");
						out += this.flash.AC_FL_RunContent(
							'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0',
 							'width', width,
 							'height', height,
							'src', img,
							'quality', 'high',
							'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
							'align', 'middle',
							'play', 'true',
							'loop', 'true',
							'scale', 'showall',
							'wmode', 'window',
							'devicefont', 'false',
							'id', img,
							'bgcolor', '#ffffff',
							'name', img,
							'menu', 'true',
							'allowFullScreen', 'false',
							'allowScriptAccess', 'sameDomain',
							'movie', img,
							'salign',''

						);
					}
					else {
						out += '<a href="'+url+'&id='+ident+message+'">';
						out += '<img src="'+img+'"/>';
						out += '</a>';
						
					}
					document.getElementById(id).innerHTML = out;
				}
			}
			request.send(message);
		}
	},
	renderContainer: function (width, height, type, custom, id) {
		
		width  = width  || '';
		height = height || '';
		custom = custom || '';
		type   = type   || 'jpg';
		id     = id     || 'banner';
		
		pwidth  = width  ? 'width:'+width+'px;' : '';
		pheight = height ? 'height:'+height+'px;' : '';
		classe  = pwidth+pheight;
		
		var out = '';
		
		out += '<div id="'+id+'" style="'+classe+'">';
		out += '</div>';
		
		document.write(out);
		
		this.requestBanner(width, height, type, custom, id);
	},
	flash: {
		isIE  : (navigator.appVersion.indexOf("MSIE") != -1) ? true : false,
		isWin : (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false,
		isOpera : (navigator.userAgent.indexOf("Opera") != -1) ? true : false,
		
		controlVersion : function() {
			var version;
			var axo;
			var e;
			
			try {
				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
				version = axo.getVariable("$version");
			}
			catch(e) {}
			
			if(!version) {
				try {
					axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
					version = "WIN 6,0,21,0";
					axo.AllowScriptAccess = "always";
					version = axo.getVariable("$version");
				}
				catch(e) {}
			}
			
			if(!version) {
				try {
					axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
					version = axo.getVariable("$version");
				}
				catch(e) {};
			}
			
			if(!version) {
				try {
					axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
					version = "WIN 3,0,18,0";
				}
				catch(e) {};
			}
			
			if(!version) {
				try {
					axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
					version = "WIN 2,0,0,11";
				}
				catch(e) {
					version = -1;
				};
			}
			
			return version;
		},
		
		getSwfVer : function() {
			var flashVer = -1;
			
			if(navigator.plugins != null && navigator.plugins.length > 0) {
				if(navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
					var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
					var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
					var descArray = flashDescription.split(" ");
					var tempArrayMajor = descArray[2].split(".");			
					var versionMajor = tempArrayMajor[0];
					var versionMinor = tempArrayMajor[1];
					var versionRevision = descArray[3];
					if (versionRevision == "") {
						versionRevision = descArray[4];
					}
					if (versionRevision[0] == "d") {
						versionRevision = versionRevision.substring(1);
					} else if (versionRevision[0] == "r") {
						versionRevision = versionRevision.substring(1);
						if (versionRevision.indexOf("d") > 0) {
							versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
						}
					}
					var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
				}
			} else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
			else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
			else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
			else if ( isIE && isWin && !isOpera ) {
				flashVer = this.controlVersion();
			}
			return flashVer;
		},
		
		detectFlashVer: function(reqMajorVer, reqMinorVer, reqRevision){
			var versionStr = this.getSwfVer();
			if (versionStr == -1) {
				return false;
			}
			else 
				if (versionStr != 0) {
					if (isIE && isWin && !isOpera) {
						// Given "WIN 2,0,0,11"
						tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"]
						tempString = tempArray[1]; // "2,0,0,11"
						versionArray = tempString.split(","); // ['2', '0', '0', '11']
					}
					else {
						versionArray = versionStr.split(".");
					}
					var versionMajor = versionArray[0];
					var versionMinor = versionArray[1];
					var versionRevision = versionArray[2];
					
					// is the major.revision >= requested major.revision AND the minor version >= requested minor
					if (versionMajor > parseFloat(reqMajorVer)) {
						return true;
					}
					else 
						if (versionMajor == parseFloat(reqMajorVer)) {
							if (versionMinor > parseFloat(reqMinorVer)) 
								return true;
							else 
								if (versionMinor == parseFloat(reqMinorVer)) {
									if (versionRevision >= parseFloat(reqRevision)) 
										return true;
								}
						}
					return false;
				}
			return true;
		},
		
		AC_AddExtension : function(src, ext) {
			if (src.indexOf('iss.php?') != -1)
				return src;
			else if (src.indexOf('im_') == 0)
				return src;
			else if (src.indexOf('?') != -1)
				return src.replace(/\?/, ext+'?'); 
			else
				return src + ext;
		},
		
		AC_Generateobj : function(objAttrs, params, embedAttrs) {
			var str = '';
			if (isIE && isWin && !isOpera) {
				str += '<object ';
				for (var i in objAttrs)
					str += i + '="' + objAttrs[i] + '" ';
				str += '>';
				for (var i in params)
					str += '<param name="' + i + '" value="' + params[i] + '" /> ';
				str += '</object>';
			}
			else {
				str += '<embed ';
				for (var i in embedAttrs)
					str += i + '="' + embedAttrs[i] + '" ';
				str += '> </embed>';
			}
			return str;
		},
		
		AC_FL_RunContent : function () {
			var ret = this.Ac_GetArgs(arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000", "application/x-shockwave-flash");
			var out = this.AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
			return out;
		},
		
		AC_SW_RunContent : function() {
			var ret = this.AC_GetArgs(arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000", null);
			var out = this.AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
			return out;
		},
		
		AC_GetArgs : function(args, ext, srcParamName, classid, mimeType) {
			var ret = new Object();
			ret.embedAttrs = new Object();
			ret.params = new Object();
			ret.objAttrs = new Object();
			for (var i=0; i < args.length; i=i+2) {
				var currArg = args[i].toLowerCase();
				switch (currArg) {
					case "classid":
						break;
					case "pluginspage":
						ret.embedAttrs[args[i]] = args[i+1];
						break;
					case "src":
					case "movie":
						args[i+1] = this.AC_AddExtension(args[i+1], ext);
						ret.embedAttrs["src"] = args[i+1];
						ret.params[srcParamName] = args[i+1];
						break;
					case "onafterupdate":
					case "onbeforeupdate":
					case "onblur":
					case "oncellchange":
					case "onclick":
					case "ondblclick":
					case "ondrag":
					case "ondragend":
					case "ondragenter":
					case "ondragleave":
					case "ondragover":
					case "ondrop":
					case "onfinish":
					case "onfocus":
					case "onhelp":
					case "onmousedown":
					case "onmouseup":
					case "onmouseover":
					case "onmousemove":
					case "onmouseout":
					case "onkeypress":
					case "onkeydown":
					case "onkeyup":
					case "onload":
					case "onlosecapture":
					case "onpropertychange":
					case "onreadystatechange":
					case "onrowsdelete":
					case "onrowenter":
					case "onrowexit":
					case "onrowsinserted":
					case "onstart":
					case "onscroll":
					case "onbeforeeditfocus":
					case "onactivate":
					case "onbeforedeactivate":
					case "ondeactivate":
					case "type":
					case "codebase":
					case "id":
						ret.objAttrs[args[i]] = args[i+1];
						break;
					case "width":
					case "height":
					case "align":
					case "vspace": 
					case "hspace":
					case "class":
					case "title":
					case "accesskey":
					case "name":
					case "tabindex":
						ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
						break;
					default:
						ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
				}
			}
			ret.objAttrs["classid"] = classid;
			if(mimeType) ret.embedAttrs["type"] = mimeType;
			return ret;
		}
	}
}
