// Last modified 2009/6/10(6/10version)

// for develop environment
//window.trace = function (str) { window.console.log(str); };

MAFC.lib_version = '1.2';
MAFC.initialize = function(){
    this.google_max_num_ads = 0;
    this.ad_num_default = 5;
    this.ad_num_default_case_mafc = 3;
    this.ad_num_class_mafc = 2;
    this.ad_num_id_mafc = 2;
    this.doms = new Array();

	//When do not display a campaign => off
	//window.nifty_campaign = 'off';

    this.campaign = window.nifty_campaign == 'on' ? {
		title: '&#9632;@nifty&#12363;&#12425;&#12398;&#32819;&#12424;&#12426;&#24773;&#22577;',
		url: 'http://track.nifty.com/tr/ad/axF/ZjZ',
		line: '&#12363;&#12431;&#12356;&#12367;&#30528;&#26367;&#12360;&#12390;&#12289;&#12458;&#12471;&#12515;&#12524;&#33258;&#24930;&#65281;&#12300;&#12491;&#12467;&#12483;&#12392;&#12479;&#12454;&#12531;&#12301;'
	} : null;
    if (this.campaign) this.campaign.output_index = null;

    this.addIdMAFC();
    this.addClassMAFC();

    //backword compatibility
    if(!document.getElementById('mafc_default')){
	document.write('<div id="mafc_default"></div>');
    }

	var mafcd = document.getElementById('mafc_default');
	if(mafcd.className.match(/mafc_num=?(\d+)/))
		this.ad_num_default = parseInt(mafcd.className.match(/mafc_num=?(\d+)/)[1]);
	else
		this.ad_num_default = this.doms.length > 0 ? this.ad_num_default_case_mafc : this.ad_num_default;
	this.doms.push({dom:document.getElementById('mafc_default'), num: this.ad_num_default });

    //make the priority of position higher
     this.doms.sort(function(a,b){
     	    return MAFC.getTop(a.dom) - MAFC.getTop(b.dom);
	});

//    for(var i in this.doms) this.google_max_num_ads += this.doms[i].num;
    for(var i=0,l=this.doms.length; i<l; i++){
    	var dom = this.doms[i];
		this.google_max_num_ads = this.google_max_num_ads + dom.num;
		if (this.campaign && this.campaign.output_index == null && MAFC.hasClassName(dom.dom, "campaign")) this.campaign.output_index = i;
	}
    if (this.campaign && this.campaign.output_index == null) this.campaign.output_index = 0;

    google_max_num_ads = (this.google_max_num_ads < 20) ? this.google_max_num_ads: 20;

    if(this.addHints) this.addHints();
};

MAFC.getTop = function(element) {
	if (element.getBoundingClientRect) {
		var rect = element.getBoundingClientRect();
		return rect.top;
	} else if (element.ownerDocument && element.ownerDocument.getBoxObjectFor) {
		var box = element.ownerDocument.getBoxObjectFor(element);
		var y = box.y;
		for (var parent = element;
				parent && parent != document.body && parent != document.documentElement;
				parent = parent.parentNode) {
			if (parent.scrollTop) y -= parent.scrollTop;
		}
		return y;
	} else {
		var y = 0;
		var parent = element;
		for (var parent = element; parent; parent = parent.offsetParent) {
			y += parent.offsetTop;
			var edgeTop = MAFC.getEdgeTop(parent);
			y += edgeTop;
		}
		for (var parent = element; parent && parent != document.body &&
				parent != document.documentElement; parent = parent.parentNode) {
			if (parent.scrollTop) y -= parent.scrollTop;
		}
		return y;
	}
};

MAFC.getEdgeTop = function(element) {
	var paddingTop = parseInt(MAFC.getStyle(element, "padding-top"));
	var borderTop = parseInt(MAFC.getStyle(element, "border-top-width"));
	return (paddingTop ? paddingTop : 0) + (borderTop ? borderTop : 0);
};

MAFC.getStyle = function(element, property) {
	if (element.currentStyle) {
		var tokens = property.split("-");
		var ieProp = "";
		for (var i = 0; i < tokens.length; i++) {
			ieProp += ((i == 0) ? tokens[i].substring(0, 1) : tokens[i].substring(0, 1).toUpperCase())
				+ tokens[i].substring(1);
		}
		return element.currentStyle[ieProp];
	} else if (window.getComputedStyle) {
		return window.getComputedStyle(element, null).getPropertyValue(property);
	} else if (document.defaultView && document.defaultView.getComputedStyle) {
		var style = document.defaultView.getComputedStyle(element, null);
		if (style) return style.getPropertyValue(property);
	}
	return null;
};

MAFC.hasClassName = function(element, className) {
  if (!element) return;
  var elementClassName = element.className;
  return (elementClassName && elementClassName.length > 0 && (elementClassName == className ||
    new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));
};

MAFC.addClassMAFC = function(){
    var divs = document.getElementsByTagName('div');
    //MODIFY AD NUMBER IN EACH divs.MAFC
    for(var i = 0, l = divs.length; i < l; i++){
	if(divs[i].className && divs[i].className.match(/MAFC/)){
	    var num = (divs[i].className.match(/mafc_num=?(\d+)/)) ? parseInt(divs[i].className.match(/mafc_num=?(\d+)/)[1]) : this.ad_num_class_mafc;
	    this.doms.push({dom:divs[i], num:num});
	}
    }
};
MAFC.addIdMAFC = function(){
    for(var i = 0; i < 10; i++){
	var mafc = document.getElementById('MAFC'+i);
	if(mafc){
	    var num = (mafc.className.match(/mafc_num=?(\d+)/)) ? parseInt(mafc.className.match(/mafc_num=?(\d+)/)[1]) : this.ad_num_id_mafc;
	    this.doms.push({dom:mafc, num:num});
	}
    }
};

if (!MAFC.createCampaign) MAFC.createCampaign = function(a){
    return '<div style="padding: 5px; margin-bottom: 3px; background-color: rgb(255, 255, 204);">' +
      '<span style="font-size: small; font-weight: bold; margin: 0; color: rgb(255, 0, 0);">' +
        this.campaign.title +
      '</span>' +
      '<dl style="margin: 0pt;"><dt style="margin: 0pt; padding: 0pt;">' +
        '<a class="ad_title" style="text-decoration: underline; color:#3063CA;" target="_blank" href="' + this.campaign.url + '">' +
          this.campaign.line +
        '</a>' +
      '</dt></dl>' +
    '</div>';
};

MAFC.initialize();

document.write('<scr'+'ipt type="text/javascript" language="JavaScript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></scr'+'ipt>');

/************************************************************
 * callback method from google adsense			*/
function google_ad_request_done() {

    if(google_ads.length == 0) return;
    var t = 0;	//counter of google_ads.length
    if(google_ads[0].type == 'image'){
	var ads_div = document.createElement('div');
	ads_div.className = 'ads';

	ads_div.innerHTML = '<a href="'+google_ads[0].url+'" target="_blank" title="go to '+google_ads[0].visible_url+'">'+
	    '<img border="0" src="'+google_ads[0].image_url+'" width="'+google_ads[0].image_width+'" height="'+google_ads[0].image_height+'"/></a>';

	MAFC.doms[0].dom.insertBefore(ads_div, null);

    }else if(google_ads[0].type == 'flash'){
	var ads_div = document.createElement('div');
	ads_div.className = 'ads';

	ads_div.innerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' +
	    ' codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"' +
	    ' WIDTH="' + google_ad.image_width +
	    '" HEIGHT="' + google_ad.image_height + '">' +
	    '<PARAM NAME="movie" VALUE="' + google_ad.image_url + '">' +
	    '<PARAM NAME="quality" VALUE="high">' +
	    '<PARAM NAME="AllowScriptAccess" VALUE="never">' +
	    '<EMBED src="' + google_ad.image_url +
	    '" WIDTH="' + google_ad.image_width +
	    '" HEIGHT="' + google_ad.image_height +
	    '" TYPE="application/x-shockwave-flash"' +
	    ' AllowScriptAccess="never" ' +
	    ' PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED></OBJECT>';

	MAFC.doms[0].dom.insertBefore(ads_div, null);

    }else if(google_ads[0].type == 'text'){

	for(var i = 0, l = MAFC.doms.length; i < l; i++){
	    var ads_div = document.createElement('div');
	    ads_div.className = 'ads';

	    var ads_tag = '';
	    var str = '';

	    for(var j = 0; t < google_ads.length && j < MAFC.doms[i].num; j++, t++){
	      if(j == 0 && google_ads.length - t <= 1){
	        if(ads_tag == '') ads_tag = 'dl';
	        str +=  MAFC.createText(google_ads[t]);
	      }else{
	        if(ads_tag == '') ads_tag = MAFC.doms[i].dom.className && MAFC.doms[i].dom.className.match(/badge/) ? 'ul' : 'dl';
	        str += (MAFC.doms[i].dom.className && MAFC.doms[i].dom.className.match(/badge/)) ? MAFC.createBadge(google_ads[t]) : MAFC.createText(google_ads[t]);
	      }
	    }

	    if (MAFC.campaign && i == MAFC.campaign.output_index) {
	    	var camp_txt = MAFC.createCampaign();
	      //Specifications to display a campaign outside 'ads_tag' in the case of the Badge type
		  ads_div.innerHTML = ads_tag == 'dl' ?
		    MAFC.logo + '<'+ads_tag+'>'+ str + camp_txt + '</'+ads_tag+'>' :
		    MAFC.logo + '<'+ads_tag+'>'+ str + '</'+ads_tag+'>' + camp_txt;
	    } else {
		  ads_div.innerHTML =
		    MAFC.logo + '<'+ads_tag+'>'+ str + '</'+ads_tag+'>';
	    }
	    if(j > 0){
		MAFC.doms[i].dom.insertBefore(ads_div, null);
	    }
	}
    }

    return null;
};
