﻿
var HeadlineSplashActivator = function(splashElement, nextButtonElement, backButtonElement) {
	SplashActivatorBase.call(this, "~/headline/?request=ajax.xml", splashElement, nextButtonElement, backButtonElement, TimeSpan.fromSeconds(5), true);
	
	this.parseNodeToElement = function(node) {
		var title = String.empty;
		var postTime = new Date();
		var navigateUrl = String.empty;

		for (var c = 0; c < node.childNodes.length; c++) {
			if (node.childNodes[c].firstChild == null) continue;
			var innerValue = node.childNodes[c].firstChild.nodeValue;
			switch (node.childNodes[c].nodeName) {
				case "title": title = innerValue; break;
				case "postTime": postTime = new Date(innerValue); break;
				case "navigateUrl": navigateUrl = innerValue; break;
			} // switch
		} // for

		var outerElement = document.createElement("div");
		var tableElement = document.createElement("table");
		tableElement.setAttribute("cellspacing", 0);
		var tbodyElement = document.createElement("tbody");
		var trElement = document.createElement("tr");
		var td1Element = document.createElement("td");
		var td2Element = document.createElement("td");

		var aElement = document.createElement("a");
		//マスターページなのでHTTPSからアクセス場合もある。HTTPに直すことが必要。
		aElement.href = PathUtility.toAbsolute(navigateUrl, "http");
		aElement.className = "headline";
		aElement.innerHTML = title;

		td2Element.style.paddingLeft = "10px";

		outerElement.appendChild(tableElement);
		tableElement.appendChild(tbodyElement);
		tbodyElement.appendChild(trElement);
		trElement.appendChild(td1Element);
		trElement.appendChild(td2Element);
		td1Element.appendChild(aElement);

		var timeSpan = new TimeSpan(new Date(), postTime);
		outerElement.customData = { timeSpanElement: td2Element, timeSpan: timeSpan,
			fresh: timeSpan.getTotalDays() <= 7,
			rotten: timeSpan.getTotalMonths() >= 1
		};
		return outerElement;
	};

	var loopValue = new LoopValue();
	loopValue.minValue = 0;
	loopValue.maxValue = 100;
	loopValue.cycleTimeSpan = TimeSpan.fromMilliseconds(1000);

	this.onCustomEffect = delegate(this, function(status, element, opacity) {
		switch (status) {
			case 0: //IndexChanged
				document.setElementOpacity(element.customData.timeSpanElement, 0.0);
				var color = "";
				if (element.customData.fresh) color = "#FFFFFF";
				else if (element.customData.rotten) color = "#CCCCCC";
				else color = "#FFFFFF";
				element.customData.timeSpanElement.innerHTML = "<span class='ruby' style='font-weight:normal;'>" + element.customData.timeSpan.toShortString() + "前</span>";
				element.customData.timeSpanElement.style.color = color;
				break;
			case 1: //OpacityChanged
				document.setElementOpacity(element.customData.timeSpanElement, opacity);
				break;
			case 2: //OpacityMaxReached
				document.setElementOpacity(element.customData.timeSpanElement, 1.0);
				loopValue.restart();
				break;
			case 3: //Waiting
				if (element.customData.fresh) {
					var cv = loopValue.getCurrentValue();
					element.customData.timeSpanElement.style.color = new Color(255, 255 - cv, 255 - cv).toHtml();
				}
				break;
		} //switch
	});
};

Page.addLoadEvent(function() {
	var enhancer = new TextFieldEnhancer();
	var siteSearchKeywordBox = document.getElementById("siteSearch_keyword");
	enhancer.elementToEnhance = siteSearchKeywordBox;
	enhancer.maxLength = 256;
	enhancer.isRequired = true;
	enhancer.watermarkText = "Microsoft Bingで検索する";
	enhancer.enableTrimming = true;
	enhancer.enhance();
	var searchInButtonElement = document.getElementById("siteSearch_searchInButton");
	searchInButtonElement.onclick = function() {
		var formElement = document.getElementById("siteSearchForm");
		if (formElement.onsubmit()) {
			siteSearchKeywordBox.value = siteSearchKeywordBox.value + " site:sigonsoft.com";
			formElement.submit();
		}
	};
	var searchOutButtonElement = document.getElementById("siteSearch_searchOutButton");
	searchOutButtonElement.onclick = function() {
		var formElement = document.getElementById("siteSearchForm");
		if (formElement.onsubmit()) {
			siteSearchKeywordBox.value = siteSearchKeywordBox.value;
			formElement.submit();
		}
	};
	var splashTextElement = document.getElementById("__headline0");
	var nextButtonElement = document.getElementById("__headline1");
	var backButtonElement = document.getElementById("__headline2");
	var splashActivator = new HeadlineSplashActivator(splashTextElement, nextButtonElement, backButtonElement);
	splashActivator.activate();
});