// Comarquage --Web application to integrate co-branded gadgets in web sites
// By: Valéry Febvre <vfebvre@easter-eggs.com>
//     Emmanuel Raviart <eraviart@easter-eggs.com>
//
// Copyright (C) 2009, 2010 Easter-eggs
// http://www.comarquage.fr/
//
// This file is part of Comarquage.
//
// Comarquage is free software; you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// Comarquage is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.


var gadgets=gadgets||{};gadgets.util=function(){function parseUrlParams(){var query;var l=document.location.href;var queryIdx=l.indexOf("?");var hashIdx=l.indexOf("#");if(hashIdx===-1){query=l.substr(queryIdx+1);}else{query=[l.substr(queryIdx+1,hashIdx-queryIdx-1),"&",l.substr(hashIdx+1)].join("");}
return query.split("&");}
var parameters=null;var features={};var onLoadHandlers=[];var escapeCodePoints={0:false,10:true,13:true,34:true,39:true,60:true,62:true,92:true,8232:true,8233:true};function unescapeEntity(match,value){return String.fromCharCode(value);}
function init(config){features=config["core.util"]||{};}
if(gadgets.config){gadgets.config.register("core.util",null,init);}
return{getUrlParameters:function(){if(parameters!==null){return parameters;}
parameters={};var pairs=parseUrlParams();var unesc=window.decodeURIComponent?decodeURIComponent:unescape;for(var i=0,j=pairs.length;i<j;++i){var pos=pairs[i].indexOf('=');if(pos===-1){continue;}
var argName=pairs[i].substring(0,pos);var value=pairs[i].substring(pos+1);value=value.replace(/\+/g," ");parameters[argName]=unesc(value);}
return parameters;},makeClosure:function(scope,callback,var_args){var baseArgs=[];for(var i=2,j=arguments.length;i<j;++i){baseArgs.push(arguments[i]);}
return function(){var tmpArgs=baseArgs.slice();for(var i=0,j=arguments.length;i<j;++i){tmpArgs.push(arguments[i]);}
return callback.apply(scope,tmpArgs);};},makeEnum:function(values){var obj={};for(var i=0,v;(v=values[i]);++i){obj[v]=v;}
return obj;},getFeatureParameters:function(feature){return typeof features[feature]==="undefined"?null:features[feature];},hasFeature:function(feature){return typeof features[feature]!=="undefined";},registerOnLoadHandler:function(callback){onLoadHandlers.push(callback);},runOnLoadHandlers:function(){for(var i=0,j=onLoadHandlers.length;i<j;++i){onLoadHandlers[i]();}},escape:function(input,opt_escapeObjects){if(!input){return input;}else if(typeof input==="string"){return gadgets.util.escapeString(input);}else if(typeof input==="array"){for(var i=0,j=input.length;i<j;++i){input[i]=gadgets.util.escape(input[i]);}}else if(typeof input==="object"&&opt_escapeObjects){var newObject={};for(var field in input){if(input.hasOwnProperty(field)){newObject[gadgets.util.escapeString(field)]=gadgets.util.escape(input[field],true);}}
return newObject;}
return input;},escapeString:function(str){var out=[],ch,shouldEscape;for(var i=0,j=str.length;i<j;++i){ch=str.charCodeAt(i);shouldEscape=escapeCodePoints[ch];if(shouldEscape===true){out.push("&#",ch,";");}else if(shouldEscape!==false){out.push(str.charAt(i));}}
return out.join("");},unescapeString:function(str){return str.replace(/&#([0-9]+);/g,unescapeEntity);}};}();gadgets.util.getUrlParameters();var gadgets=gadgets||{};gadgets.json=function(){function f(n){return n<10?'0'+n:n;}
Date.prototype.toJSON=function(){return[this.getUTCFullYear(),'-',f(this.getUTCMonth()+1),'-',f(this.getUTCDate()),'T',f(this.getUTCHours()),':',f(this.getUTCMinutes()),':',f(this.getUTCSeconds()),'Z'].join("");};var m={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};function stringify(value){var a,i,k,l,r=/["\\\x00-\x1f\x7f-\x9f]/g,v;switch(typeof value){case'string':return r.test(value)?'"'+value.replace(r,function(a){var c=m[a];if(c){return c;}
c=a.charCodeAt();return'\\u00'+Math.floor(c/16).toString(16)+
(c%16).toString(16);})+'"':'"'+value+'"';case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}
a=[];if(typeof value.length==='number'&&!value.propertyIsEnumerable('length')){l=value.length;for(i=0;i<l;i+=1){a.push(stringify(value[i])||'null');}
return'['+a.join(',')+']';}
for(k in value){if(value.hasOwnProperty(k)){if(typeof k==='string'){v=stringify(value[k]);if(v){a.push(stringify(k)+':'+v);}}}}
return'{'+a.join(',')+'}';}}
return{stringify:stringify,parse:function(text){if(/^[\],:{}\s]*$/.test(text.replace(/\\["\\\/b-u]/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){return eval('('+text+')');}
return false;}};}();var gadgets=gadgets||{};gadgets.rpc=function(){var CALLBACK_NAME='__cb';var DEFAULT_NAME='';var FE_G2C_CHANNEL='__g2c_rpc';var FE_C2G_CHANNEL='__c2g_rpc';var NIX_WRAPPER='GRPC____NIXVBS_wrapper';var NIX_GET_WRAPPER='GRPC____NIXVBS_get_wrapper';var NIX_HANDLE_MESSAGE='GRPC____NIXVBS_handle_message';var NIX_CREATE_CHANNEL='GRPC____NIXVBS_create_channel';var nix_channels={};var services={};var iframePool=[];var relayUrl={};var useLegacyProtocol={};var authToken={};var callId=0;var callbacks={};var setup={};var sameDomain={};var params={};var relayChannel;if(gadgets.util){params=gadgets.util.getUrlParameters();}
authToken['..']=params.rpctoken||params.ifpctok||0;function getRelayChannel(){return typeof window.postMessage==='function'?'wpm':typeof document.postMessage==='function'?'dpm':window.ActiveXObject?'nix':navigator.product==='Gecko'?'fe':'ifpc';}
relayChannel=getRelayChannel();function process(rpc){if(rpc&&typeof rpc.s==='string'&&typeof rpc.f==='string'&&rpc.a instanceof Array){if(authToken[rpc.f]){if(authToken[rpc.f]!==rpc.t){throw new Error("Invalid auth token. "+
authToken[rpc.f]+" vs "+rpc.t);}}
if(rpc.c){rpc.callback=function(result){gadgets.rpc.call(rpc.f,CALLBACK_NAME,null,rpc.c,result);};}
var result=(services[rpc.s]||services[DEFAULT_NAME]).apply(rpc,rpc.a);if(rpc.c&&typeof result!=='undefined'){gadgets.rpc.call(rpc.f,CALLBACK_NAME,null,rpc.c,result);}}}
function setupChannel(){if(relayChannel==='dpm'||relayChannel==='wpm'){window.addEventListener('message',function(packet){process(gadgets.json.parse(packet.data));},false);}
if(relayChannel==='nix'){if(typeof window[NIX_GET_WRAPPER]!=='unknown'){window[NIX_HANDLE_MESSAGE]=function(data){process(gadgets.json.parse(data));};window[NIX_CREATE_CHANNEL]=function(name,channel,token){if(authToken[name]===token){nix_channels[name]=channel;}};var vbscript='Class '+NIX_WRAPPER+'\n '
+'Private m_Intended\n'
+'Private m_Auth\n'
+'Public Sub SetIntendedName(name)\n '
+'If isEmpty(m_Intended) Then\n'
+'m_Intended = name\n'
+'End If\n'
+'End Sub\n'
+'Public Sub SetAuth(auth)\n '
+'If isEmpty(m_Auth) Then\n'
+'m_Auth = auth\n'
+'End If\n'
+'End Sub\n'
+'Public Sub SendMessage(data)\n '
+NIX_HANDLE_MESSAGE+'(data)\n'
+'End Sub\n'
+'Public Function GetAuthToken()\n '
+'GetAuthToken = m_Auth\n'
+'End Function\n'
+'Public Sub CreateChannel(channel, auth)\n '
+'Call '+NIX_CREATE_CHANNEL+'(m_Intended, channel, auth)\n'
+'End Sub\n'
+'End Class\n'
+'Function '+NIX_GET_WRAPPER+'(name, auth)\n'
+'Dim wrap\n'
+'Set wrap = New '+NIX_WRAPPER+'\n'
+'wrap.SetIntendedName name\n'
+'wrap.SetAuth auth\n'
+'Set '+NIX_GET_WRAPPER+' = wrap\n'
+'End Function';try{window.execScript(vbscript,'vbscript');}catch(e){relayChannel='ifpc';}}}}
setupChannel();services[DEFAULT_NAME]=function(){if(window['console']&&window['console']['log']){window['console']['log']('Unknown RPC service: '+this.s);}};services[CALLBACK_NAME]=function(callbackId,result){var callback=callbacks[callbackId];if(callback){delete callbacks[callbackId];callback(result);}};function setupFrame(frameId,token){var frame;if(setup[frameId]){return;}
if(relayChannel==='fe'){try{frame=document.getElementById(frameId);frame[FE_G2C_CHANNEL]=function(args){process(gadgets.json.parse(args));};}catch(e1){}}
if(relayChannel==='nix'){try{frame=document.getElementById(frameId);var wrapper=window[NIX_GET_WRAPPER](frameId,token);frame.contentWindow.opener=wrapper;}catch(e2){}}
setup[frameId]=true;}
function encodeLegacyData(args){var stringify=gadgets.json.stringify;var argsEscaped=[];for(var i=0,j=args.length;i<j;++i){argsEscaped.push(encodeURIComponent(stringify(args[i])));}
return argsEscaped.join('&');}
function emitInvisibleIframe(src){var iframe;for(var i=iframePool.length-1;i>=0;--i){var ifr=iframePool[i];try{if(ifr&&(ifr.recyclable||ifr.readyState==='complete')){ifr.parentNode.removeChild(ifr);if(window.ActiveXObject){iframePool[i]=ifr=null;iframePool.splice(i,1);}else{ifr.recyclable=false;iframe=ifr;break;}}}catch(e){}}
if(!iframe){iframe=document.createElement('iframe');iframe.style.border=iframe.style.width=iframe.style.height='0px';iframe.style.visibility='hidden';iframe.style.position='absolute';iframe.onload=function(){this.recyclable=true;};iframePool.push(iframe);}
iframe.src=src;setTimeout(function(){document.body.appendChild(iframe);},0);}
function callIfpc(targetId,serviceName,from,rpcData,callArgs){var relay=gadgets.rpc.getRelayUrl(targetId);if(!relay){if(window['console']&&window['console']['log']){window['console']['log']('No relay file assigned for IFPC');}}
var src=null;if(useLegacyProtocol[targetId]){src=[relay,'#',encodeLegacyData([from,callId,1,0,encodeLegacyData([from,serviceName,'','',from].concat(callArgs))])].join('');}else{src=[relay,'#',targetId,'&',from,'@',callId,'&1&0&',encodeURIComponent(rpcData)].join('');}
emitInvisibleIframe(src);}
function callNix(targetId,serviceName,from,rpcData){try{if(from!=='..'){var handler=nix_channels['..'];if(!handler&&window.opener&&"GetAuthToken"in window.opener){handler=window.opener;if(handler.GetAuthToken()===authToken['..']){var token=authToken['..'];handler.CreateChannel(window[NIX_GET_WRAPPER]('..',token),token);nix_channels['..']=handler;window.opener=null;}}
if(handler){handler.SendMessage(rpcData);return;}}else{if(nix_channels[targetId]){nix_channels[targetId].SendMessage(rpcData);return;}}}catch(e){}
callIfpc(targetId,serviceName,from,rpcData);}
function callFrameElement(targetId,serviceName,from,rpcData,callArgs){try{if(from!=='..'){var fe=window.frameElement;if(typeof fe[FE_G2C_CHANNEL]==='function'){if(typeof fe[FE_G2C_CHANNEL][FE_C2G_CHANNEL]!=='function'){fe[FE_G2C_CHANNEL][FE_C2G_CHANNEL]=function(args){process(gadgets.json.parse(args));};}
fe[FE_G2C_CHANNEL](rpcData);return;}}else{var frame=document.getElementById(targetId);if(typeof frame[FE_G2C_CHANNEL]==='function'&&typeof frame[FE_G2C_CHANNEL][FE_C2G_CHANNEL]==='function'){frame[FE_G2C_CHANNEL][FE_C2G_CHANNEL](rpcData);return;}}}catch(e){}
callIfpc(targetId,serviceName,from,rpcData,callArgs);}
function callSameDomain(target,rpc){if(typeof sameDomain[target]==='undefined'){sameDomain[target]=false;var targetEl=null;if(target==='..'){targetEl=parent;}else{targetEl=frames[target];}
try{sameDomain[target]=targetEl.gadgets.rpc.receiveSameDomain;}catch(e){}}
if(typeof sameDomain[target]==='function'){sameDomain[target](rpc);return true;}
return false;}
if(gadgets.config){function init(config){if(config.rpc.parentRelayUrl.substring(0,7)==='http://'){relayUrl['..']=config.rpc.parentRelayUrl;}else{var params=document.location.search.substring(0).split("&");var parentParam="";for(var i=0,param;(param=params[i]);++i){if(param.indexOf("parent=")===0){parentParam=decodeURIComponent(param.substring(7));break;}}
if(parentParam!==""){relayUrl['..']=parentParam+config.rpc.parentRelayUrl;}}
useLegacyProtocol['..']=!!config.rpc.useLegacyProtocol;}
var requiredConfig={parentRelayUrl:gadgets.config.NonEmptyStringValidator};gadgets.config.register("rpc",requiredConfig,init);}
return{register:function(serviceName,handler){if(serviceName===CALLBACK_NAME){throw new Error("Cannot overwrite callback service");}
if(serviceName===DEFAULT_NAME){throw new Error("Cannot overwrite default service: use registerDefault");}
services[serviceName]=handler;},unregister:function(serviceName){if(serviceName===CALLBACK_NAME){throw new Error("Cannot delete callback service");}
if(serviceName===DEFAULT_NAME){throw new Error("Cannot delete default service: use unregisterDefault");}
delete services[serviceName];},registerDefault:function(handler){services['']=handler;},unregisterDefault:function(){delete services[''];},forceParentVerifiable:function(){if(relayChannel!=='wpm'){relayChannel='ifpc';}},call:function(targetId,serviceName,callback,var_args){++callId;targetId=targetId||'..';if(callback){callbacks[callId]=callback;}
var from='..';if(targetId==='..'){from=window.name;}
var rpc={s:serviceName,f:from,c:callback?callId:0,a:Array.prototype.slice.call(arguments,3),t:authToken[targetId]};if(callSameDomain(targetId,rpc)){return;}
var rpcData=gadgets.json.stringify(rpc);var channelType=relayChannel;if(useLegacyProtocol[targetId]){channelType='ifpc';}
switch(channelType){case'dpm':var targetDoc=targetId==='..'?parent.document:frames[targetId].document;targetDoc.postMessage(rpcData);break;case'wpm':var targetWin=targetId==='..'?parent:frames[targetId];var relay=gadgets.rpc.getRelayUrl(targetId);if(relay){targetWin.postMessage(rpcData,relay);}
break;case'nix':callNix(targetId,serviceName,from,rpcData);break;case'fe':callFrameElement(targetId,serviceName,from,rpcData,rpc.a);break;default:callIfpc(targetId,serviceName,from,rpcData,rpc.a);break;}},getRelayUrl:function(targetId){return relayUrl[targetId];},setRelayUrl:function(targetId,url,opt_useLegacy){relayUrl[targetId]=url;useLegacyProtocol[targetId]=!!opt_useLegacy;},setAuthToken:function(targetId,token){token=token||"";authToken[targetId]=String(token);setupFrame(targetId,token);},getRelayChannel:function(){return relayChannel;},receive:function(fragment){if(fragment.length>4){process(gadgets.json.parse(decodeURIComponent(fragment[fragment.length-1])));}},receiveSameDomain:function(rpc){rpc.a=Array.prototype.slice.call(rpc.a);window.setTimeout(function(){process(rpc);},0);}};}();var shindig=shindig||{};shindig.cookies=shindig.cookies||{};shindig.cookies.JsType_={UNDEFINED:'undefined'};shindig.cookies.isDef=function(val){return typeof val!=shindig.cookies.JsType_.UNDEFINED;};shindig.cookies.set=function(name,value,opt_maxAge,opt_path,opt_domain){if(/;=/g.test(name)){throw new Error('Invalid cookie name "'+name+'"');}
if(/;/g.test(value)){throw new Error('Invalid cookie value "'+value+'"');}
if(!shindig.cookies.isDef(opt_maxAge)){opt_maxAge=-1;}
var domainStr=opt_domain?';domain='+opt_domain:'';var pathStr=opt_path?';path='+opt_path:'';var expiresStr;if(opt_maxAge<0){expiresStr='';}else if(opt_maxAge===0){var pastDate=new Date(1970,1,1);expiresStr=';expires='+pastDate.toUTCString();}else{var futureDate=new Date((new Date).getTime()+opt_maxAge*1000);expiresStr=';expires='+futureDate.toUTCString();}
document.cookie=name+'='+value+domainStr+pathStr+expiresStr;};shindig.cookies.get=function(name,opt_default){var nameEq=name+"=";var cookie=String(document.cookie);for(var pos=-1;(pos=cookie.indexOf(nameEq,pos+1))>=0;){var i=pos;while(--i>=0){var ch=cookie.charAt(i);if(ch==';'){i=-1;break;}}
if(i==-1){var end=cookie.indexOf(';',pos);if(end<0){end=cookie.length;}
return cookie.substring(pos+nameEq.length,end);}}
return opt_default;};shindig.cookies.remove=function(name,opt_path,opt_domain){var rv=shindig.cookies.containsKey(name);shindig.cookies.set(name,'',0,opt_path,opt_domain);return rv;};shindig.cookies.getKeyValues_=function(){var cookie=String(document.cookie);var parts=cookie.split(/\s*;\s*/);var keys=[],values=[],index,part;for(var i=0;part=parts[i];i++){index=part.indexOf('=');if(index==-1){keys.push('');values.push(part);}else{keys.push(part.substring(0,index));values.push(part.substring(index+1));}}
return{keys:keys,values:values};};shindig.cookies.getKeys=function(){return shindig.cookies.getKeyValues_().keys;};shindig.cookies.getValues=function(){return shindig.cookies.getKeyValues_().values;};shindig.cookies.isEmpty=function(){return document.cookie==='';};shindig.cookies.getCount=function(){var cookie=String(document.cookie);if(cookie===''){return 0;}
var parts=cookie.split(/\s*;\s*/);return parts.length;};shindig.cookies.containsKey=function(key){var sentinel={};return shindig.cookies.get(key,sentinel)!==sentinel;};shindig.cookies.containsValue=function(value){var values=shindig.cookies.getKeyValues_().values;for(var i=0;i<values.length;i++){if(values[i]==value){return true;}}
return false;};shindig.cookies.clear=function(){var keys=shindig.cookies.getKeyValues_().keys;for(var i=keys.length-1;i>=0;i--){shindig.cookies.remove(keys[i]);}};shindig.cookies.MAX_COOKIE_LENGTH=3950;Function.prototype.inherits=function(parentCtor){function tempCtor(){};tempCtor.prototype=parentCtor.prototype;this.superClass_=parentCtor.prototype;this.prototype=new tempCtor();this.prototype.constructor=this;};var gadgets=gadgets||{};gadgets.error={};gadgets.error.SUBCLASS_RESPONSIBILITY='subclass responsibility';gadgets.error.TO_BE_DONE='to be done';gadgets.log=function(message){if(window.console&&console.log){console.log(message);}else{var logEntry=document.createElement('div');logEntry.className='gadgets-log-entry';logEntry.innerHTML=message;document.body.appendChild(logEntry);}};gadgets.callAsyncAndJoin=function(functions,continuation,opt_this){var pending=functions.length;var results=[];for(var i=0;i<functions.length;i++){var wrapper=function(index){functions[index].call(opt_this,function(result){results[index]=result;if(--pending===0){continuation(results);}});};wrapper(i);}};gadgets.Extensible=function(){};gadgets.Extensible.prototype.setDependencies=function(dependencies){for(var p in dependencies){this[p]=dependencies[p];}};gadgets.Extensible.prototype.getDependencies=function(name){return this[name];};gadgets.UserPrefStore=function(){};gadgets.UserPrefStore.prototype.getPrefs=function(gadget){throw Error(gadgets.error.SUBCLASS_RESPONSIBILITY);};gadgets.UserPrefStore.prototype.savePrefs=function(gadget){throw Error(gadgets.error.SUBCLASS_RESPONSIBILITY);};gadgets.DefaultUserPrefStore=function(){gadgets.UserPrefStore.call(this);};gadgets.DefaultUserPrefStore.inherits(gadgets.UserPrefStore);gadgets.DefaultUserPrefStore.prototype.getPrefs=function(gadget){};gadgets.DefaultUserPrefStore.prototype.savePrefs=function(gadget){};gadgets.GadgetService=function(){};gadgets.GadgetService.prototype.setHeight=function(elementId,height){throw Error(gadgets.error.SUBCLASS_RESPONSIBILITY);};gadgets.GadgetService.prototype.setTitle=function(gadget,title){throw Error(gadgets.error.SUBCLASS_RESPONSIBILITY);};gadgets.GadgetService.prototype.setUserPref=function(id){throw Error(gadgets.error.SUBCLASS_RESPONSIBILITY);};gadgets.IfrGadgetService=function(){gadgets.GadgetService.call(this);gadgets.rpc.register('resize_iframe',this.setHeight);gadgets.rpc.register('set_pref',this.setUserPref);gadgets.rpc.register('set_title',this.setTitle);gadgets.rpc.register('requestNavigateTo',this.requestNavigateTo);};gadgets.IfrGadgetService.inherits(gadgets.GadgetService);gadgets.IfrGadgetService.prototype.setHeight=function(height){if(height>gadgets.container.maxheight_){height=gadgets.container.maxheight_;}
var element=document.getElementById(this.f);if(element){element.style.height=height+'px';}};gadgets.IfrGadgetService.prototype.setTitle=function(title){var element=document.getElementById(this.f+'_title');if(element){element.innerHTML=title.replace(/&/g,'&amp;').replace(/</g,'&lt;');}};gadgets.IfrGadgetService.prototype.setUserPref=function(editToken,name,value){var id=gadgets.container.gadgetService.getGadgetIdFromModuleId(this.f);var gadget=gadgets.container.getGadget(id);var prefs=gadget.getUserPrefs()||{};for(var i=1,j=arguments.length;i<j;i+=2){prefs[arguments[i]]=arguments[i+1];}
gadget.setUserPrefs(prefs);};gadgets.IfrGadgetService.prototype.requestNavigateTo=function(view,opt_params){var id=gadgets.container.gadgetService.getGadgetIdFromModuleId(this.f);var url=gadgets.container.gadgetService.getUrlForView(view);if(opt_params){var paramStr=gadgets.json.stringify(opt_params);if(paramStr.length>0){url+='&appParams='+encodeURIComponent(paramStr);}}
if(url&&document.location.href.indexOf(url)==-1){document.location.href=url;}};gadgets.IfrGadgetService.prototype.getUrlForView=function(view){if(view==='canvas'){return'/canvas';}else if(view==='profile'){return'/profile';}else{return null;}};gadgets.IfrGadgetService.prototype.getGadgetIdFromModuleId=function(moduleId){return parseInt(moduleId.match(/_([0-9]+)$/)[1],10);};gadgets.LayoutManager=function(){};gadgets.LayoutManager.prototype.getGadgetChrome=function(gadget){throw Error(gadgets.error.SUBCLASS_RESPONSIBILITY);};gadgets.StaticLayoutManager=function(){gadgets.LayoutManager.call(this);};gadgets.StaticLayoutManager.inherits(gadgets.LayoutManager);gadgets.StaticLayoutManager.prototype.setGadgetChromeIds=function(gadgetChromeIds){this.gadgetChromeIds_=gadgetChromeIds;};gadgets.StaticLayoutManager.prototype.getGadgetChrome=function(gadget){var chromeId=this.gadgetChromeIds_[gadget.id];return chromeId?document.getElementById(chromeId):null;};gadgets.FloatLeftLayoutManager=function(layoutRootId){gadgets.LayoutManager.call(this);this.layoutRootId_=layoutRootId;};gadgets.FloatLeftLayoutManager.inherits(gadgets.LayoutManager);gadgets.FloatLeftLayoutManager.prototype.getGadgetChrome=function(gadget){var layoutRoot=document.getElementById(this.layoutRootId_);if(layoutRoot){var chrome=document.createElement('div');chrome.className='gadgets-gadget-chrome';chrome.style.cssFloat='left';layoutRoot.appendChild(chrome);return chrome;}else{return null;}};gadgets.Gadget=function(params){this.userPrefs_={};if(params){for(var name in params)if(params.hasOwnProperty(name)){this[name]=params[name];}}
if(!this.secureToken){this.secureToken='john.doe:john.doe:appid:cont:url:0:default';}};gadgets.Gadget.prototype.getUserPrefs=function(){return this.userPrefs_;};gadgets.Gadget.prototype.setUserPrefs=function(userPrefs){this.userPrefs_=userPrefs;gadgets.container.userPrefStore.savePrefs(this);};gadgets.Gadget.prototype.getUserPref=function(name){return this.userPrefs_[name];};gadgets.Gadget.prototype.setUserPref=function(name,value){this.userPrefs_[name]=value;gadgets.container.userPrefStore.savePrefs(this);};gadgets.Gadget.prototype.render=function(chrome){if(chrome){this.getContent(function(content){chrome.innerHTML=content;});}};gadgets.Gadget.prototype.getContent=function(continuation){gadgets.callAsyncAndJoin([this.getTitleBarContent,this.getUserPrefsDialogContent,this.getMainContent],function(results){continuation(results.join(''));},this);};gadgets.Gadget.prototype.getTitleBarContent=function(continuation){throw Error(gadgets.error.SUBCLASS_RESPONSIBILITY);};gadgets.Gadget.prototype.getUserPrefsDialogContent=function(continuation){throw Error(gadgets.error.SUBCLASS_RESPONSIBILITY);};gadgets.Gadget.prototype.getMainContent=function(continuation){throw Error(gadgets.error.SUBCLASS_RESPONSIBILITY);};gadgets.Gadget.prototype.getAdditionalParams=function(){return'';};gadgets.IfrGadget=function(opt_params){gadgets.Gadget.call(this,opt_params);this.serverBase_='../../';};gadgets.IfrGadget.inherits(gadgets.Gadget);gadgets.IfrGadget.prototype.GADGET_IFRAME_PREFIX_='remote_iframe_';gadgets.IfrGadget.prototype.CONTAINER='default';gadgets.IfrGadget.prototype.cssClassGadget='gadgets-gadget';gadgets.IfrGadget.prototype.cssClassTitleBar='gadgets-gadget-title-bar';gadgets.IfrGadget.prototype.cssClassTitle='gadgets-gadget-title';gadgets.IfrGadget.prototype.cssClassTitleButtonBar='gadgets-gadget-title-button-bar';gadgets.IfrGadget.prototype.cssClassGadgetUserPrefsDialog='gadgets-gadget-user-prefs-dialog';gadgets.IfrGadget.prototype.cssClassGadgetUserPrefsDialogActionBar='gadgets-gadget-user-prefs-dialog-action-bar';gadgets.IfrGadget.prototype.cssClassTitleButton='gadgets-gadget-title-button';gadgets.IfrGadget.prototype.cssClassGadgetContent='gadgets-gadget-content';gadgets.IfrGadget.prototype.rpcToken=(0x7FFFFFFF*Math.random())|0;gadgets.IfrGadget.prototype.rpcRelay='files/container/rpc_relay.html';gadgets.IfrGadget.prototype.getTitleBarContent=function(continuation){continuation('<div id="'+this.cssClassTitleBar+'-'+this.id+'" class="'+this.cssClassTitleBar+'"><span id="'+
this.getIframeId()+'_title" class="'+
this.cssClassTitle+'">'+(this.title?this.title:'Title')+'</span> | <span class="'+
this.cssClassTitleButtonBar+'"><a href="#" onclick="gadgets.container.getGadget('+this.id+').handleOpenUserPrefsDialog();return false;" class="'+this.cssClassTitleButton+'">settings</a> <a href="#" onclick="gadgets.container.getGadget('+
this.id+').handleToggle();return false;" class="'+this.cssClassTitleButton+'">toggle</a></span></div>');};gadgets.IfrGadget.prototype.getUserPrefsDialogContent=function(continuation){continuation('<div id="'+this.getUserPrefsDialogId()+'" class="'+
this.cssClassGadgetUserPrefsDialog+'"></div>');};gadgets.IfrGadget.prototype.setServerBase=function(url){this.serverBase_=url;};gadgets.IfrGadget.prototype.getServerBase=function(){return this.serverBase_;};gadgets.IfrGadget.prototype.getMainContent=function(continuation){var iframeId=this.getIframeId();gadgets.rpc.setRelayUrl(iframeId,this.serverBase_+this.rpcRelay);gadgets.rpc.setAuthToken(iframeId,this.rpcToken);continuation('<div class="'+this.cssClassGadgetContent+'"><iframe id="'+
iframeId+'" name="'+iframeId+'" class="'+this.cssClassGadget+'" src="'+this.getIframeUrl()+'" frameborder="no" scrolling="no"'+
(this.height?' height="'+this.height+'"':'')+
(this.width?' width="'+this.width+'"':'')+'></iframe></div>');};gadgets.IfrGadget.prototype.getIframeId=function(){return this.GADGET_IFRAME_PREFIX_+this.id;};gadgets.IfrGadget.prototype.getUserPrefsDialogId=function(){return this.getIframeId()+'_userPrefsDialog';};gadgets.IfrGadget.prototype.getIframeUrl=function(){return this.serverBase_+'ifr?'+'container='+this.CONTAINER+'&mid='+this.id+'&nocache='+gadgets.container.nocache_+'&country='+gadgets.container.country_+'&lang='+gadgets.container.language_+'&view='+gadgets.container.view_+
(this.specVersion?'&v='+this.specVersion:'')+
(gadgets.container.parentUrl_?'&parent='+encodeURIComponent(gadgets.container.parentUrl_):'')+
(this.debug?'&debug=1':'')+
this.getAdditionalParams()+
this.getUserPrefsParams()+
(this.secureToken?'&st='+this.secureToken:'')+'&url='+encodeURIComponent(this.specUrl)+'#rpctoken='+this.rpcToken+
(this.viewParams?'&view-params='+encodeURIComponent(gadgets.json.stringify(this.viewParams)):'')+
(this.hashData?'&'+this.hashData:'');};gadgets.IfrGadget.prototype.getUserPrefsParams=function(){var params='';if(this.getUserPrefs()){for(var name in this.getUserPrefs()){var value=this.getUserPref(name);params+='&up_'+encodeURIComponent(name)+'='+
encodeURIComponent(value);}}
return params;};gadgets.IfrGadget.prototype.handleToggle=function(){var gadgetIframe=document.getElementById(this.getIframeId());if(gadgetIframe){var gadgetContent=gadgetIframe.parentNode;var display=gadgetContent.style.display;gadgetContent.style.display=display?'':'none';}};gadgets.IfrGadget.prototype.handleOpenUserPrefsDialog=function(){if(this.userPrefsDialogContentLoaded){this.showUserPrefsDialog();}else{var gadget=this;var igCallbackName='ig_callback_'+this.id;window[igCallbackName]=function(userPrefsDialogContent){gadget.userPrefsDialogContentLoaded=true;gadget.buildUserPrefsDialog(userPrefsDialogContent);gadget.showUserPrefsDialog();};var script=document.createElement('script');script.src='http://gmodules.com/ig/gadgetsettings?mid='+this.id+'&output=js'+this.getUserPrefsParams()+'&url='+this.specUrl;document.body.appendChild(script);}};gadgets.IfrGadget.prototype.buildUserPrefsDialog=function(content){var userPrefsDialog=document.getElementById(this.getUserPrefsDialogId());userPrefsDialog.innerHTML=content+'<div class="'+this.cssClassGadgetUserPrefsDialogActionBar+'"><input type="button" value="Save" onclick="gadgets.container.getGadget('+
this.id+').handleSaveUserPrefs()"> <input type="button" value="Cancel" onclick="gadgets.container.getGadget('+
this.id+').handleCancelUserPrefs()"></div>';userPrefsDialog.childNodes[0].style.display='';};gadgets.IfrGadget.prototype.showUserPrefsDialog=function(opt_show){var userPrefsDialog=document.getElementById(this.getUserPrefsDialogId());userPrefsDialog.style.display=(opt_show||opt_show===undefined)?'':'none';};gadgets.IfrGadget.prototype.hideUserPrefsDialog=function(){this.showUserPrefsDialog(false);};gadgets.IfrGadget.prototype.handleSaveUserPrefs=function(){this.hideUserPrefsDialog();var prefs={};var numFields=document.getElementById('m_'+this.id+'_numfields').value;for(var i=0;i<numFields;i++){var input=document.getElementById('m_'+this.id+'_'+i);if(input.type!='hidden'){var userPrefNamePrefix='m_'+this.id+'_up_';var userPrefName=input.name.substring(userPrefNamePrefix.length);var userPrefValue=input.value;prefs[userPrefName]=userPrefValue;}}
this.setUserPrefs(prefs);this.refresh();};gadgets.IfrGadget.prototype.handleCancelUserPrefs=function(){this.hideUserPrefsDialog();};gadgets.IfrGadget.prototype.refresh=function(){var iframeId=this.getIframeId();document.getElementById(iframeId).src=this.getIframeUrl();};gadgets.Container=function(){this.gadgets_={};this.parentUrl_='http://'+document.location.host;this.country_='ALL';this.language_='ALL';this.view_='default';this.nocache_=1;this.maxheight_=0x7FFFFFFF;};gadgets.Container.inherits(gadgets.Extensible);gadgets.Container.prototype.gadgetClass=gadgets.Gadget;gadgets.Container.prototype.userPrefStore=new gadgets.DefaultUserPrefStore();gadgets.Container.prototype.gadgetService=new gadgets.GadgetService();gadgets.Container.prototype.layoutManager=new gadgets.StaticLayoutManager();gadgets.Container.prototype.setParentUrl=function(url){this.parentUrl_=url;};gadgets.Container.prototype.setCountry=function(country){this.country_=country;};gadgets.Container.prototype.setNoCache=function(nocache){this.nocache_=nocache;};gadgets.Container.prototype.setLanguage=function(language){this.language_=language;};gadgets.Container.prototype.setView=function(view){this.view_=view;};gadgets.Container.prototype.setMaxHeight=function(maxheight){this.maxheight_=maxheight;};gadgets.Container.prototype.getGadgetKey_=function(instanceId){return'gadget_'+instanceId;};gadgets.Container.prototype.getGadget=function(instanceId){return this.gadgets_[this.getGadgetKey_(instanceId)];};gadgets.Container.prototype.createGadget=function(opt_params){return new this.gadgetClass(opt_params);};gadgets.Container.prototype.addGadget=function(gadget){gadget.id=this.getNextGadgetInstanceId();gadget.setUserPrefs(this.userPrefStore.getPrefs(gadget));this.gadgets_[this.getGadgetKey_(gadget.id)]=gadget;};gadgets.Container.prototype.addGadgets=function(gadgets){for(var i=0;i<gadgets.length;i++){this.addGadget(gadgets[i]);}};gadgets.Container.prototype.renderGadgets=function(){for(var key in this.gadgets_){this.renderGadget(this.gadgets_[key]);}};gadgets.Container.prototype.renderGadget=function(gadget){throw Error(gadgets.error.SUBCLASS_RESPONSIBILITY);};gadgets.Container.prototype.nextGadgetInstanceId_=0;gadgets.Container.prototype.getNextGadgetInstanceId=function(){return this.nextGadgetInstanceId_++;};gadgets.Container.prototype.refreshGadgets=function(){for(var key in this.gadgets_){this.gadgets_[key].refresh();}};gadgets.IfrContainer=function(){gadgets.Container.call(this);};gadgets.IfrContainer.inherits(gadgets.Container);gadgets.IfrContainer.prototype.gadgetClass=gadgets.IfrGadget;gadgets.IfrContainer.prototype.gadgetService=new gadgets.IfrGadgetService();gadgets.IfrContainer.prototype.setParentUrl=function(url){if(!url.match(/^http[s]?:\/\//)){url=document.location.href.match(/^[^?#]+\//)[0]+url;}
this.parentUrl_=url;};gadgets.IfrContainer.prototype.renderGadget=function(gadget){var chrome=this.layoutManager.getGadgetChrome(gadget);gadget.render(chrome);};gadgets.container=new gadgets.IfrContainer();gadgets.CookieBasedUserPrefStore=function(){gadgets.UserPrefStore.call(this);};gadgets.CookieBasedUserPrefStore.inherits(gadgets.UserPrefStore);gadgets.CookieBasedUserPrefStore.prototype.USER_PREFS_PREFIX='gadgetUserPrefs-';gadgets.CookieBasedUserPrefStore.prototype.getPrefs=function(gadget){var userPrefs={};var cookieName=this.USER_PREFS_PREFIX+gadget.id;var cookie=shindig.cookies.get(cookieName);if(cookie){var pairs=cookie.split('&');for(var i=0;i<pairs.length;i++){var nameValue=pairs[i].split('=');var name=decodeURIComponent(nameValue[0]);var value=decodeURIComponent(nameValue[1]);userPrefs[name]=value;}}
return userPrefs;};gadgets.CookieBasedUserPrefStore.prototype.savePrefs=function(gadget){var pairs=[];for(var name in gadget.getUserPrefs()){var value=gadget.getUserPref(name);var pair=encodeURIComponent(name)+'='+encodeURIComponent(value);pairs.push(pair);}
var cookieName=this.USER_PREFS_PREFIX+gadget.id;var cookieValue=pairs.join('&');shindig.cookies.set(cookieName,cookieValue);};gadgets.Container.prototype.userPrefStore=new gadgets.CookieBasedUserPrefStore();var hexcase=0;var b64pad="";var chrsz=8;function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length*chrsz));}
function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length*chrsz));}
function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length*chrsz));}
function hex_hmac_sha1(key,data){return binb2hex(core_hmac_sha1(key,data));}
function b64_hmac_sha1(key,data){return binb2b64(core_hmac_sha1(key,data));}
function str_hmac_sha1(key,data){return binb2str(core_hmac_sha1(key,data));}
function sha1_vm_test()
{return hex_sha1("abc")=="a9993e364706816aba3e25717850c26c9cd0d89d";}
function core_sha1(x,len)
{x[len>>5]|=0x80<<(24-len%32);x[((len+64>>9)<<4)+15]=len;var w=Array(80);var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;var e=-1009589776;for(var i=0;i<x.length;i+=16)
{var olda=a;var oldb=b;var oldc=c;var oldd=d;var olde=e;for(var j=0;j<80;j++)
{if(j<16)w[j]=x[i+j];else w[j]=rol(w[j-3]^w[j-8]^w[j-14]^w[j-16],1);var t=safe_add(safe_add(rol(a,5),sha1_ft(j,b,c,d)),safe_add(safe_add(e,w[j]),sha1_kt(j)));e=d;d=c;c=rol(b,30);b=a;a=t;}
a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd);e=safe_add(e,olde);}
return Array(a,b,c,d,e);}
function sha1_ft(t,b,c,d)
{if(t<20)return(b&c)|((~b)&d);if(t<40)return b^c^d;if(t<60)return(b&c)|(b&d)|(c&d);return b^c^d;}
function sha1_kt(t)
{return(t<20)?1518500249:(t<40)?1859775393:(t<60)?-1894007588:-899497514;}
function core_hmac_sha1(key,data)
{var bkey=str2binb(key);if(bkey.length>16)bkey=core_sha1(bkey,key.length*chrsz);var ipad=Array(16),opad=Array(16);for(var i=0;i<16;i++)
{ipad[i]=bkey[i]^0x36363636;opad[i]=bkey[i]^0x5C5C5C5C;}
var hash=core_sha1(ipad.concat(str2binb(data)),512+data.length*chrsz);return core_sha1(opad.concat(hash),512+160);}
function safe_add(x,y)
{var lsw=(x&0xFFFF)+(y&0xFFFF);var msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&0xFFFF);}
function rol(num,cnt)
{return(num<<cnt)|(num>>>(32-cnt));}
function str2binb(str)
{var bin=Array();var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz)
bin[i>>5]|=(str.charCodeAt(i/chrsz)&mask)<<(32-chrsz-i%32);return bin;}
function binb2str(bin)
{var str="";var mask=(1<<chrsz)-1;for(var i=0;i<bin.length*32;i+=chrsz)
str+=String.fromCharCode((bin[i>>5]>>>(32-chrsz-i%32))&mask);return str;}
function binb2hex(binarray)
{var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var str="";for(var i=0;i<binarray.length*4;i++)
{str+=hex_tab.charAt((binarray[i>>2]>>((3-i%4)*8+4))&0xF)+
hex_tab.charAt((binarray[i>>2]>>((3-i%4)*8))&0xF);}
return str;}
function binb2b64(binarray)
{var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var str="";for(var i=0;i<binarray.length*4;i+=3)
{var triplet=(((binarray[i>>2]>>8*(3-i%4))&0xFF)<<16)|(((binarray[i+1>>2]>>8*(3-(i+1)%4))&0xFF)<<8)|((binarray[i+2>>2]>>8*(3-(i+2)%4))&0xFF);for(var j=0;j<4;j++)
{if(i*8+j*6>binarray.length*32)str+=b64pad;else str+=tab.charAt((triplet>>6*(3-j))&0x3F);}}
return str;}
if(!window['__comarquage_container_loaded__']){var comarquage=comarquage||{};comarquage.container=function(){return{getBaseUrl:function(){var url=document.location.href;var prefix=typeof this.parameters.prefix!='undefined'?this.parameters.prefix:'cmq_';var queryIndex=url.indexOf('?');var hashIndex=url.indexOf('#');var base,fragment,fragments,fragmentsToKeep,hash,i,query;if(queryIndex>=0){base=url.substr(0,queryIndex);if(hashIndex>=0){query=url.substr(queryIndex+1,hashIndex-(queryIndex+1));hash=url.substr(hashIndex+1);}else{query=url.substr(queryIndex+1);hash=null;}}else if(hashIndex>=0){base=url.substr(0,hashIndex);query=null;hash=url.substr(hashIndex+1);}else{base=url;query=null;hash=null;}
if(query){fragments=query.split('&');fragmentsToKeep=[];for(var i=0;i<fragments.length;i++){fragment=fragments[i];if(prefix&&fragment.indexOf(prefix)!=0){fragmentsToKeep.push(fragment);}}
if(fragmentsToKeep.length>0){base+='?'+fragmentsToKeep.join('&');}}
if(hash){fragments=hash.split('&');fragmentsToKeep=[];for(var i=0;i<fragments.length;i++){fragment=fragments[i];if(prefix&&fragment.indexOf(prefix)!=0){fragmentsToKeep.push(fragment);}}
if(fragmentsToKeep.length>0){base+='#'+fragmentsToKeep.join('&');}}
return base;},getUrl:function(parameters){var url=this.parameters.baseUrl;var prefix=typeof this.parameters.prefix!='undefined'?this.parameters.prefix||'':'cmq_';var arguments=[];var key,value;if(parameters){for(var key in parameters){value=parameters[key];if(value){arguments.push(prefix+encodeURIComponent(key)+'='+encodeURIComponent(value));}}}
arguments=arguments.join('&');if(arguments){var queryIndex=url.indexOf('?');var hashIndex=url.indexOf('#');var base,hash,query;if(queryIndex>=0){if(hashIndex>=0){query=url.substr(queryIndex+1,hashIndex-(queryIndex+1));hash=url.substr(hashIndex+1);}else{query=url.substr(queryIndex+1);hash=null;}
url=url.substr(0,queryIndex);}else if(hashIndex>=0){query=null;hash=url.substr(hashIndex+1);url=url.substr(0,hashIndex);}else{query=null;hash=null;}
if(this.parameters.inHash){if(hash){hash+='&'+arguments;}else{hash=arguments;}}else{if(query){query+='&'+arguments;}else{query=arguments;}}
if(query){url+='?'+query;}
if(hash){url+='#'+hash;}else if(this.id){url+='#'+this.id;}}
return url;},getUrlParameters:function(validUrlParameters){var parameters=gadgets.util.getUrlParameters();var prefix=typeof this.parameters.prefix!='undefined'?this.parameters.prefix:'cmq_';if(!prefix){return parameters;}else{var result={};for(var key in parameters){if(key.indexOf(prefix)==0){var keyWithoutPrefix=key.substr(prefix.length);if(validUrlParameters&&keyWithoutPrefix in validUrlParameters){result[keyWithoutPrefix]=parameters[key];}}}
return result;}},id:null,init:function(parameters){this.parameters=parameters||{};this.parameters.baseUrl=this.getBaseUrl();var parentUrl=(window.location.protocol||'http:')+'//'+window.location.host
+(this.parameters.parentUrl||'/');while(parentUrl[parentUrl.length-1]=='/'){parentUrl=parentUrl.substring(0,parentUrl.length-1);}
gadgets.container.setParentUrl(parentUrl);gadgets.container.layoutManager.setGadgetChromeIds([]);gadgets.container.setCountry('fr');gadgets.container.setLanguage('fr');},initViewParameters:function(gadgetParameters){var viewParameters={};var key;if(gadgetParameters.viewParams){for(var key in gadgetParameters.viewParams){viewParameters[key]=gadgetParameters.viewParams[key];}}
viewParameters.container=viewParameters.container||{};for(var key in this.parameters){viewParameters.container[key]=this.parameters[key];}
var urlParameters=this.getUrlParameters(gadgetParameters.validUrlParameters);for(var key in urlParameters){viewParameters[key]=urlParameters[key];}
gadgetParameters.viewParams=viewParameters;},parameters:null,renderAnnuaireGeolocaliseGadget:function(parameters){this.id=parameters.id;var gadgetId=parameters.id.split('-');gadgetId=gadgetId[gadgetId.length-1];var gadgetParameters={specUrl:parameters.gadgetUrl||'http://annuaire.comarquage.fr/gadgets/annuaire.xml',validUrlParameters:{card:true,category:true,category_tag:true,debug:true,latitude:true,longitude:true,q:true,tag:true,where:true,zoom:true},viewParams:{gadget:gadgetId},width:'100%'};for(var key in parameters){if(key=='viewParams'&&parameters[key]){for(var key1 in parameters[key]){gadgetParameters[key][key1]=parameters[key][key1];}}else if(key!='id'&&key!='serverBase'){gadgetParameters[key]=parameters[key];}}
this.initViewParameters(gadgetParameters);var gadget=gadgets.container.createGadget(gadgetParameters);gadget.setServerBase(parameters.serverBase||'http://shindig.comarquage.fr/gadgets/');gadgets.container.addGadget(gadget);gadgets.container.layoutManager.gadgetChromeIds_[gadget.id]=parameters.id;gadgets.container.renderGadget(gadget);},renderCosmeticGadget:function(parameters){this.id=parameters.id;var gadgetId=parameters.id.split('-');gadgetId=gadgetId[gadgetId.length-1];var gadgetParameters={specUrl:parameters.gadgetUrl||'http://cosmetic.comarquage.fr/gadgets/comarquage.xml',validUrlParameters:{action:true,new_what:true,new_where:true,page:true,what:true,where:true},viewParams:{gadget:gadgetId},width:'100%'};for(var key in parameters){if(key=='viewParams'&&parameters[key]){for(var key1 in parameters[key]){gadgetParameters[key][key1]=parameters[key][key1];}}else if(key!='id'&&key!='serverBase'){gadgetParameters[key]=parameters[key];}}
this.initViewParameters(gadgetParameters);var gadget=gadgets.container.createGadget(gadgetParameters);gadget.setServerBase(parameters.serverBase||'http://shindig.comarquage.fr/gadgets/');gadgets.container.addGadget(gadget);gadgets.container.layoutManager.gadgetChromeIds_[gadget.id]=parameters.id;gadgets.container.renderGadget(gadget);},renderCosmetic3Gadget:function(parameters){this.id=parameters.id;var gadgetId=parameters.id.split('-');gadgetId=gadgetId[gadgetId.length-1];var gadgetParameters={specUrl:parameters.gadgetUrl||'http://cosmetic3.comarquage.fr/gadgets/vos-droits.xml',validUrlParameters:{page:true,path:true,what:true,where:true},viewParams:{gadget:gadgetId},width:'100%'};for(var key in parameters){if(key=='viewParams'&&parameters[key]){for(var key1 in parameters[key]){gadgetParameters[key][key1]=parameters[key][key1];}}else if(key!='id'&&key!='serverBase'){gadgetParameters[key]=parameters[key];}}
this.initViewParameters(gadgetParameters);var gadget=gadgets.container.createGadget(gadgetParameters);gadget.setServerBase(parameters.serverBase||'http://shindig.comarquage.fr/gadgets/');gadgets.container.addGadget(gadget);gadgets.container.layoutManager.gadgetChromeIds_[gadget.id]=parameters.id;gadgets.container.renderGadget(gadget);},renderMetanolGadget:function(parameters){this.id=parameters.id;var gadgetId=parameters.id.split('-');gadgetId=gadgetId[gadgetId.length-1];var gadgetParameters={specUrl:parameters.gadgetUrl||'http://www.quoi-ou.org/gadgets/annuaire.xml',validUrlParameters:{path:true,what:true,where:true},viewParams:{gadget:gadgetId},width:'100%'};for(var key in parameters){if(key=='viewParams'&&parameters[key]){for(var key1 in parameters[key]){gadgetParameters[key][key1]=parameters[key][key1];}}else if(key!='id'&&key!='serverBase'){gadgetParameters[key]=parameters[key];}}
this.initViewParameters(gadgetParameters);var gadget=gadgets.container.createGadget(gadgetParameters);gadget.setServerBase(parameters.serverBase||'http://shindig.comarquage.fr/gadgets/');gadgets.container.addGadget(gadget);gadgets.container.layoutManager.gadgetChromeIds_[gadget.id]=parameters.id;gadgets.container.renderGadget(gadget);},renderViePubliqueGadget:function(parameters){this.id=parameters.id;var gadgetId=parameters.id.split('-');gadgetId=gadgetId[gadgetId.length-1];var gadgetParameters={specUrl:parameters.gadgetUrl||'http://cosmetic-front.comarquage.fr/gadgets/vie-publique.xml',validUrlParameters:{what:true},viewParams:{gadget:gadgetId},width:'100%'};for(var key in parameters){if(key=='viewParams'&&parameters[key]){for(var key1 in parameters[key]){gadgetParameters[key][key1]=parameters[key][key1];}}else if(key!='id'&&key!='serverBase'){gadgetParameters[key]=parameters[key];}}
this.initViewParameters(gadgetParameters);var gadget=gadgets.container.createGadget(gadgetParameters);gadget.setServerBase(parameters.serverBase||'http://shindig.comarquage.fr/gadgets/');gadgets.container.addGadget(gadget);gadgets.container.layoutManager.gadgetChromeIds_[gadget.id]=parameters.id;gadgets.container.renderGadget(gadget);},renderVosDroitsGadget:function(parameters){this.id=parameters.id;var gadgetId=parameters.id.split('-');gadgetId=gadgetId[gadgetId.length-1];var gadgetParameters={specUrl:parameters.gadgetUrl||'http://cosmetic-front.comarquage.fr/gadgets/vos-droits.xml',validUrlParameters:{page:true,path:true,what:true,where:true},viewParams:{gadget:gadgetId},width:'100%'};for(var key in parameters){if(key=='viewParams'&&parameters[key]){for(var key1 in parameters[key]){gadgetParameters[key][key1]=parameters[key][key1];}}else if(key!='id'&&key!='serverBase'){gadgetParameters[key]=parameters[key];}}
this.initViewParameters(gadgetParameters);var gadget=gadgets.container.createGadget(gadgetParameters);gadget.setServerBase(parameters.serverBase||'http://shindig.comarquage.fr/gadgets/');gadgets.container.addGadget(gadget);gadgets.container.layoutManager.gadgetChromeIds_[gadget.id]=parameters.id;gadgets.container.renderGadget(gadget);}};}();gadgets.container.gadgetService.getUrlForView=function(view){return comarquage.container.getUrl();}
gadgets.container.gadgetService.requestNavigateTo=function(view,parameters){var url=comarquage.container.getUrl(parameters);if(document.location.href!=url){document.location.href=url;}}
gadgets.rpc.register('requestNavigateTo',gadgets.container.gadgetService.requestNavigateTo);ComarquageContainerGadget=function(opt_params){gadgets.IfrGadget.call(this,opt_params);};ComarquageContainerGadget.inherits(gadgets.IfrGadget);ComarquageContainerGadget.prototype.getTitleBarContent=function(continuation){continuation('');};ComarquageContainerGadget.prototype.rpcRelay='rpc_relay.html';ComarquageContainerGadget.prototype.rpcToken=hex_sha1(location.href);gadgets.container.gadgetClass=ComarquageContainerGadget;window['__comarquage_container_loaded__']=true;}
