// ---- ---- ---- ---- * ---- ---- ---- ----
// GAMC Checker **** 2004/04/03 v1.10
// GAMC Checker **** 2005/05/01 v2.00
// GAMC Checker **** 2005/08/01 v3.00 for GAMC2 v5.03
// アップ予定のGIF画像が規約に基づいたものかをチェックする
// ---- ---- ---- ---- * ---- ---- ---- ----


/** window.onload defer */
Event.domReady.add(function() {
  adv.onload();
  anime.onload();
});


/** new function */
function $(id) {
	return document.getElementById(id);
}

function adv() { }
var adv = new adv();
adv = {
	onload: function() {
		var elementDefineList = $("input_form");
		var elementDefineData = document.createElement("dd");
		var elementDiv = document.createElement("div");
		    elementDiv.setAttribute("className", "ads_anchor"); // onlyIE[http://nanto.asablo.jp/blog/2005/10/29/123294]
		    elementDiv.setAttribute("class", "ads_anchor");
		var elementBreak = document.createElement("br");
		var elementAnchor;
		var elementImage;
		var elementText;
		if (0) {
			elementImage = document.createElement("img");
			elementImage.setAttribute("src", "ads-img/cher.jpg");
			elementImage.setAttribute("style", "float:left;");
			elementImage.style.cssText = "float:left;";
			elementImage.setAttribute("width", "170");
			elementImage.setAttribute("height", "100");
			elementDiv.appendChild(elementImage);
			// ----
			elementText = document.createTextNode("[Cher 2009 Spring/Summer Collection]");
			elementDiv.appendChild(elementText);
			elementDiv.appendChild(document.createElement("br"));
			elementText = document.createTextNode("この本の付録に可愛いブランドエコバッグが付いてきます！");
			elementDiv.appendChild(elementText);
			elementDiv.appendChild(elementBreak);
			// ----
			elementAnchor = document.createElement("a");
			elementAnchor.setAttribute("rel", "nofollow");
			elementAnchor.setAttribute("target", "_blank");
			elementAnchor.setAttribute("href", "/furl.cgi?amazon-9784796668668");
			elementText = document.createTextNode("[Amazonで購入]");
			elementAnchor.appendChild(elementText);
			elementDiv.appendChild(elementAnchor);
			// ----
			elementText = document.createTextNode(" ");
			elementDiv.appendChild(elementText);
			// ----
			elementAnchor = document.createElement("a");
			elementAnchor.setAttribute("rel", "nofollow");
			elementAnchor.setAttribute("target", "_blank");
			elementAnchor.setAttribute("href", "/furl.cgi?rakuten-9784796668668");
			elementText = document.createTextNode("[楽天で購入]");
			elementAnchor.appendChild(elementText);
			elementDiv.appendChild(elementAnchor);
		}
		if (0) {
			elementDiv.appendChild(elementBreak);
			elementAnchor = document.createElement("a");
			elementAnchor.setAttribute("rel", "nofollow");
			elementAnchor.setAttribute("target", "_blank");
			elementAnchor.setAttribute("href", "/furl.cgi?eneloop-kairo");
			elementText = document.createTextNode("地球に優しいエコな充電式カイロ「エネループカイロ」のレビュー書きました！");
			elementAnchor.appendChild(elementText);
			elementDiv.appendChild(elementAnchor);
		}
		if (0) {
			elementDiv.appendChild(elementBreak);
			elementAnchor = document.createElement("a");
			elementAnchor.setAttribute("rel", "nofollow");
			elementAnchor.setAttribute("target", "_blank");
			elementAnchor.setAttribute("href", "/furl.cgi?pitatoku");
			elementText = document.createTextNode("定期代を節約しよう★PiTaPa(ピタパ)で得する裏技サイト「ピタ得」公開中！");
			elementAnchor.appendChild(elementText);
			elementDiv.appendChild(elementAnchor);
		}
		if (0) {
			elementDiv.appendChild(elementBreak);
			elementAnchor = document.createElement("a");
			elementAnchor.setAttribute("rel", "nofollow");
			elementAnchor.setAttribute("target", "_blank");
			elementAnchor.setAttribute("href", "/furl.cgi?netbook-list2a");
			elementText = document.createTextNode("話題の3万円台から買える格安パソコン「Netbook(ネットブック)」比較リスト公開中！");
			elementAnchor.appendChild(elementText);
			elementDiv.appendChild(elementAnchor);
		}
		if (0) {
			elementDiv.appendChild(elementBreak);
			elementAnchor = document.createElement("a");
			elementAnchor.setAttribute("rel", "nofollow");
			elementAnchor.setAttribute("target", "_blank");
			elementAnchor.setAttribute("href", "/furl.cgi?netbook-list3");
			elementText = document.createTextNode("!!大阪府限定!! 私の中古ミニノートですが初心者に安心★使い方などを教えます!!詳しくは見てね♪");
			elementAnchor.appendChild(elementText);
			elementDiv.appendChild(elementAnchor);
		}
		if (0) {
			elementText = document.createTextNode("先着2組4名様にUSJ入場券格安販売中！");
			elementDiv.appendChild(elementText);
			elementAnchor = document.createElement("a");
			elementAnchor.setAttribute("href", "http://www.animegif.net/about/usj-ticket.html");
			elementText = document.createTextNode("⇒詳細内容");
			elementAnchor.appendChild(elementText);
			elementDiv.appendChild(elementAnchor);
		}
		if (1) {
			elementText = document.createTextNode("[2010-01-01] 高機能なサーバに移転しました♪");
			elementDiv.appendChild(elementText);
			elementAnchor = document.createElement("a");
			elementAnchor.setAttribute("target", "_blank");
			elementAnchor.setAttribute("href", "http://www.value-domain.com/?ref=wsj21ponta");
			elementText = document.createTextNode("⇒移転先");
			elementAnchor.appendChild(elementText);
			elementDiv.appendChild(elementAnchor);
		}
		elementDefineData.appendChild(elementDiv);
		elementDefineList.appendChild(elementDefineData);
	}
}


/** コンストラクタ */
function wwwAnimegifNet() { }
var anime = new wwwAnimegifNet();
anime = {
	fileFlag: false,
	// onload
	onload: function() {
		var form = document.forms[0];
		for (var i = 0; i < form.length; i++) {
			if (form[i].name) {
				// [Main] 日本語入力不可設定
				if (form[i].name.match(/^loopCount|(up|tranClr|delayTime)\d{2}?/)) {
					form[i].style.cssText = 'ime-mode:disabled;';
				}
				// [Main] ループ回数指定
				if (form[i].name == 'ajaxActionLoopCount') {
					this.observe(form[i], 'keyup', function(){anime.ajaxShowLoopCount(this)});
				}
				// [Main] アニメ間隔指定
				if (form[i].name == 'ajaxActionDelayFlag') {
					this.observe(form[i], 'keyup', function(){anime.ajaxShowLoopCount(this)});
				}
				// [Main] [写真画像]
				if (form[i].name.match(/^up\d{2}$/)) {
					this.observe(form[i], 'change', function(){anime.ajaxShowFileUpload(this)});
				}
				// [Main] [写真画像] アニメ間隔指定
				if (form[i].name.match(/^delayTime$/)) {
					this.observe(form[i], 'keyup', function(){anime.ajaxShowDelayTime(this, true)});
				}
				// [Main] [写真画像] アニメ間隔指定
				if (form[i].name.match(/^delayTime\d{2}$/)) {
					this.observe(form[i], 'keyup', function(){anime.ajaxShowDelayTime(this, false)});
				}
				// [Main] [写真画像] 透過色指定
				if (form[i].name.match(/^tranClr$/)) {
					this.observe(form[i], 'keyup', function(){anime.ajaxShowTranClr(this)});
				}
				// [Main] [写真画像] 透過色指定 [非入力項目設定[個別透過色設定]]
				if (form[i].name.match(/^tranClr\d{2}$/)) {
					form[i].readOnly = true;
				}
				// [Main] Javascript有効判定
				if (form[i].name == 'javascript') {
					form[i].value = '1';
				}
				// [Sub] 透過色指定画面
				if (form[i].name.match(/^fileNameId|posX|posY|tranHex$/)) {
					form[i].readOnly = true;
				}
			}
		}
		// サブミット
		if ($('ajaxActionForm')) {
			this.observe($('ajaxActionForm'), 'submit', function(){return anime.ajaxShowSubmit()});
		}
		if ($('ajaxActionSubmit')) {
			$('ajaxActionSubmit').disabled = false;
		}
	},
	// [Main] 透過色指定用リンク[サブ画面]
	showPict: function(fileId, num) {
		var openFile = './?getTransparent&fileNameId=' + fileId + '-' + num;
		var wnd = window.open(openFile, 'showPict', 'width=800,height=480,status=yes,scrollbars=yes,resizable=yes');
	},
	// [Sub] 透過色設定用onload
	retVars: function(flag) {
		var fileNameId = document.forms[0].fileNameId.value;
		var tranCnt = fileNameId.substr(fileNameId.length - 2);
		var tranHex = document.forms[0].tranHex.value;
		if (flag) {
			if (tranHex) {
				window.opener.document.forms[0]['tranClr' + tranCnt].value = tranHex;
				window.close();
			}
		} else {
			window.opener.document.forms[0]['tranClr' + tranCnt].value = '';
			window.close();
		}
	},
	// [CHK] ajaxShowLoopCount ループ回数
	ajaxShowLoopCount: function(obj) {
		var ret = parseInt(obj.value);
		if (isNaN(ret) || ret.length == 0 || !obj.value.match(/^\d+$/)) {
			$('ajaxShowLoopCount').innerHTML = '　<span class="error">※半角数値で入力してください。</span>';
			return false;
		} else if (ret < 0 || 100 < ret) {
			$('ajaxShowLoopCount').innerHTML = '　<span class="error">※0～100の範囲で入力してください。</span>';
			return false;
		} else {
			$('ajaxShowLoopCount').innerHTML = '　<span class="success">OK!</span>';
			return true;
		}
	},
	// [CHK] ajaxShowDelayTime [全体]アニメ間隔
	ajaxShowDelayTime: function(obj, parentFlag) {
		var ret = parseInt(obj.value / 10);
		if (!parentFlag && obj.value == "") {
			return true;
		} else if (isNaN(ret) || ret.length == 0 || !obj.value.match(/^\d*$/)) {
			$('ajaxShowDelayTime').innerHTML = '　<span class="error">※半角数値で入力してください。</span>';
			return false;
		} else if (ret < 1 || 65535 < ret) {
			$('ajaxShowDelayTime').innerHTML = '　<span class="error">※10～655350の範囲で入力してください。</span>';
			return false;
		} else {
			$('ajaxShowDelayTime').innerHTML = ' = <span class="success">' + (obj.value / 1000) + '秒</span>';
			return true;
		}
	},
	// [CHK] ajaxShowTranClr [全体]透過色指定 
	ajaxShowTranClr: function(obj) {
		var ret = obj.value;
		if (ret) {
			if (ret.length != 6) {
				$('ajaxShowTranClr').innerHTML = '　<span class="error">※「RRGGBB」形式で入力してください。</span>';
				return false;
			} else if (!ret.match(/^[0-9a-f]{6}$/i)) {
				$('ajaxShowTranClr').innerHTML = '　<span class="error">※使用できる文字は「0-9,a-f,A-F」です。</span>';
				return false;
			} else {
				$('ajaxShowTranClr').innerHTML = '　<span class="success">OK! (透過色「#' + ret.toUpperCase() + '」)</span>';
				return true;
			}
		} else {
			$('ajaxShowTranClr').innerHTML = '　<span class="success">OK! (透過色指定なし)</span>';
			return true;
		}
	},
	// [CHK] ajaxShowFileUpload
	ajaxShowFileUpload: function(obj) {
		if (!obj.value.length) {
			return true;
		} else if (obj.value.match(/\.(gif|jpg|png|bmp)$/i)) {
			return true;
		} else {
			alert('アップロードできる画像形式は[gif][jpg][png][bmp]のみです。');
			return false;
		}
	},
	// [CHK] ajaxShowSubmit
	ajaxShowSubmit: function() {
		// 再チェック[設定]
		var chkFlag = true;
		chkFlag &= this.ajaxShowLoopCount($('ajaxActionLoopCount'));
		chkFlag &= this.ajaxShowDelayTime($('ajaxActionDelayTime'), true);
		chkFlag &= this.ajaxShowTranClr($('ajaxActionTranClr'));
		for (var i = 1; i <= 15; i++) {
			var cntXX = ("0" + i).substr(-2);
			if ($('up' + cntXX))        { chkFlag &= this.ajaxShowFileUpload($('up' + cntXX)); }
			if ($('delayTime' + cntXX)) { chkFlag &= this.ajaxShowDelayTime($('delayTime' + cntXX), false); }
		}
		// 再チェック[画像]
		var chkFile = false;
		for (var i = 1; i <= 15; i++) {
			var cntXX = ("0" + i).substr(-2);
			if ($('up' + cntXX)) { chkFile |= ($('up' + cntXX).value.length > 0) ? true : false; }
		}
		if ($('ajaxShowCreatePicture')) { chkFile |= true; }
		// 最終チェック
		if (!chkFlag) {
			$('ajaxShowSubmit').innerHTML = '　<span class="error">※各種設定が正しいか確認してください。</span>';
			return false;
		} else if (!chkFile) {
			$('ajaxShowSubmit').innerHTML = '　<span class="error">※アップロードする画像を決定してください。</span>';
			return false;
		} else {
			$('ajaxShowSubmit').innerHTML = '　<span class="success">!送信中!しばらくお待ちください。</span>';
			$('ajaxActionSubmit').disabled = true;
			// 画像サイズチェック
			this.getFileSizeLoopInit();
			return false;
		}
	},
	// [DO] ファイルサイズ取得処理
	imgChk: document.createElement("img"),
	imgLoadCount: 0,
	imgLoadCountMax: 10,
	imgFileCount: 1,
	imgFileSize: 0,
	imgChkOkFlag: true,
	imgLimitSizeFile:  512 * 1024,
	imgLimitSizeAlls: 1024 * 1024,
	getFileSizeLoopInit: function() {
		this.imgFileCount = 1;
		this.imgFileSize = 0;
		this.imgChkOkFlag = true;
		this.getFileSizeLoop();
	},
	getFileSizeLoop: function() {
		var cntXX = ("0" + this.imgFileCount).slice(-2);
		if ($('up' + cntXX)) {
			if ($('up' + cntXX).value.length > 0) {
				this.getFileSize($('up' + cntXX));
			} else {
				this.imgFileCount++;
				this.getFileSizeLoop();
			}
		} else {
			if (this.imgFileSize > this.imgLimitSizeAlls) {
				this.imgChkOkFlag = false;
				$('javascript').value = '2';
				alert("[サイズ制限] ファイルサイズが大きすぎます。処理を中断します。[" + (this.imgFileSize >> 10) + "KB]");
			}
			if (this.imgChkOkFlag) {
				//alert(this.imgChkOkFlag + " [" + (this.imgFileSize >> 10) + "KB]");
				$('ajaxActionForm').submit();
			} else {
				$('ajaxShowSubmit').innerHTML = '　<span class="error">ファイル送信に失敗しました。ファイルサイズが大きすぎます。[' + (this.imgFileSize >> 10) + '/' + (this.imgLimitSizeAlls >> 10) + 'KB]</span>';
				$('ajaxActionSubmit').disabled = false;
			}
		}
	},
	getFileSize: function(fileInputObj) {
		this.imgChk.src = fileInputObj.value;
		this.imgLoadCount = 0;
		this.chkFileSize();
	},
	chkFileSize: function() {
		if (this.imgLoadCount > this.imgLoadCountMax || this.imgChk.complete && this.imgLoadCount > 1 && this.imgChk.fileSize != -1) {
			var fileSize = parseInt(this.imgChk.fileSize);
			if (fileSize > this.imgLimitSizeFile) {
				this.imgChkOkFlag = false;
				alert("[サイズ制限] ファイルサイズが大きすぎます。[" + (fileSize >> 10) + "KB]");
			}
			//alert("[取得完了" + this.imgFileCount + "] " + fileSize + "バイト(" + (this.imgLoadCount*100) + " ミリ秒)");
			this.imgFileSize += fileSize;
			this.imgFileCount++;
			setTimeout("anime.getFileSizeLoop()",100);
		} else {
			// 再取得
			//alert("[再取得]" + this.imgChk.complete + ":" + this.imgLoadCount + ":" + this.imgChk.fileSize);
			this.imgLoadCount++;
			setTimeout("anime.chkFileSize()",100);
		}
	},
	// -------- -------- -------- --------
	observe: function(elm, type, func) {
		if (elm.addEventListener) {
			elm.addEventListener(type, func, false);
		//} else if (elm.attachEvent) {
		//	elm.attachEvent('on' + type, func);
		} else {type
			elm['on' + type] = func;
		}
	}
};
