/*
    24019103799
    Juneau Empire
        Classifieds: 20214501
        Front Page: 20201001
        Statehood: (50th anniversary stuff), ccc: statehood
        Travidia: ccc travidia
        TV: Entertainment -> TV (20269001)
    Juneau Empire - Capital City Weekly
    Juneau Empire - Homes
*/

mmo = new Object();
mmo.tmp = new Object();
mmo.translate = new Object();

mmo.metadata = new Object();
mmo.metadata.content_topics = new Array();
mmo.metadata.content_types = new Array();
mmo.metadata.custom_sections = new Array();
mmo.metadata.custom_content_categories = new Array();
mmo.metadata.gender = null;
mmo.metadata.age_range = null;
mmo.metadata.income_range = null;
mmo.metadata.city = null;
mmo.metadata.zipcode = null;
mmo.metadata.country = null;
mmo.metadata.site_name = "Juneau Empire";
mmo.metadata.pub_id = "24019103799";
mmo.metadata.ad_system = 'OAS';
mmo.metadata.container_type = 'js';

// define the weighting of the rotation, should have same amount of values as size for
// a position, percentage is calced by difference between number and previous number (or 0), ends at 100
mmo.translate.weight = {};

// define translations, data structures used to translated between positions and sizes, placements, etc 
mmo.translate.size = {};
mmo.translate.size['default'] = {};
mmo.translate.size['default'].TopLeft = ['728x90'];
mmo.translate.size['default'].Middle = ['300x250'];
mmo.translate.size['default'].Right = ['235x220'];
mmo.translate.size['default'].Frame1 = ['160x600'];
mmo.translate.size['default'].Bottom = ['728x90'];

mmo.translate.size['spotted'] = {};
mmo.translate.size['spotted'].TopLeft = ['728x90'];
mmo.translate.size['spotted'].Middle = ['160x600'];
mmo.translate.size['spotted'].Frame1 = ['300x250'];
mmo.translate.size['spotted'].Bottom = ['728x90'];

// translate so that site names with identical values aren't duplicated
mmo.translate.site = {};

// translation between placement and position
mmo.translate.placement = {};
mmo.translate.placement['default'] = {};
mmo.translate.placement['default'].TopLeft = 'ipatf';
mmo.translate.placement['default'].Middle = 'ipbtf';
mmo.translate.placement['default'].Right = 'ipbtf';
mmo.translate.placement['default'].Frame1 = 'ipstf';
mmo.translate.placement['default'].Bottom = 'ipbtf';

mmo.translate.placement['spotted'] = {};
mmo.translate.placement['spotted'].TopLeft = 'ipatf';
mmo.translate.placement['spotted'].Middle = 'ipstf';
mmo.translate.placement['spotted'].Frame1 = 'ipbtf';
mmo.translate.placement['spotted'].Bottom = 'ipbtf';

// used to set custom content categories by ad spot
mmo.translate.categories = {};
mmo.translate.categories['default'] = {};

mmo.debug = false;
mmo.ad_spots_show_info = false;

/**
 * Used to swap size, placement and category data
 * replace dest with data in src
 */

mmo.replace_meta = function(dest, src)
{
    if (mmo.translate.size[dest] && mmo.translate.size[src]) 
    {
        mmo.translate.size[dest] = mmo.translate.size[src];
    }
    if (mmo.translate.placement[dest] && mmo.translate.placement[src]) 
    {
        mmo.translate.placement[dest] = mmo.translate.placement[src];
    }
    if (mmo.translate.categories[dest] && mmo.translate.categories[src]) 
    {
        mmo.translate.categories[dest] = mmo.translate.categories[src];
    }
}

/**
 * Displays an error message, will typically result in an alert() during development and
 * be modified to a NO-OP on production release
 */
mmo.error = function(str)
{
	alert(str);
}

/**
 * Removes the specified value from the list stored under the given key
 * Will remove all instances of specified value
 */
mmo.remove = function(key, value)
{
	var i;
	if (!mmo.metadata[key])
		mmo.error('Invalid metadata key provided: ' + key);
	else
	{
		for (i = 0; i < mmo.metadata[key].length; ++i)
		{
			if (mmo.metadata[key][i] == value)
			{
				mmo.metadata[key].splice(i, 1);
				--i;
			}
		}
	}
}

/**
 * Add specified value to list stored under the given key
 * Does not check for duplicates
 */
mmo.add = function(key, value)
{
	if (!mmo.metadata[key])
		mmo.error('Invalid metadata key provided: ' + key);
	else
		mmo.metadata[key].push(value);
}

/**
 * Set the value stored under the given key to the given value
 */
mmo.set = function(key, value)
{
	if (!mmo.metadata[key])
		mmo.error('Invalid metadata key provided: ' + key);
	else
		mmo.metadata[key] = value;
}

/**
 * List the value(s) stored under the given key
 */
mmo.list = function(key)
{
	var i;
	var respStr = '';
	if (!mmo.metadata[key])
		mmo.error('Invalid metadata key provided: ' + key);
	else if (typeof(mmo.metadata[key]) == 'object')
	{
		for (i in mmo.metadata[key])
		{
			respStr += ', ' + mmo.metadata[key][i];
		}
		alert (respStr.substr(2));
	}
	else
		alert (mmo.metadata[key]);
}

/**
 * Write an debugging ad spot call for the given position for the given ad system
 */
mmo.write_ad_spot_info = function(position)
{
	if ('OAS' == mmo.metadata.ad_system)
	{
		document.write('<div style="text-align: left; border: solid 1px #900; background-color: #eee">ad spot ' + position + '<br>' + OAS_sitepage + '</div>');
	}
	else if ('YAHOO' == mmo.metadata.ad_system)
	{
        var key_trans_slot =  {'ad_size_list' : 'Sizes:', 'ad_delivery_mode' : 'Placement', 'cstm_content_cat_list' : 'CCC', 'content_type_list': 'Content Types'};
        var key_trans_global = {'content_topic_id_list' : 'Topics', 'cstm_sctn_list' : 'Custom Sections', 'site_name' : 'Publication'};

		document.write('<div style="z-index: 10; text-align: left; overflow: auto; border: solid 1px #900; background-color: #eee; color: #000"><strong>ad spot ' + position + '</strong><br>');
		for (key in key_trans_slot)
		{
			if (typeof(yld_mgr.slots[position][key]) != 'object')
			{
				document.write('<strong>' + key_trans_slot[key] + '</strong>: ' + yld_mgr.slots[position][key] + '<br>');
			}
			else if (typeof(yld_mgr.slots[position][key]) == 'object')
			{
				document.write('<strong>' + key_trans_slot[key] + '</strong>:<span style="padding-left: 1em;">');
				for (subkey in yld_mgr.slots[position][key])
				{
                    if (typeof(yld_mgr.slots[position][key][subkey]) != 'object' && 
                    typeof(yld_mgr.slots[position][key][subkey]) != 'function')
                    {
					    document.write(yld_mgr.slots[position][key][subkey] + ', ');
                    }
				}
				document.write('</span><br>');
			}
		}

		for (key in key_trans_global)
		{
			if (typeof(yld_mgr[key]) != 'object')
			{
				document.write('<strong>' + key_trans_global[key] + '</strong>: ' + yld_mgr[key] + '<br>');
			}
			else 
			{
				document.write('<strong>' + key_trans_global[key] + '</strong>:<span style="padding-left: 1em;">');
				for (subkey in yld_mgr[key])
				{
                    if (typeof(yld_mgr[key][subkey]) != 'object' && 
                    typeof(yld_mgr[key][subkey]) != 'function')
                    {
					    document.write(yld_mgr[key][subkey] + ', ');
                    }
				}
				document.write('</span><br>');
			}
		}
		document.write('</div>');
	}
}

/**
 * Call the active ad system's ad placement function for the given position
 */
mmo.write_ad_spot = function(position)
{
	if (mmo.ad_spots_show_info)
	{
		mmo.write_ad_spot_info(position);
	}
	else if ('OAS' == mmo.metadata.ad_system)
	{
		(window.OAS_version >= 11) ? OAS_RICH(position) : OAS_NORMAL(position);
	}
	else if ('YAHOO' == mmo.metadata.ad_system)
	{
		yld_mgr.place_ad_here(position);
	}

	if (mmo.debug) mmo.alert_metadata();
}

/**
 * Perform the active ad system's setup JavaScript. This is usually placed in the HEAD portion
 * of the document. Should be called after all setup parameters have been set.
 */
mmo.ad_system_setup = function()
{
	if ('OAS' == mmo.metadata.ad_system)
	{
		OAS_query = '';
		OAS_target = '_new';
		OAS_version = 10;
		OAS_rn = '001234567890'; OAS_rns = '1234567890';
		OAS_rn = new String (Math.random()); OAS_rns = OAS_rn.substring(2, 11);
		OAS_NORMAL = function (pos) {
			document.write('<a href="' + OAS_url + 'click_nx.ads/' + OAS_sitepage + '/1' + OAS_rns + '@' + OAS_listpos + '!' + pos + '?' + OAS_query + '" target=' + OAS_target + '>');
			document.write('<img src="' + OAS_url + 'adstream_nx.ads/' + OAS_sitepage + '/1' + OAS_rns + '@' + OAS_listpos + '!' + pos + '?' + OAS_query + '" border=1></A>');
		}

		OAS_version = 11;
		if (navigator.userAgent.indexOf('Mozilla/3') != -1 || navigator.userAgent.indexOf('Mozilla/4.0 WebTV') != -1)
			OAS_version = 10;
		if (OAS_version >= 11)
			document.write('<scr' + 'ipt language="JavaScript1.1" src="' + OAS_url + 'adstream_mjx.ads/' + OAS_sitepage + '/1' + OAS_rns + '@' + OAS_listpos + '?' + OAS_query + '"><\/SCRIPT>');

		document.write('');
	}
	else if ('YAHOO' == mmo.metadata.ad_system)
	{
		yld_mgr = {};
		yld_mgr.container_type=mmo.metadata.container_type;
		yld_mgr.request_type="ac";
		yld_mgr.pub_id=mmo.metadata.pub_id;
		yld_mgr.site_name=mmo.metadata.site_name;
		yld_mgr.content_topic_id_list = mmo.metadata.content_topics;
		yld_mgr.content_type_list = mmo.metadata.content_types;
		yld_mgr.cstm_content_cat_list = mmo.metadata.custom_content_categories;
		yld_mgr.cstm_sctn_list = mmo.metadata.custom_sections;

		yld_mgr.slots = {};

		OAS_slots = OAS_listpos.split(',');
		for (slot in OAS_slots)
		{
			if (typeof OAS_slots[slot] != 'function')
			{
				yld_mgr.slots[OAS_slots[slot]] = {};
				yld_mgr.slots[OAS_slots[slot]]['ad_size_list'] = mmo.oas_pos_to_size(yld_mgr.site_name, OAS_slots[slot]);
				yld_mgr.slots[OAS_slots[slot]]['ad_delivery_mode'] = mmo.oas_pos_to_placement(yld_mgr.site_name, OAS_slots[slot]);
				yld_mgr.slots[OAS_slots[slot]]['cstm_content_cat_list'] = mmo.oas_pos_to_cat(yld_mgr.site_name, OAS_slots[slot]);
				yld_mgr.slots[OAS_slots[slot]]['content_type_list'] = yld_mgr.content_type_list;
			}
		}

		document.write('<scr' + 'ipt type="text/javascript" src="http://e.yieldmanager.net/script.js"><\/SCR' + 'IPT>');
	}
}

mmo.oas_pos_to_cat = function (site, position) 
{
	var rtn= [];
	var i;
	for (i = 0; i < mmo.metadata.custom_content_categories.length; ++i)
	{
			rtn.push(mmo.metadata.custom_content_categories[i]);
	}
	var sname = (mmo.translate.site[site]) ? mmo.translate.site[site] : site;
	if (!mmo.translate.categories[sname]) sname = 'default';
	if (mmo.translate.categories[sname][position]) 
	{
		for (i = 0; i < mmo.translate.categories[sname][position].length; ++i)
		{
			rtn.push(mmo.translate.categories[sname][position][i]);
		}
	}
	return rtn;
}

mmo.oas_pos_to_size = function (site, position) 
{
	var sname = (mmo.translate.site[site]) ? mmo.translate.site[site] : site;
	var makeFirst;
	if (!mmo.translate.size[sname]) sname = 'default';
	if (!mmo.translate.size[sname][position]) return {};
	if (mmo.translate.size[sname][position].length > 1)
	{
		if (mmo.translate.weight[sname] && mmo.translate.weight[sname][position])
		{
			var rnd = Math.floor(Math.random()*100);
			var i;
			for (i = 0; i < mmo.translate.weight[sname][position].length; ++i)
			{
				if (rnd < mmo.translate.weight[sname][position][i])
				{
					makeFirst = i;
					break;
				}
			}
		}
		else
		{
			makeFirst = Math.floor(Math.random()* mmo.translate.size[sname][position].length);
		}
			mmo.translate.size[sname][position][0] = mmo.translate.size[sname][position][makeFirst];
	}
	return mmo.translate.size[sname][position];
}


mmo.oas_pos_to_placement = function (site, position) 
{
	var defaultReturn = (mmo.ad_spots_show_info) ? 'defaulted to ipbtf' : 'ipbtf';
	var sname = (mmo.translate.site[site]) ? mmo.translate.site[site] : site;
	if (!mmo.translate.placement[sname]) sname = 'default';
	if (!mmo.translate.placement[sname][position]) return defaultReturn;
	return mmo.translate.placement[sname][position];
}

mmo.alert_metadata = function()
{
	var debugStr = '';
	for (key in mmo.metadata)
	{
		debugStr += key + ': ' + mmo.metadata[key] + '\n';
	}

	if (yld_mgr)
	{
		debugStr += '\nYahoo Parameters:\n';
		for (key in yld_mgr) if (typeof( yld_mgr[key]) != 'function') debugStr += key + ': ' + yld_mgr[key] + '\n';
	}
	alert(debugStr);
	mmo.debug = false;
}

/**
 * Define the OAS_AD function to override it and avoid needing to replace these calls
 * in all the pages, also provides a hook for switching systems
 */
function OAS_AD(pos)
{
	mmo.write_ad_spot(pos);
}

mmo.tmp = window.location.search.substring(1, window.location.search.length);

if(mmo.tmp.indexOf('mmo_debug=true') != -1) mmo.debug = true;
if(mmo.tmp.indexOf('mmo_ad_spots=true') != -1) mmo.ad_spots_show_info = true; 
if(mmo.tmp.indexOf('mmo_system=yahoo') != -1) mmo.metadata.ad_system = 'YAHOO'; 
if(mmo.tmp.indexOf('mmo_system=oas') != -1) mmo.metadata.ad_system = 'OAS'; 
if(mmo.tmp.indexOf('mmo_ccc=') != -1) {
	var start;
	var end;
	start = mmo.tmp.indexOf('mmo_ccc=') + 8;
	end = mmo.tmp.indexOf('&', start);
	if (end == -1) end = mmo.tmp.length;
	mmo.metadata.custom_content_categories.push(mmo.tmp.substring(start, end));
}

// END ASP.JS

