if (typeof(WWE) == 'undefined') WWE = {};
if (typeof(WWE.DoubleClick) == 'undefined') {
	WWE.DoubleClick = function() {
		var VERSION = '200803260008';
	
		// Private Variables
		var random = 0;
		var protocol = window.location.protocol;
		var server = 'ad.doubleclick.net';
		var networkID = 'N4675';
		var siteName = '';
		var zoneName = '';
		var keyValues = {};
		var tile = 1;
		var ads = [];

		// Private Methods
		function reset() {
			tile = 1;
			generateRandomNumber();
		}

		function generateRandomNumber() {
			var rn = new String(Math.random());
			random = rn.substring(2, rn.length);
		}

		function buildTag(size, type, dcopt ) {
			var tag = protocol + '//' + server + '/';
			if (type === 'adj' || type === 'adf') { tag += networkID + '/'; }
			tag += type + '/';
			tag += siteName + '/' + zoneName + ';';

			for (keyValue in keyValues) {
				if (typeof(keyValues[keyValue]) != 'string') {
					for (var i = 0; i < keyValues[keyValue].length; i++ ) {
						tag += keyValue + '=' + keyValues[keyValue][i] + ';';
					}
				} else {
					tag += keyValue + '=' + keyValues[keyValue] + ';';
				}
			}

			if (dcopt) { tag += 'dcopt=ist;'; }

			tag += 'tile=' + tile + ';';
			tile++;

			tag += 'sz=' + size + ';';
			tag += 'dcove=d;';
			tag += 'ord=' + random;

			return tag;
		}
		
		
		// Initialization 
		generateRandomNumber();
		
		// Public Methods
		return {
			setValues: function(values) {
				if (typeof(values.siteName) !== 'undefined') { siteName = values.siteName; }
				if (typeof(values.zoneName) !== 'undefined') { zoneName = values.zoneName; }
				if (typeof(values.keyValues) !== 'undefined') { keyValues = values.keyValues; }
			},
			
			addKeyValue: function(key,value) {
				if(typeof(keyValues[key]) === 'undefined') {
					keyValues[key] = value;
				} else if (typeof(keyValues[key]) === 'string') {
					keyValues[key] = [keyValues[key]];
					keyValues[key].push(value);
				} else {
					keyValues[key].push(value);
				}
			},

			renderAd: function(size, dcopt, type) {
				var dims = size.split('x');
				var width = dims[0];
				var height = dims[1];
				var type = type ? type : 'adj';
				
				var tag = buildTag(size,type,dcopt);

				switch (type) {
					case 'adi':
						document.write('<script type="text/javascript">');
						document.write('var adTag = "' + tag + ';dc_seed=";');
						document.write('</scr' + 'ipt>');
						break;
					case 'pfadx':
						document.write('<script type="text/javascript">');
						document.write('var introclip = "' + tag + '";');
						document.write('</scr' + 'ipt>');
						break;
					case 'adf':
						ads.push({id:'galAd'+size, type:type, size:size, dcopt:dcopt});
						document.write('<iframe id="galAd' + size + '" src="' + tag + '" border="0" frameborder="0" width="' + width + '" height="' + height + '" scrolling="no"></iframe>');
						break;
					default:
						document.write('<script type="text/javascript" src="' + tag + '"></scr' + 'ipt>');
						break;
				}
				
			},
			getZoneName: function() {
				return zoneName;
			},
			reloadAds: function() {
				reset();

				ads.each(function(ad) {
					var tag = buildTag(ad.size,ad.type,ad.dcopt);
					$(ad.id).contentWindow.location.replace(tag);					
				});
			}
		};
	}();
}