/*!
 * --------------------------------------------------------------------------
 *  AdLantis AdPlace Initializer (AdLantisLoader.js) 2.0.5
 *  (C) 2009 Atlantis Co.,Ltd All Right Reserved.
 *---------------------------------------------------------------------------
 */

(function(){
  if (typeof oemOptions == "undefined") oemOptions=false;
  var prefix = (!!oemOptions) ? oemOptions.prefix : 'http://static.adlantis.jp/javascripts';
  var libs = [
    {packageName: "jp.atlantis.mashiron.advertise", src: prefix+"/AdLantis.js?20091029"},
    {packageName:"SWFObject", src:prefix+'/swfobject.js'}
  ];
  if (/iPhone OS/.test(navigator.userAgent)) {
    libs.push({packageName: "jp.atlantis.alto", src: prefix+"/SmartPhoneKit.js?20091111"});
    libs.push({packageName: "jp.atlantis.yumina.sticky", src: prefix+"/iSticky.js?20091111"});
  }

  var __scanner = function(){
    var z = jp.atlantis.mashiron.advertise;
    var advs = document.getElementsByClassName('adlantiss_frame');
    var zidlist = [];
    var idcounter = 0;
    for (var i = 0; i<advs.length; i++){
      var zid, type, container="iframe", autosize = false, loaded = false, checksum = false, nocss = false, classes=advs[i].className.split(" ");
      for (var j = 0; j<classes.length; j++){
        switch(true){
            case (classes[j]=="loaded"):              loaded    = true;                                           break;
            case (classes[j]=="autosize"):            autosize  = true;                                           break;
            case (classes[j]=="nocss"):               nocss     = true;                                           break;
            case (/^zid_.*$/.test(classes[j])):       zid       = /^zid_(.*)$/.exec(classes[j])[1];               break;
            case (/^checksum_.*$/.test(classes[j])):  checksum  = /^checksum_(.*)$/.exec(classes[j])[1];          break;
            case (/^container_.*$/.test(classes[j])): container = /^container_(.*)$/.exec(classes[j])[1];         break;
            case (/^color_.*$/.test(classes[j])):     color     = /^color_(.*)$/.exec(classes[j])[1].split("-");  break;
            default:
        }
      }
      if (!!loaded || !zid) continue;
      zidlist.push(zid);
      var params = {
        'zid':zid,
        'checksum':checksum,
        'id':idcounter,
        'containerTag':container,
        'autosize':autosize,
        'nocss':nocss,
        'classes':classes
      };
      /* iPhone 2.x force div mode hack */
      if (/iPhone OS.*Mobile\/5[A-H]/.test(navigator.userAgent)) params.containerTag = "div";
      if (typeof color != "undefined") {
        if (color.length > 1) {
          params['color'] = {
            title: color[0],
            text: color[1],
            background: color[2],
            border: color[3],
            url: color[4]
          };
        }
        else {
          params['color'] = color[0];
        }
      }
      if (typeof AdLantisOptions != "undefined") {
        for (var j in AdLantisOptions){
          if (typeof AdLantisOptions[j] == "function") params[j] = window.AdLantisOptions[j]();
          else params[j] = window.AdLantisOptions[j];
        }
      }
      var metas = document.getElementsByTagName('meta');
      for (var k=0, len=metas.length; k<len; k++){
        var meta = metas[k];
        if (!!meta.getAttribute('name') && meta.getAttribute('name')=="adlantis-ad-params")
          params['adlantisAdParam'] = meta.getAttribute('content');
      }
      if (!!oemOptions) {
        for (var j in oemOptions.additionalParams){
          if (typeof oemOptions.additionalParams[j] == "string") params[j] = oemOptions.additionalParams[j];
          if (typeof oemOptions.additionalParams[j] == "object") params[j] = oemOptions.additionalParams[j];
          if (typeof oemOptions.additionalParams[j] == "function") params["additionalParam"] = oemOptions.additionalParams[j]();
        }
      }
      var ado = new z(advs[i], params);
      jp.atlantis.mashiron.ads["ads"+ado.id] = ado;
      idcounter++;
      advs[i].className = advs[i].className+" loaded";
    }
    if (/iPhone OS/.test(navigator.userAgent)) {
      /* frame check */
      var inFrame = false, domainRestriction = false;
      try {
        var wp = window.parent, ws = window.self;
        if (wp !== ws) {
          inFrame = true;
          domainRestriction = false;
          while (wp && wp != ws){
            if (wp.location.host != ws.location.host) {
              domainRestriction = true
              break;
            }
            if (wp === wp.parent) break;
            wp = wp.parent;
          }          
        }
      } catch(e) {
        inFrame = true;
        domainRestriction = true;
      }
      /* check for iSticky stop flag */
      var metas = document.getElementsByTagName('meta'), noStickyOption = false;
      for (var k=0, len=metas.length; k<len; k++){
        var meta = metas[k];
        if (!!meta.getAttribute('name') && meta.getAttribute('name')=="adlantis-option" && meta.getAttribute('content') == "no-sticky-ad") {
          noStickyOption = true;
          break;
        }
      }
      if (typeof AdLantisOptions != "undefined") 
        if (AdLantisOptions.useStickyAd==false) noStickyOption = true;
      /* at first, search stickyZone */
      var stickyDiv = document.getElementsByClassName('adlantis_sticky_zone');
      if (!!stickyDiv[0]){
        var stickyZoneId, stickyLoaded = false, classes=stickyDiv[0].className.split(" "), stickyParams;
        for (var j = 0; j<classes.length; j++){
          switch(true){
              case (classes[j]=="loaded"):              stickyLoaded = true;                                           break;
              case (/^zid_.*$/.test(classes[j])):       stickyZoneId = /^zid_(.*)$/.exec(classes[j])[1];               break;
              default:
          }
        }        
        if (!stickyLoaded && !!stickyZoneId) stickyParams = {zid:stickyZoneId, id:idcounter};        
      } else if (zidlist.length){
        var selectedZoneId = Math.floor(Math.random()*zidlist.length);
        stickyParams = {rzid:zidlist[selectedZoneId], id:idcounter};        
      }
      if (!!stickyParams && !inFrame && !noStickyOption) {
        if (typeof StickyAdOptions != "undefined") {
          for (var j in StickyAdOptions){
            if (typeof StickyAdOptions[j] == "function") stickyParams[j] = window.StickyAdOptions[j]();
            else stickyParams[j] = window.StickyAdOptions[j];
          }
        }
        jp.atlantis.alto.iphone.startWithIdentifier(
          function(uuid){
            stickyParams['uuid'] = uuid;
            var ad = new jp.atlantis.yumina.sticky(stickyParams);
            jp.atlantis.yumina.ads["iSticky"+ad.id] = ad;
            idcounter++; 
          });
      }
    }
  };

  var __Loader = function(){   
    var registerAsPackage = function(str, obj){
      var ns = str.split('.');
      var here = window;
      for (var i = 0, l = ns.length; i < l; i++){
          if (typeof(here[ns[i]]) == 'undefined') here[ns[i]] = {};
          here = here[ns[i]];
      }
      for (var c in obj){
        here[c] = obj[c];
      }
    };
    window.__registerAsPackage = registerAsPackage;

    var _isDefinedObject = function(str){
      var ns = str.split('.');
      var here = window;
      for (var i=0,l=ns.length; i<l; i++){
        if (typeof(here[ns[i]]) == 'undefined') return false;
        here = here[ns[i]];
      }
      return true;
    }
  
    if (window.__ld) return;
    else window.__ld = true;
    if (!libs.length) return;
    var isPoorOpera = (!!window.opera && parseFloat(window.opera.version())<9) ? true : false, libQue = [];
    for (var i=0,l=libs.length; i<l; i++) {
      if (!_isDefinedObject(libs[i].packageName)) libQue.push(libs[i]);
    }
    var loadingCounter = libQue.length;

    for (var i = 0; i < libQue.length; i++){
      var lib = libQue[i];
      var e = document.createElement('script');
      e.type = 'text/javascript';
      e.charset = 'utf-8';
      e.src = lib.src
      if(window.ActiveXObject){
        e.onreadystatechange = function(){
          if (e.readyState == 'complete' || e.readyState == 'loaded'){
            var j = 0, k= 0, l = libs.length;
            for (; j<l; j++){
              if (_isDefinedObject(libs[j].packageName)) k++;
            }
            if (k == l) __scanner(); 
          }
        };
      } else {
        e.onload = function(){
          loadingCounter--;
          if (loadingCounter == 0) __scanner.apply();
        };            
      }
      if (!!isPoorOpera)
        document.body.appendChild(e);
      else 
        document.documentElement.appendChild(e);
    }
    if (!!isPoorOpera) {
      __scanner();
      var scanLoop = function(){
        try {
          __scanner();
        } catch (e) {
          setTimeout(scanLoop, 99);
        }
      };
      scanLoop();
    }
  };
  if (!!(window.attachEvent && !window.opera)) {
    var isFrame = false;
    try {
      var wp = window.parent, ws = window.self;
      while (wp && wp != ws){
        if (wp.location.host != ws.location.host) {
          isFrame = true;
          break;
        }
        if (wp === wp.parent) break;
        wp = wp.parent;
      }
    } catch(e) {
      isFrame = true;
    }
    if (!isFrame) {
      (function() {
        try {
          document.documentElement.doScroll('left');
        } catch(e) {
          setTimeout(arguments.callee, 50);
          return;
        }
        __Loader(1);
      })();
    } else {
      window.attachEvent("onload", function(){__Loader(1)});
    }
  }
  else if (!!window.opera) {    
    var operaVersion = parseFloat(window.opera.version());
    if (operaVersion <9){
      window.addEventListener('load',__Loader, false);
    } else if ( operaVersion <9.5){
      document.addEventListener('DOMContentLoaded',__Loader, false);
    } else
      window.addEventListener('DOMContentLoaded',__Loader, true);
  }
  else {
    if (!!document.addEventListener)
      document.addEventListener('DOMContentLoaded',__Loader, true);
    else
      window.onload = __Loader();
  }
})();

/* vim: set expandtab sts=2 fenc=utf-8 ff=unix ft=javascript : */
