// JavaScript Document

/**
 * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
 *
 * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 */
if(typeof deconcept=="undefined"){
	var deconcept=new Object();
}
if(typeof deconcept.util=="undefined"){
	deconcept.util=new Object();
}
if(typeof deconcept.SWFObjectUtil=="undefined"){
	deconcept.SWFObjectUtil=new Object();
}

/////// URLLog Start /////
document.write("<img src='http://appli.ntv.co.jp/url.js?url=" + location.href + "&type=1' width='1' height='1'>")
/////// URLLog End /////

deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){
	if(!document.getElementById){
		return;
	}
	this.DETECT_KEY=_a?_a:"detectflash";
	this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);
	this.params=new Object();
	this.variables=new Object();
	this.attributes=new Array();
	if(_1){
		this.setAttribute("swf",_1);
	}
	if(id){
		this.setAttribute("id",id);
	}
	if(w){
		this.setAttribute("width",w);
	}
	if(h){
		this.setAttribute("height",h);
	}
	if(_5){
		this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));
	}
	this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();
	if(!window.opera&&document.all&&this.installedVer.major>7){
		deconcept.SWFObject.doPrepUnload=true;
	}
	if(c){
		this.addParam("bgcolor",c);
	}
	var q=_7?_7:"high";
	this.addParam("quality",q);
	this.setAttribute("useExpressInstall",false);
	this.setAttribute("doExpressInstall",false);
	
	var _c=(_8)?_8:window.location;
	this.setAttribute("xiRedirectUrl",_c);
	this.setAttribute("redirectUrl","");
	if(_9){
		this.setAttribute("redirectUrl",_9);
	}
};

deconcept.SWFObject.prototype={
	useExpressInstall:function(_d){
		this.xiSWFPath=!_d?"expressinstall.swf":_d;
		this.setAttribute("useExpressInstall",true);
	},setAttribute:function(_e,_f){
		this.attributes[_e]=_f;
	},getAttribute:function(_10){
		return this.attributes[_10];
	},addParam:function(_11,_12){
		this.params[_11]=_12;
	},getParams:function(){
		return this.params;
	},addVariable:function(_13,_14){
		this.variables[_13]=_14;
	},getVariable:function(_15){
		return this.variables[_15];
	},getVariables:function(){
		return this.variables;
	},getVariablePairs:function(){
		var _16=new Array();
		var key;
		var _18=this.getVariables();
		for(key in _18){
			_16[_16.length]=key+"="+_18[key];
		}
		return _16;
	},getSWFHTML:function(){
		var _19="";
		if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){
			if(this.getAttribute("doExpressInstall")){
				this.addVariable("MMplayerType","PlugIn");
				this.setAttribute("swf",this.xiSWFPath);
			}
			_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\"";
			_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";var _1a=this.getParams();
			for(var key in _1a){
				_19+=[key]+"=\""+_1a[key]+"\" ";
			}
			var _1c=this.getVariablePairs().join("&");
			if(_1c.length>0){
				_19+="flashvars=\""+_1c+"\"";
			}
			_19+="/>";
		}else{
			if(this.getAttribute("doExpressInstall")){
				this.addVariable("MMplayerType","ActiveX");
				this.setAttribute("swf",this.xiSWFPath);
			}
			_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\">";
			_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";
			var _1d=this.getParams();
			for(var key in _1d){
				_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";
			}
			var _1f=this.getVariablePairs().join("&");
			if(_1f.length>0){
				_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";
			}
			_19+="</object>";
		}
		return _19;
	},write:function(_20){
		if(this.getAttribute("useExpressInstall")){
			var _21=new deconcept.PlayerVersion([6,0,65]);
			if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){
				this.setAttribute("doExpressInstall",true);
				this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));
				document.title=document.title.slice(0,47)+" - Flash Player Installation";
				this.addVariable("MMdoctitle",document.title);
			}
		}
		if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){
			var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();
			return true;
		}else{
			if(this.getAttribute("redirectUrl")!=""){
				document.location.replace(this.getAttribute("redirectUrl"));
			}
		}
		return false;
	}
};

deconcept.SWFObjectUtil.getPlayerVersion=function(){
	var _23=new deconcept.PlayerVersion([0,0,0]);
	if(navigator.plugins&&navigator.mimeTypes.length){
		var x=navigator.plugins["Shockwave Flash"];
		if(x&&x.description){
			_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));
		}
	}else{
		if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){
			var axo=1;
			var _26=3;
			while(axo){
				try{
					_26++;
					axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);
					_23=new deconcept.PlayerVersion([_26,0,0]);
				}catch(e){
					axo=null;
				}
			}
		}else{
			try{
				var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
			}catch(e){
				try{
					var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
					_23=new deconcept.PlayerVersion([6,0,21]);
					axo.AllowScriptAccess="always";
				}catch(e){
					if(_23.major==6){
						return _23;
					}
				}
				try{
					axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
				}catch(e){
				}
			}
			if(axo!=null){
				_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));
			}
		}
	}
	return _23;
};

deconcept.PlayerVersion=function(_29){
	this.major=_29[0]!=null?parseInt(_29[0]):0;
	this.minor=_29[1]!=null?parseInt(_29[1]):0;
	this.rev=_29[2]!=null?parseInt(_29[2]):0;
};

deconcept.PlayerVersion.prototype.versionIsValid=function(fv){
	if(this.major<fv.major){
		return false;
	}
	if(this.major>fv.major){
		return true;
	}
	if(this.minor<fv.minor){
		return false;
	}
	if(this.minor>fv.minor){
		return true;
	}
	if(this.rev<fv.rev){
		return false;
	}
	return true;
};

deconcept.util={
	getRequestParameter:function(_2b){
		var q=document.location.search||document.location.hash;
		if(_2b==null){
			return q;
		}if(q){
			var _2d=q.substring(1).split("&");
			for(var i=0;i<_2d.length;i++){
				if(_2d[i].substring(0,_2d[i].indexOf("="))==_2b){
					return _2d[i].substring((_2d[i].indexOf("=")+1));
				}
			}
		}
		return "";
	}
};

deconcept.SWFObjectUtil.cleanupSWFs=function(){
	var _2f=document.getElementsByTagName("OBJECT");
	for(var i=_2f.length-1;i>=0;i--){
		_2f[i].style.display="none";
		for(var x in _2f[i]){
			if(typeof _2f[i][x]=="function"){
				_2f[i][x]=function(){};
			}
		}
	}
};

if(deconcept.SWFObject.doPrepUnload){
	if(!deconcept.unloadSet){
		deconcept.SWFObjectUtil.prepUnload=function(){
			__flash_unloadHandler=function(){
			};
			__flash_savedUnloadHandler=function(){
			};
			window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);
		};
		window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);
		deconcept.unloadSet=true;
	}
}

if(!document.getElementById&&document.all){
	document.getElementById=function(id){
		return document.all[id];
	};
}

var getQueryParamValue=deconcept.util.getRequestParameter;
var FlashObject=deconcept.SWFObject;
var SWFObject=deconcept.SWFObject;
/*
 * SWFObject end
 */


function activateOdekake() {
	var ar = document.getElementById("ntvWeatherParts").findTargetWord(document.getElementsByTagName("body")[0].innerHTML);
	var targetWord = ar[0];
	var targetSource = ar[1];
	
	var odekakeWidth = 0;
	var odekakeHeight = 0;
	
	if(isOpera) {
		//odekakeWidth = window.innerWidth;
		//odekakeHeight = window.innerHeight;
		odekakeWidth = document.body.scrollWidth;
		odekakeHeight = document.body.scrollHeight;
	} else {
		odekakeWidth = document.body.clientWidth;
		odekakeHeight = document.body.clientHeight;
	}

	var initialOffset = cumulativeOffset(document.getElementById("ntvWeatherParts"));
	var targetOffset;
	if(targetWord != "") {
		replaceWordWithTargetTag(targetWord);

		targetOffset = cumulativeOffset(document.getElementById("odekake_target_word"));
		targetOffset[1] -= 80;
	} else {
		//targetOffset = [(odekakeWidth - 150) / 2, (odekakeHeight - 348) / 2];
		targetOffset = [odekakeWidth / 3, initialOffset[1] + 150];
	}

	var odekakeFlash = document.getElementById("odekakeFlash");
	try {
		odekakeFlash.width = odekakeWidth;
		odekakeFlash.height = odekakeHeight;
		odekakeFlash.startOdekake(initialOffset[0], initialOffset[1], targetOffset[0], targetOffset[1], targetSource);
	} catch(e) {
		odekakeFlash.width = 1;
		odekakeFlash.height = 1;
		
		document.getElementById("ntvWeatherParts").endOdekake();
	}
}

function replaceWordWithTargetTag(targetWord) {
	// remove older tag
	var oldSection = document.getElementById("odekake_target_word");
	if(oldSection != null) {
		if (navigator.userAgent.indexOf("Firefox") > -1) {
			oldSection.textContent.match(/(.*)/);
		} else {
			oldSection.innerHTML.match(/(.*)/);
			oldSection.outerHTML = '<span style="background-color: ' + (typeof(NtvWeatherParts_OdekakeBgColor) == "undefined" ? "#FFCC00" : NtvWeatherParts_OdekakeBgColor) + ';">' + RegExp.$1 + "<span>";
		}

	}
	// replace!
	var bodyElement = document.getElementsByTagName("body")[0];
	// count
	var countTargetWords = countTargetWordInChildren(bodyElement, targetWord);
	var targetIndex = Math.floor(Math.random() * countTargetWords);
	replaceWordWithTargetTagInChildren(bodyElement, targetWord, targetIndex);
	//replaceWordWithTargetTagInChildren(document.body, targetWord, targetIndex);
}

function replaceWordWithTargetTagInChildren(node, targetWord, targetIndex) {
	switch(node.nodeType) {
		case 1: // element
		for(var i = 0 ; i < node.childNodes.length ; i++) {
			targetIndex = replaceWordWithTargetTagInChildren(node.childNodes[i], targetWord, targetIndex);
		}
		break;

		case 3: // text
		var searchText = node.nodeValue;
		var idx = searchText.search(targetWord);
		var newValue = "";
		//var found = false;
		while(idx != -1) {
			targetIndex--;
			
			if(targetIndex == -1) {
				// 発見
				//found = true;
				newValue += searchText.substring(0, idx) + '<span id="odekake_target_word" style="background-color: ' + (typeof(NtvWeatherParts_OdekakeBgColor) == "undefined" ? "#FFCC00" : NtvWeatherParts_OdekakeBgColor) + ';">' + targetWord + "</span>" + searchText.substring(idx + targetWord.length);

				var elm = document.createElement('span');
				elm.innerHTML = newValue;
				node.parentNode.insertBefore(elm, node);
				node.parentNode.removeChild(node);
				break;
			} else {
				newValue += searchText.substring(0, idx);
			}
				
			searchText = searchText.substring(idx + targetWord.length);
			idx = searchText.search(targetWord);
		}
		break;
	}
	
	return targetIndex;
}

function countTargetWordInChildren(node, targetWord) {
	var count = 0;
	switch(node.nodeType) {
		case 1: // element
		for(var i = 0 ; i < node.childNodes.length ; i++) {
			count += countTargetWordInChildren(node.childNodes[i], targetWord);
		}
		break;

		case 3: // text
		var searchText = node.nodeValue;
		var idx = searchText.search(targetWord);
		while(idx != -1) {
			count++;
				
			searchText = searchText.substring(idx + targetWord.length);
			idx = searchText.search(targetWord);
		}
		break;
	}
	
	return count;
}

function countOdekakgeWordsInDocument(odekakeWord, arBodyElements) {
	var count = 0;
	for(var index = 0 ; index < arBodyElements.length ; index++) {
		if(!arBodyElements[index][1])	continue; // お出かけワード検索範囲外

		var searchText = arBodyElements[index][0];
		var idx = searchText.search(odekakeWord);
		while(idx != -1) {
			count++;
			
			searchText = searchText.substring(idx + odekakeWord.length);//RegExp.rightContext;
			idx = searchText.search(odekakeWord);
		}
	}
	return count;
}

function finishOdekake() {
//	document.getElementById("sectionOdekakeFlash").style.visibility = "hidden";
	var odekakeFlash = document.getElementById("odekakeFlash");
	odekakeFlash.width = 1;
	odekakeFlash.height = 1;
	
	document.getElementById("ntvWeatherParts").endOdekake();
}

function cumulativeOffset(element) {
	var valueT = 0, valueL = 0;
	do {
		valueT += element.offsetTop  || 0;
		valueL += element.offsetLeft || 0;
		element = element.offsetParent;
	} while (element);
	
	return [valueL, valueT];
}

function ntv_openWindow(url, name, option) {
	window.open(url, name, option);
}

function ntv_AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
    var str = '';
    if (isIE && isWin && !isOpera)
    {
  		str += '<object ';
  		for (var i in objAttrs)
  			str += i + '="' + objAttrs[i] + '" ';
  		str += '>';
  		for (var i in params)
  			str += '<param name="' + i + '" value="' + params[i] + '" /> ';
  		str += '</object>';
    } else {
  		str += '<embed ';
  		for (var i in embedAttrs)
  			str += i + '="' + embedAttrs[i] + '" ';
  		str += '> </embed>';
    }

    //document.write(str);
		return str;
}

function ntv_AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  return ntv_AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function addPageLoadedListener(functionToBeCalledOnLoad) {
	if (window.addEventListener) { //for W3C DOM
		window.addEventListener("load", functionToBeCalledOnLoad, false);
	} else if (window.attachEvent) { //for IE
		window.attachEvent("onload", functionToBeCalledOnLoad);
	} else  {
		window.onload = functionToBeCalledOnLoad;
	}
}

if (DetectFlashVer(9, 0, 28)) {
	// if we've detected an acceptable version
	// embed the Flash Content SWF when all tests are passed
	AC_FL_RunContent(
			"src", "http://www.ntv.co.jp/appli/serverdata/ntvWeatherParts",
			"wmode", "transparent",
			"width", "150",
			"height", "348",
			"align", "middle",
			"id", "ntvWeatherParts",
			"quality", "high",
			"bgcolor", "#869ca7",
			"name", "ntvWeatherParts",
			"allowScriptAccess","always",
			"type", "application/x-shockwave-flash",
			"pluginspage", "http://www.adobe.com/go/getflashplayer",
			"flashvars", "userUrl="+window.location+"&area_code=" + NtvWeatherParts_AreaCode
	);
	


} else {  // flash is too old or we can't detect the plugin
	document.write('最新のAdobe Flash　Player が必要です。'
	+ '<a href=http://www.adobe.com/go/getflash/>Get Flash</a>');  // insert non-flash content
}

function onLoad() {
	var div = document.createElement("div");
	div.style.position = "absolute";
	div.id = "sectionOdekakeFlash";
	div.style.zIndex = 9999;
	div.style.top = div.style.left = 0;
	div.style.width = div.style.height = "100";
	document.body.appendChild(div);
	
	var so = new SWFObject("http://www.ntv.co.jp/appli/serverdata/Odekake.swf?" + new Date().getTime(), "odekakeFlash", "1", "1", "9.0.28");
	so.addParam("wmode", "transparent");
	so.addParam("allowScriptAccess", "always");
	so.addParam("flashvars", "urlJumpSorajiro=http://www.ntv.co.jp/appli/serverdata/Flash/Blog_P_Jump_verB.flv");
	so.write(div);
}

addPageLoadedListener(onLoad);
