﻿

﻿

var FNSTD = (function () {
	var tagSettingProps = ['target', 'clicktag'];

	function FNSTD(options) {
		this.settings = options || {};
		this.scriptTag = getScriptTag();
		var tagSettings = getTagSettings(this.scriptTag);
		for (var p in tagSettings) {
			var pval = tagSettings[p];
			if (pval && pval != '')
				this.settings[p] = pval;
		}
	}

	var fnstd = FNSTD.prototype;

	function genWrapperId() {
		var id = null;
		do {
			var num = Math.floor((Math.random()*10000)+1);
			id = 'fnstd_' + num;
		} while (document.getElementById(id))
		
		return id;
	}

	function buildQueryParams(map) {
		if (!map)
			return '';
		var qsParts = [];
		for (var p in map) {
			var pval = map[p];
			if (pval && pval != '')
				qsParts.push(encodeURIComponent(p) + '=' + encodeURIComponent(pval));
		}
		return qsParts.join('&');
	}

	function getScriptTag() {
		if (document.currentScript)
			return document.currentScript;
		else {
			var scripts = document.getElementsByTagName("script");
			return scripts[scripts.length - 1];
		}
	}

	function getTagSettings(tag) {
		var tagSettings = {};
		for (var i = 0; i < tagSettingProps.length; ++i) {
			var p = tagSettingProps[i];
			tagSettings[p] = tag.getAttribute('data-' + p);
		}
		return tagSettings;
	};

	function postMessageSupported() {
		return typeof window.postMessage == 'function';
	}

	fnstd.getTargetingSettings = function() {
		return {
			'target': this.settings['target'],
			'clicktag': this.settings['clicktag']
		};
	}

	fnstd.getIframeUrl = function() {
		var url = this.settings.contentUrl;
		if (!postMessageSupported()) {
			var qts = buildQueryParams(this.getTargetingSettings());
			if (qts != '')
				url += (url.indexOf('?') > 0 ? '&' : '?') + qts;
		}
		return url;
	};

	fnstd.createOnload = function () {
		var msg = JSON.stringify(this.getTargetingSettings());
		var wrapper = this.wrapper;
		return function() {
			wrapper.contentWindow.postMessage(msg, '*');
		};
	};

	fnstd.writeIframe = function () {
		var settings = this.settings;
		if (!(settings.contentUrl && settings.width && settings.height))
			return;

		this.wrapperId = genWrapperId();
		var url = this.getIframeUrl();
		var iframeHtml = '<iframe id="' + this.wrapperId + '" src="' + url + '" style="margin: 0; padding: 0; border: none; overflow: hidden; width: ' + settings.width + 'px; height: ' + settings.height + 'px" frameBorder="0" scrolling="no"><' + '/iframe>';
		document.write(iframeHtml);
		this.wrapper = document.getElementById(this.wrapperId);
		if (this.wrapper && postMessageSupported())
			this.wrapper.onload = this.createOnload();
	};

	return FNSTD;

})();




(function() {
	var options = {"contentUrl": "http://td.findnsave.com/ntd/smartsource/300x250/content/?mid=110002&theme=grayflat", "width": "300", "clicktag": null, "target": "_top", "height": "250"};
	var td = new FNSTD(options);
	td.writeIframe();
})();


