// AdMob Publisher Code
// Language: webOS SDK
// Version: 20091118
// Copyright AdMob, Inc., All rights reserved
// http://code.google.com/p/admob-webos/
/**
* Copyright (c) 2009 AdMob, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
if (typeof AdMob == 'undefined') {
var AdMob = {};
}
AdMob.ad = function() {
var admob_url = 'http://r.admob.com/ad_source.php';
var pub_id;
var udid = null;
var bg_color;
var text_color;
var tiles = ['chat', 'affilateoffers', 'contests', 'generic', 'healthfitness', 'toolsutilities', 'portal2'];
var armor = 'clear:none;outline:none;margin:0;border:none;'; // mild css armor for main div
var cpc_template = new Template([
'
',
'',
'
#{text}
',
'
Ads by AdMob
',
'
',
'',
''
].join(''));
var cpm_template = new Template([
' ',
'
',
'
'
].join(''));
var test_mode;
return {
initialize: function(options) {
pub_id = options.pub_id;
if(pub_id == null) {
Mojo.Log.info('AdMob Publisher ID required.');
return;
}
test_mode = options.test_mode;
bg_color = options.bg_color || '#fff';
text_color = options.text_color || '#000';
if(udid === null) {
new Mojo.Service.Request('palm://com.palm.preferences/systemProperties', {
method: "Get",
parameters: {
"key": "com.palm.properties.nduid"
},
onSuccess: (function(response){
udid = response['com.palm.properties.nduid'];
}).bind(this)
});
}
},
request: function(options) {
Mojo.Log.info('AdMob Ad Request Pub Id: ', pub_id);
var params = {
s: pub_id,
u: navigator.userAgent, // user agent
ex: 1, // use client's ip address for i field
o: udid, // uuid
v: '20091118-WEBOSSDK-3cd2b53620088ef8',
f: 'jsonp'
}
if(test_mode) params.m = 'test';
var request = new Ajax.Request(admob_url, {
parameters: params,
onSuccess: function(response) {
var ad = response.responseText.evalJSON();
if (ad.text) {
Mojo.Log.info('AdMob Ad Request WIN!');
var div = new Element('div', {
className: '_AdMobAd',
style: armor + 'width: 312px; height: 40px; padding: 4px; background-color: ' + bg_color
});
div.writeAttribute('rel', ad.url);
div.observe('click', (function(e) {
var sr = new Mojo.Service.Request('palm://com.palm.applicationManager', {
method: 'open',
parameters: {
id: 'com.palm.app.browser',
params: {
target: e.findElement('div._AdMobAd').getAttribute('rel')
}
}
});
}).bind(this));
var ad_markup = null;
if (!ad[20] && ad.banner) { // banner ad
ad_markup = cpm_template.evaluate(ad);
} else { // cpc ad
ad_markup = cpc_template.evaluate({
bg_color: bg_color,
text_color: text_color,
text: ad.text,
url: ad.url,
tile: tiles[Math.floor(Math.random() * tiles.length)]
});
}
div.update(ad_markup);
options.onSuccess(div);
} else {
Mojo.Log.info('AdMob Ad Request FAIL - no ad received!');
options.onFailure();
}
},
onFailure: function(response) {
Mojo.Log.info('AdMob Ad Request FAIL - no response from server!');
if(options.onFailure) options.onFailure();
}
});
}
};
}();