(function(){
	function getCurrentScriptUrl() {
		var scripts = document.getElementsByTagName("script");
		return scripts[scripts.length - 1].src;
	}
	
	function asQueryParams(json) {
		var queryFragment = "";
		for(x in json) {
			if(json[x] != null && typeof json[x] != "function") {
				queryFragment += "&"+x+"="+escape(json[x].toString());
			}
		}
		return queryFragment;
	}
	function getQueryParam(param) {
		var match = scriptUrl.match(new RegExp("[&?]"+param+"=([^$&]*)"));
		return match ? match[1] : null;
	}	
	
	function cleanElem(e) {
		e.style.position = "static";
		e.style.float = "";
		e.style.padding = "0";
		e.style.margin = "0";
		e.style.border = "0";
		e.style.lineHeight = "0";
		e.style.fontSize = "0"
	    return e;
	}
	
	//http://dean.edwards.name/weblog/2006/06/again/
	var readyFns = [];
	var isReady = false;
	function init() {
	  if (arguments.callee.done) return;
	  arguments.callee.done = true;
	  // do your thing
	  isReady = true;
	  for(var i=0;i<readyFns.length;i++) readyFns[i]();
	}
	if (document.addEventListener) {
	  document.addEventListener('DOMContentLoaded', init, false);
	}
	(function() {
	  /*@cc_on
	  if (document.body) {
	    try {
	      document.createElement('div').doScroll('left');
	      return init();
	    } catch(e) {}
	  }
	  /*@if (false) @*/
	  if (/loaded|complete/.test(document.readyState)) return init();
	  /*@end @*/
	  if (!init.done) setTimeout(arguments.callee, 50);
	})();
	var _prevOnload = window.onload;
	window.onload = function() {
	  if (typeof _prevOnload === 'function') _prevOnload();
	  init();
	};
	
	function onLoad(callback) {
		if(isReady) callback();
		else readyFns.push(callback);
	}
	
	var scriptUrl = getCurrentScriptUrl(),
		widgetsRoot = scriptUrl.substring(0,scriptUrl.indexOf("pf-widget-loader.js"));
		
	var PF_KEY = getQueryParam("key"),
		DEFAULT_WIDTH = 205,
		DEFAULT_HEIGHT = 250,
		PDS = window.PDS = window.PDS || {};

	PDS.Widgets = PDS.Widgets || {};
	
	PDS.Widgets.getKey = function() {
		return PF_KEY;
	};
	PDS.Widgets.load = function(widgetId,version,target,config) {
		if(!widgetId || !version) throw("Please specify the PriceFinder Widget ID and version");
		if(!target) throw("Please specify the target id/element for the PriceFinder Widget");
		onLoad(function(){
			target = (typeof target == "string" ? document.getElementById(target) : target);
			target.className = "pf-widget-container";
			
			var innerContainer = document.createElement("div");
			innerContainer.style.position = "relative";
			innerContainer.style.height = "100%";
			target.appendChild(innerContainer);
			
			config = config || {};
			var iframe = cleanElem(document.createElement("iframe"));
		    iframe.marginHeight = "0";
		    iframe.marginWidth = "0";
		    iframe.frameBorder="0";
		    iframe.scrolling = "no";
		    iframe.style.border = "0";
		    iframe.style.backgroundColor = "transparent";
		    iframe.allowTransparency = "true";
			innerContainer.appendChild(iframe);
	
			var footer = cleanElem(document.createElement("div"));
			footer.className = "pf-widget-footer";
			footer.style.position = "absolute";
			footer.style.height = "10px";
			footer.style.width = "100%";
			footer.style.left = "0";
			footer.style.bottom = "0";
			innerContainer.appendChild(footer);
			
			var terms = cleanElem(document.createElement("a"));
			terms.innerHTML = "Terms &amp; Conditions";
			if(config.state && config.state == 'WA') {
				terms.href = "http://www.reiwa.com.au";
			} else {
				terms.href = "http://www.pricefinder.com.au/terms.html";
			}				
			terms.target = "_BLANK";
			terms.style.margin = "0 2px";
			terms.style.color = "#000000";
			terms.style.textDecoration = "none";
			terms.style.fontFamily = "Verdana,Arial,sans-serif";
			terms.style.fontSize = "8px";
			terms.style.lineHeight = "8px";
			footer.appendChild(terms);
			
			var getwidget = cleanElem(document.createElement("a"));
			getwidget.innerHTML = "Get this widget";
			//getwidget.href = "http://www.pricefinder.com.au/getwidget.html?widgetId="+widgetId+"&referrer-key="+PF_KEY;
			getwidget.href = "http://www.pricefinder.com.au/?widgetId="+widgetId+"&referrer-key="+PF_KEY;
			getwidget.target = "_BLANK";
			getwidget.style.margin = "0 2px";
			getwidget.style.color = "#000000";
			getwidget.style.position = "absolute";
			getwidget.style.right = "0";
			getwidget.style.textDecoration = "none";
			getwidget.style.fontFamily = "Verdana,Arial,sans-serif";
			getwidget.style.fontSize = "8px";
			getwidget.style.lineHeight = "8px";
			footer.appendChild(getwidget);			
	
			iframe.width = "100%";
			iframe.height = innerContainer.offsetHeight - footer.offsetHeight;
			iframe.src = widgetsRoot+"pf-widget.html?key="+PF_KEY
				+"&widgetId="+widgetId
				+"&version="+version+asQueryParams(config)
				+"&referrer="+document.domain;
		});
	};
})();