﻿/*
General purpose library for Danbolig to handle flash inclusion.
If you have to change library, and  therefore reimplement this,
just add a class in Danbolig.Flash implementing a static method
loadFlash, with the same arguments. Then do:

	Danbolig.Flash.Library = Danbolig.Flash.MyFantasticLibrary;

@Author: Glenn Nilsson (wailqill)
*/
(function() {
	
	window.Danbolig = window.Danbolig || {};
	Danbolig.Flash = function(elm, swf, options) {
		
		// setting options
		var o = this.options = {};
		o.width = options.width || "432";
		o.height = options.height || "300";
		o.flashvars = options.flashvars || {};
		o.params = options.params || {};
		o.params.wmode = o.params.wmode || "opaque"; // for not always putting flash on top.
		o.attributes = options.attributes || {};
		o.min_version = options.min_version || "8.0.0";
		o.expressinstall = typeof(options.expressinstall) == "undefined" ? true : options.expressinstall;
		
		// initialize
		if (Danbolig.Flash.ensureClientIpNotBlocked()) {
			var elm = typeof(elm) == "string" ? document.getElementById(elm) : elm;
			if (elm && elm.nodeType === 1) {
				Danbolig.Flash.Library.loadFlash(elm, swf, o);
			}
		}
	};
	Danbolig.Flash.BLOCKED_IPS = ["127.0.0.1", "10.0.1.1", "213.150.50.18", "80.166.120.182", "80.162.186.26","192.168.205.","213.150.50.","213.150.45"];
	Danbolig.Flash.ensureClientIpNotBlocked = function() {
		if (typeof(GetClientIp) == "function") {
			var ip = GetClientIp();
			for (var i=0; i<this.BLOCKED_IPS.length; i++) if (ip.indexOf(this.BLOCKED_IPS[i]) == 0) return false;
		}
		return true;
	};
	
	
	/**
	SWFObject 2 implementation
	http://code.google.com/p/swfobject/
	**/
	Danbolig.Flash.SWFObject2Library = {
		base_url: "/ui/utils/flash/swfobject2/",
		loaded: false,
		loadDependencies: function(callback) {
			document.write("<scr" + "ipt type='text/javascript' src='" + this.base_url + "swfobject.js'></scr" + "ipt>");
		},
		waitForDependencies: function(callback, resetCallBack) {
			var self = Danbolig.Flash.SWFObject2Library;
			if (!self._callback || resetCallBack)
				self._callback = callback;
			if (window.swfobject) {
				self._callback();
			} else {
				setTimeout(function() {
					Danbolig.Flash.SWFObject2Library.waitForDependencies(Danbolig.Flash.SWFObject2Library._callback);
				}, 50);
			}
		},
		loadFlash: function(elm, swf, options) {
			if (!elm.id) elm.id = "anon_flash_element_" + Math.floor(100000*Math.random());
			this.waitForDependencies(function() {
				swfobject.embedSWF(swf, elm.id, options.width, options.height, options.min_version, Danbolig.Flash.SWFObject2Library.base_url + "expressInstall.swf", options.flashvars, options.params, options.attributes);
			}, true);
		}
	};
	
	/** Set working library to SWFObject 2 **/
	Danbolig.Flash.Library = Danbolig.Flash.SWFObject2Library;
	
	Danbolig.Flash.Library.loadDependencies();
	
})();