mmo = 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 ="St Augustine Record - Eco Latino";

mmo.tmp = new Object();
mmo.translate = new Object(); // used for mapping between various data portions
mmo.metadata.ad_system = 'YAHOO';
mmo.ad_spots_show_info = false;
mmo.debug = false;

/**
 * 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="border: solid 1px #900; background-color: #eee">ad spot ' + position + '<br>' + OAS_sitepage + '</div>');
    }
    else if ('YAHOO' == mmo.metadata.ad_system)
    {
        document.write('<div style="border: solid 1px #900; background-color: #eee">ad spot ' + position + '<br>');
        document.write('<b>Position Specifc Info</b><br>');
        for (key in yld_mgr.slots[position])
        {
            if (typeof(yld_mgr.slots[position][key]) != 'function' && typeof(yld_mgr.slots[position][key]) != 'object')
            {
                document.write(key + ': ' + yld_mgr.slots[position][key] + '<br>');
            }
            else if (typeof(yld_mgr.slots[position][key]) == 'object')
            {
                document.write('' + key + ':<span style="padding-left: 1em;">');
                for (subkey in yld_mgr.slots[position][key])
                {
                    if (typeof(yld_mgr.slots[position][key][subkey]) != 'function' && typeof(yld_mgr.slots[position][key][subkey]) != 'object')
                    {
                        document.write(yld_mgr.slots[position][key][subkey] + ', ');
                    }
                }
                document.write('</span><br>');
            }
        }

        document.write('<b>Global Info</b><br>');
        for (key in yld_mgr)
        {
            if (typeof(yld_mgr[key]) != 'function' && typeof(yld_mgr[key]) != 'object')
            {
                document.write(key + ': ' + yld_mgr[key] + '<br>');
            }
            else if (typeof(yld_mgr[key]) == 'object')
            {
                document.write('' + key + ':<span style="padding-left: 1em;">');
                for (subkey in yld_mgr[key])
                {
                    if (typeof(yld_mgr[key][subkey]) != 'function' && typeof(yld_mgr[key][subkey]) != 'object')
                    {
                        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)
    {
        (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="js";
        yld_mgr.request_type="ac";
        yld_mgr.pub_id="21010703002";
        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'] = yld_mgr.cstm_content_cat_list;
				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_size = function (site, position) 
{
    var sname = (mmo.translate.site[site]) ? mmo.translate.site[site] : site;
    if (!mmo.translate.size[sname]) sname = 'default';
    if (!mmo.translate.size[sname][position]) return {};
    return mmo.translate.size[sname][position];
}

mmo.oas_pos_to_placement = function (site, position) 
{
    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 '';
    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'; 

mmo.translate.size = {};
mmo.translate.size['default'] = {};
mmo.translate.size['default'].x02 = ['160x600'];
mmo.translate.size['default'].x01 = ['728x90'];

mmo.translate.site = {};

// translation between placement and position
mmo.translate.placement = {};
mmo.translate.placement['default'] = {};
mmo.translate.placement['default'].x02 = 'ipstf';
mmo.translate.placement['default'].x01 = 'ipbtf';
