/**
 * システム名：新CiNii
 * cinii.js Copyright FUJITSU LIMITED 2008.
 * NO.  日付        Ver.    更新者             内容
 * 1    20080722    1.0     富士通株式会社     新規作成
 * 2    20090619    1.1     富士通株式会社     負の数のバリッドチェックを行うように修正
 *                                                 対応箇所: 巻、号、ページ、出版年(From)、出版年(To)
 * 3    20090622    1.1     富士通株式会社     OpenURL受信ページング対応(検索項目ページのUI変更)
 * 4    20100202    1.2     富士通株式会社     CiNii著者名検索機能の開発(検索ボックス：論文検索と著者検索をタブ化)
 * 5    20100219    1.2     富士通株式会社     CiNii著者名検索機能の開発(変数名の変更:author,authorcount,authorsortorder→q,sortorder,count)
 * 6    20100224    1.3     富士通株式会社     CiNii著者名検索機能の開発(doauthor()の追加)
 * 7    20100227    1.4     富士通株式会社     CiNii著者名検索機能の開発(著者詳細cookie値引継ぎ処理追加)
 * 8    20100303    1.5     富士通株式会社     CiNii著者名検索機能の開発(20番目以降詳細画面が表示されない、1件の時にチェックなしでも詳細が開く不具合を修正)
 * 9    20100303    1.6     富士通株式会社     CiNii著者名検索機能の開発(問題指摘の不具合修正)
 * 10   20100318    1.7     富士通株式会社     doFeedback():fileType.valueの取得場所を変更
 * 11   20100402    1.8     富士通株式会社     doFeedback():removeChild(),submit()/openALL():submit()/openAuthorALL():submit()時の実装方法を変更
 * 12   20100607    1.9     富士通株式会社     CiNii実験機と本番機のソース共通化改修
 * 13   20110126    1.10    富士通株式会社     CiNii全文検索機能の開発(検索ボックス：全文検索タブを追加)
 * 14   20111031    1.11    富士通株式会社     UI変更(検索ボックスから"フリーワード","著者名"の表示を削除)
 */

function dosearch() {
	var validResult = validCheck();
	var urlLengthResult = urlLengthCheck();
	var voidResult = voidCheck();
	var fm = document.searchform;

	if(document.listoption){
		document.searchform.count.value = document.listoption.count.value;
		document.searchform.sortorder.value = document.listoption.sortorder.value;
	} else {
		var count = getCookie('count');
		if(count) {
			document.searchform.count.value = count;
		}
		var sortorder = getCookie('sortorder');
		if(sortorder) {
			document.searchform.sortorder.value = sortorder;
		}
	}
	
	if(validResult && urlLengthResult && voidResult) {

		if(document.searchform.submittime){
			if((new Date()).getTime() - document.searchform.submittime.getTime() < 2000){
				return false;
			}else{
				document.searchform.submittime = new Date();
			}
		}else{
			document.searchform.submittime = new Date();
		}
	
		if(fm.q.value == ""){fm.q.value = "";}
		if(fm.q.value.length == 0){fm.q.disabled = true;}
		
		var normalsearch = document.getElementById('art_advanced_search').style.display == 'none';
		fm.title.disabled = normalsearch || fm.title.value.length == 0;
		fm.author.disabled = normalsearch || fm.author.value.length == 0;
		fm.affiliation.disabled = normalsearch || fm.affiliation.value.length == 0;
		fm.journal.disabled = normalsearch || fm.journal.value.length == 0;
		fm.issn.disabled = normalsearch || fm.issn.value.length == 0;
		fm.volume.disabled = normalsearch || fm.volume.value.length == 0;
		fm.issue.disabled = normalsearch || fm.issue.value.length == 0;
		fm.page.disabled = normalsearch || fm.page.value.length == 0;
		fm.publisher.disabled = normalsearch || fm.publisher.value.length == 0;
		fm.references.disabled = normalsearch || fm.references.value.length == 0;
		fm.year_from.disabled = normalsearch || fm.year_from.value.length == 0;
		fm.year_to.disabled = normalsearch || fm.year_to.value.length == 0;

		document.searchform.submit();
		
		fm.q.disabled = false;
		if(fm.q.value.length == 0){
			fm.q.value = "";
			fm.q.style.color = "#999999";
        }
		fm.title.disabled = false;
		fm.author.disabled = false;
		fm.affiliation.disabled = false;
		fm.journal.disabled = false;
		fm.issn.disabled = false;
		fm.volume.disabled = false;
		fm.issue.disabled = false;
		fm.page.disabled = false;
		fm.publisher.disabled = false;
		fm.references.disabled = false;
		fm.year_from.disabled = false;
		fm.year_to.disabled = false;
		
	}
	return validResult && urlLengthResult && voidResult;
}

function deleteCoordinatesByKey() {
    if((window.attachEvent && !window.opera) && (event.keyCode == 13)){
    	dosearch();
    	return false;
    }
    return true;
}

function validCheck(){
	var issn = document.searchform.issn; 
	var volume = document.searchform.volume;
	var issue = document.searchform.issue;
	var page = document.searchform.page;
	var year_from = document.searchform.year_from;
	var year_to = document.searchform.year_to;
	var errormessage = "";

	//ISSNチェック
	if(issn.value.length > 16) {
		errormessage = "ISSN の桁数が不適切です。ISSNを16桁以内で入力してください。";
	}	
	if(issn.value.length > 0 && ! Fulltohalf(issn.value).match(/^[0-9xXｘＸ‐-]+$/)){
		errormessage = "ISSN の入力文字が不適切です。ISSNは数字およびアルファベットの'X'、'x'、記号の'‐'、'-'のみ入力可能です。";
	}
	
	//巻チェック
	if(volume.value.length > 9) {
		errormessage = "巻 の桁数が不適切です。巻を9桁以内で入力してください。";
	}
	// 20090619 MODIFY START 負の数のバリッドチェックを行うように修正
	// if( isNaN(Fulltohalf(volume.value))) {
	if(volume.value.length > 0 && ! Fulltohalf(volume.value).match(/^[0-9]+$/)){
		errormessage = "巻 の入力文字が不適切です。巻は数字で入力して下さい。";
	}
	
	//号チェック
	if(issue.value.length > 9) {
		errormessage = "号 の桁数が不適切です。号を9桁以内で入力してください。";
	}
	// if( isNaN(Fulltohalf(issue.value))) {
	if(issue.value.length > 0 && ! Fulltohalf(issue.value).match(/^[0-9]+$/)) {
		errormessage = "号 の入力文字が不適切です。号は数字で入力して下さい。";
	}
	
	// 20090622 MODIFY START OpenURL受信ページング対応(検索項目ページのUI変更)
	//ページチェック
	if(page.value.length > 9) {
		//errormessage = "ページ の桁数が不適切です。ページを9桁以内で入力してください。";
		var hyphenindex = Fulltohalf(page.value).indexOf("-", 0);
		if(hyphenindex > -1) {
			// 開始ページ桁数チェック
			if(hyphenindex > 9) {
				errormessage = "開始ページ の桁数が不適切です。開始ページを9桁以内で入力してください。";
			}
			// 終了ページ桁数チェック
			if((page.value.length - (hyphenindex + 1)) > 9) {
				errormessage = "終了ページ の桁数が不適切です。終了ページを9桁以内で入力してください。";
			}
		} else {
			errormessage = "ページ の桁数が不適切です。ページを9桁以内で入力してください。";
		}
	}
	// if( isNaN(Fulltohalf(page.value))) {
	if(page.value.length > 0 && ! Fulltohalf(page.value).match(/^[0-9-]+$/)) {
		errormessage = "ページ の入力文字が不適切です。ページは数字および記号の'-'のみ入力可能です。";
	} else {
		var hyphenindex = Fulltohalf(page.value).indexOf("-", 0);
		// 1つ目の"-"
		if(hyphenindex > -1) {
			// 2つ目の"-"
			if(Fulltohalf(page.value).indexOf("-", hyphenindex + 1) > -1) {
				errormessage = "ページ の入力文字の記号 '-' の数が不適切です。'-' は１つ以下で入力して下さい。";
			}
		}
	}
	// 20090622 MODIFY END OpenURL受信ページング対応(検索項目ページのUI変更)
	
	//出版年（From）チェック
	if(year_from.value.length > 4) {
		errormessage = "出版年 の桁数が不適切です。出版年を4桁以内で入力してください。";
	}
	// if( isNaN(Fulltohalf(year_from.value))) {
	if(year_from.value.length > 0 && ! Fulltohalf(year_from.value).match(/^[0-9]+$/)) {
		errormessage = "出版年 の入力文字が不適切です。出版年は数字で入力して下さい。";
	}
	
	//出版年（To）チェック
	if(year_to.value.length > 4) {
		errormessage = "出版年 の桁数が不適切です。出版年を4桁以内で入力してください。";
	}
	// if( isNaN(Fulltohalf(year_to.value))) {
	if(year_to.value.length > 0 && ! Fulltohalf(year_to.value).match(/^[0-9]+$/)) {
		errormessage = "出版年 の入力文字が不適切です。出版年は数字で入力して下さい。";
	}
	// 20090619 MODIFY END 負の数のバリッドチェックを行うように修正
	
	// フリーワード
	if(! searchOperaorCheck(document.searchform.q.value)){
		errormessage = "フリーワード の入力が不適切です。項目間のOR検索、NOT検索は行えません。";
	}
	
	// 論文名
	if(! searchOperaorCheck(document.searchform.title.value)){
		errormessage = "論文名 の入力が不適切です。項目間のOR検索、NOT検索は行えません。";
	}
	
	// 著者名
	if(! searchOperaorCheck(document.searchform.author.value)){
		errormessage = "著者名 の入力が不適切です。項目間のOR検索、NOT検索は行えません。";
	}
	
	//著者所属
	if(! searchOperaorCheck(document.searchform.affiliation.value)){
		errormessage = "著者所属 の入力が不適切です。項目間のOR検索、NOT検索は行えません。";
	}
	
	// 刊行物名
	if(! searchOperaorCheck(document.searchform.journal.value)){
		errormessage = "刊行物名 の入力が不適切です。項目間のOR検索、NOT検索は行えません。";
	}
	
	// 出版者
	if(! searchOperaorCheck(document.searchform.publisher.value)){
		errormessage = "出版者 の入力が不適切です。項目間のOR検索、NOT検索は行えません。";
	}
	
	// 参考文献
	if(! searchOperaorCheck(document.searchform.references.value)){
		errormessage = "参考文献 の入力が不適切です。項目間のOR検索、NOT検索は行えません。";
	}
	
	if(errormessage.length > 0) {
		document.getElementById("validation_error").innerHTML = "<p class=\"error_list\">" + errormessage + "</p>";
		document.getElementById("validation_error").style.display = "block";
		return false;
	}
	
	return true;
}

String.prototype.trim = function() {
	return this.replace(/^[\s　]+|[\s　]+$/g, '');
}

function searchOperaorCheck(value){
	value = value.trim().replace("　", " ");
	if(value.indexOf("OR ") == 0
		|| value.indexOf("ＯＲ ") == 0
		|| value.indexOf("NOT ") == 0
		|| value.indexOf("ＮＯＴ ") == 0
		|| value.indexOf("-") == 0
		|| value.indexOf("\| ") == 0
		|| value.indexOf("\｜ ") == 0
	){
		return false;
	}
	return true;
	
}

function voidCheck(){
	var fm = document.searchform;
	return ! ((fm.q.value.length == 0 || fm.q.value == "") && fm.title.value.length == 0 && fm.author.value.length == 0 &&
			fm.affiliation.value.length == 0 && fm.journal.value.length == 0 && fm.issn.value.length == 0 &&
			fm.volume.value.length == 0 && fm.issue.value.length == 0 && fm.page.value.length == 0 &&
			fm.publisher.value.length == 0 && fm.references.value.length == 0 && fm.year_to.value.length == 0 && fm.year_from.value.length == 0);
}

function urlLengthCheck(){

	if(! (window.attachEvent && !window.opera)){
		return true;
	}
	var fm = document.searchform;
	// 20100607 MOD START CiNii実験機と本番機のソース共通化改修
	var url = "http://".concat(window.location.hostname).concat("/search");

	var total = url.length;
	
	if(fm.q.value != "" && fm.q.value.length != 0){total += encodeURIComponent(fm.q.value).length + 3}
	total += 8; //range
	total += encodeURIComponent(fm.count.value).length + 7;
	total += encodeURIComponent(fm.sortorder.value).length + 11;
	
	if(document.getElementById('art_advanced_search').style.display != 'none'){
		if(fm.title.value.length != 0){total += encodeURIComponent(fm.title.value).length + 7}
		if(fm.author.value.length != 0){total += encodeURIComponent(fm.author.value).length + 8}
		if(fm.affiliation.value.length != 0){total += encodeURIComponent(fm.affiliation.value).length + 13}
		if(fm.journal.value.length != 0){total += encodeURIComponent(fm.journal.value).length + 9}
		if(fm.issn.value.length != 0){total += encodeURIComponent(fm.issn.value).length + 6}
		if(fm.volume.value.length != 0){total += encodeURIComponent(fm.volume.value).length + 8}
		if(fm.issue.value.length != 0){total += encodeURIComponent(fm.issue.value).length + 7}
		if(fm.page.value.length != 0){total += encodeURIComponent(fm.page.value).length + 6}
		if(fm.publisher.value.length != 0){total += encodeURIComponent(fm.publisher.value).length + 11}
		if(fm.references.value.length != 0){total += encodeURIComponent(fm.references.value).length + 12}
		if(fm.year_from.value.length != 0){total += encodeURIComponent(fm.year_from.value).length + 11}
		if(fm.year_to.value.length != 0){total += encodeURIComponent(fm.year_to.value).length + 9}
	}
	
	if(total > 2083) {
		alert("URLの長さが2083文字を超えました。");
		return false;
	}
	
	return true;
}

function linkUrlLengthCheck(url){
	if(! (window.attachEvent && !window.opera)){
		return true;
	}
	// 20100607 MOD START CiNii実験機と本番機のソース共通化改修
	var header = "http://".concat(window.location.hostname);
	if(url.length + header.length > 2083) {
		alert("URLの長さが2083文字を超えました。");
		return false;
	}
	return true;
}

function Fulltohalf(data) {
	var char1 = new Array("１","２","３","４","５","６","７","８","９","０");
	var char2 = new Array(1,2,3,4,5,6,7,8,9,0);
	var count;
	
	while(data.match(/[０-９]/)){     	//入力データに全角数字がある場合
		for(count = 0; count < char1.length; count++){
				//入力データを全角数字から半角数字に置換する
			data = data.replace(char1[count], char2[count]);
		}
	}
	return data;
}

function openALL(){

	if(document.actionform.fileType.value == "default"){
		return false;
	}
	
	if(document.actionform.submittime){
		if((new Date()).getTime() - document.actionform.submittime.getTime() < 2000){
			return false;
		}else{
			document.actionform.submittime = new Date();
		}
	}else{
		document.actionform.submittime = new Date();
	}

	if(document.actionform.fileType.value == 0){
		var checkcount = 0;
		var uri = "/naid/";
		document.searchform.method = "post";
		if(document.searchform.q.value == ""){
			document.searchform.q.value = "";
		}
		
		// 20100303 MODIFY START 20番目以降詳細画面が表示されない、1件の時にチェックなしでも詳細が開く不具合を修正
		if(document.articlelist.docSelect.length){
			for(var i=0; i<document.articlelist.docSelect.length; i++){
				if(document.articlelist.docSelect[i].checked){
					checkcount++;
					var windowName = (new Date()).getTime();
					window.open("about:blank",windowName); 
					document.searchform.target = windowName;
					document.searchform.action = "/naid/" + document.articlelist.docSelect[i].value
					document.searchform.submit();
					
					if(checkcount == 20) {
						break;
					}
				}
			}
		}else{
			if(document.articlelist.docSelect.checked){
				document.searchform.action = "/naid/" + document.articlelist.docSelect.value
				document.searchform.submit();
			}
		}
		// 20100303 MODIFY END 20番目以降詳細画面が表示されない、1件の時にチェックなしでも詳細が開く不具合を修正

		resetSearchbox();
	
	// 20100202 ADD START CiNii著者名検索機能の開発
	} else if(document.actionform.fileType.value == 5){
		var checkcount = 0;
		
		if(document.articlelist.docSelect.length){
			for(var i=0; i<document.articlelist.docSelect.length; i++){
				if(document.articlelist.docSelect[i].checked){
					checkcount++;
				}
			}
		}else{
			if(document.articlelist.docSelect.checked){
				checkcount++;
			}
		}
		if(checkcount > 0 && checkcount < 21){
			doFeedback(1,"");
		}
	// 20100202 ADD END CiNii著者名検索機能の開発

	}else{
		var checked = false;
		
		if(document.articlelist.docSelect.length){
			for(var i=0; i<document.articlelist.docSelect.length; i++){
				if(document.articlelist.docSelect[i].checked){
					checked = true;
					break;
				}
			}
		}else{
			if(document.articlelist.docSelect.checked){
				checked = true;
			}
		}
		if(checked){
			document.articlelist.submit();
		}
	}
	return false;
}

function checkALL(check){
	
	if(document.articlelist.docSelect.length){
		for(var i=0; i<document.articlelist.docSelect.length; i++){
			document.articlelist.docSelect[i].checked = check;
		}
	
	}else{
		document.articlelist.docSelect.checked = check;
	}
	
}

function nocheckalert(){

	if(document.actionform.fileType.value == "default"){
		return false;
	}

    var flg = 0;
    if(document.articlelist.docSelect.length){
        if(document.actionform.fileType.value != 0){
            for(var i=0; i<document.articlelist.docSelect.length; i++){
                if(document.articlelist.docSelect[i].checked){
                    flg++;
                }
            }
            if(flg == 0){
                alert("チェックボックスを選択してください");
            }
            
            // 20100202 ADD START CiNii著者名検索機能の開発
            if(document.actionform.fileType.value == 4 || document.actionform.fileType.value == 5) {
            	if(flg > 20) {
            		alert("選択数は20件以下にしてください。");
            	}
            }
            // 20100202 ADD END CiNii著者名検索機能の開発

        }
    }else{
        if(document.actionform.fileType.value != 0){
            if(document.articlelist.docSelect.checked){
                flg++;
            }
            if(flg == 0){
                alert("チェックボックスを選択してください");
            }

            // 20100202 ADD START CiNii著者名検索機能の開発
            if(document.actionform.fileType.value == 4 || document.actionform.fileType.value == 5) {
            	if(flg > 20) {
            		alert("選択数は20件以下にしてください。");
            	}
            }
            // 20100202 ADD END CiNii著者名検索機能の開発

        }
    }
}

function resetSearchbox(){
	document.searchform.target = "";
	document.searchform.method = "get";
	document.searchform.action = "/search";
	if(document.searchform.q.value == ""){
		document.searchform.q.value = "";
	}

	// 20100202 ADD START CiNii著者名検索機能の開発
	document.authorsearchform.target = "";
	document.authorsearchform.method = "get";
	document.authorsearchform.action = "/author";
	if(document.authorsearchform.q.value == ""){
		document.authorsearchform.q.value = "";
	}
	// 20100202 ADD END CiNii著者名検索機能の開発
}

function opendetail(naid){
	if(document.searchform.q.value == ""){
		document.searchform.q.value = "";
	}
	document.searchform.action = "/naid/" + naid;
	document.searchform.method = "post";
	document.searchform.submit();
	resetSearchbox();
	return false;
}

function detailpaging(uri){
	var lengthCheck = linkUrlLengthCheck(uri);
	if(! lengthCheck){
		return false;
	}
	if(document.searchform.q.value == ""){
		document.searchform.q.value = "";
	}
	document.searchform.action = uri;
	document.searchform.method = "post";
	document.searchform.submit();
	resetSearchbox();
	return false;
}


function doauthorsearch() { // 20100202 ADD CiNii著者名検索機能の開発
	
	var validResult = validCheckAuthor();
	var urlLengthResult = urlLengthCheckAuthor();
	var voidResult = voidCheckAuthor();
	var fm = document.authorsearchform;

	if(document.listoptionauthor){
		fm.count.value = document.listoptionauthor.count.value;
		fm.sortorder.value = document.listoptionauthor.sortorder.value;
	} else {
		var authorCount = getCookie('authorCount');
		if(authorCount) {
			document.authorsearchform.count.value = authorCount;
		}
		var authorSortorder = getCookie('authorSortorder');
		if(authorSortorder) {
			document.authorsearchform.sortorder.value = authorSortorder;
		}
	}
	
	if(validResult && urlLengthResult && voidResult) {

		if(fm.submittime){
			if((new Date()).getTime() - fm.submittime.getTime() < 2000){
				return false;
			}else{
				fm.submittime = new Date();
			}
		}else{
			fm.submittime = new Date();
		}
	
		if(fm.q.value == ""){fm.q.value = "";}
		if(fm.q.value.length == 0){fm.q.disabled = true;}
		
		fm.submit();
		
		fm.q.disabled = false;
		if(fm.q.value.length == 0){
			fm.q.value = "";
			fm.q.style.color = "#999999";
        }
	}
	return validResult && urlLengthResult && voidResult;
}

function deleteCoordinatesByKeyAuthor() { // 20100202 ADD CiNii著者名検索機能の開発
    if((window.attachEvent && !window.opera) && (event.keyCode == 13)){
    	doauthorsearch();
    	return false;
    }
    return true;
}

function validCheckAuthor(){ // 20100202 ADD CiNii著者名検索機能の開発
	var errormessage = "";

	// 著者名
	if(! searchOperaorCheck(document.authorsearchform.q.value)){
		errormessage = "著者名 の入力が不適切です。項目間のOR検索、NOT検索は行えません。";
	}
	
	if(errormessage.length > 0) {
		document.getElementById("author_validation_error").innerHTML = "<p class=\"error_list\">" + errormessage + "</p>";
		document.getElementById("author_validation_error").style.display = "block";
		return false;
	}
	
	return true;
}

function voidCheckAuthor(){ // 20100202 ADD CiNii著者名検索機能の開発
	var fm = document.authorsearchform;
	return ! (fm.q.value.length == 0 || fm.q.value == "");
}

function urlLengthCheckAuthor(){ // 20100202 ADD CiNii著者名検索機能の開発

	if(! (window.attachEvent && !window.opera)){
		return true;
	}
	var fm = document.authorsearchform;
	// 20100607 MOD START CiNii実験機と本番機のソース共通化改修
	var url = "http://".concat(window.location.hostname).concat("/author");

	var total = url.length;
	
	if(fm.q.value != "" && fm.q.value.length != 0){total += encodeURIComponent(fm.q.value).length + 3}
	total += encodeURIComponent(fm.count.value).length + 7;
	total += encodeURIComponent(fm.sortorder.value).length + 11;
	total += 7; // type
	
	if(total > 2083) {
		alert("URLの長さが2083文字を超えました。");
		return false;
	}
	
	return true;
}

function allclear(searchMode) { // 20100202 ADD CiNii著者名検索機能の開発

	document.searchform.q.value = "";
	document.searchform.q.style.color = "#999999";
	document.searchform.title.value = "";
	document.searchform.author.value = "";
	document.searchform.affiliation.value = "";
	document.searchform.journal.value = "";
	document.searchform.issn.value = "";
	document.searchform.volume.value = "";
	document.searchform.issue.value = "";
	document.searchform.page.value = "";
	document.searchform.publisher.value = "";
	document.searchform.references.value = "";
	document.searchform.year_from.value = "";
	document.searchform.year_to.value = "";
	document.authorsearchform.q.value = "";
	document.authorsearchform.q.style.color = "#999999";
	// 20110126 ADD START CiNii全文検索機能の開発
	document.fulltextsearchform.q.value = "";
	document.fulltextsearchform.q.style.color = "#999999";
	// 20110126 ADD END CiNii全文検索機能の開発
	
	switch(searchMode){
	case 0: //Show Article search form
		displaySearchBox(1);
		document.getElementById("filter_all_normal").checked = true;
		document.getElementById("validation_error").innerHTML = '';
		document.getElementById("validation_error").style.display = "none";
		break;
	case 1: //Show Author search form
		document.getElementById("author_validation_error").innerHTML = '';
		document.getElementById("author_validation_error").style.display = "none";
		break;
	// 20110126 ADD START CiNii全文検索機能の開発
	case 2: //Show FullText search form
		document.getElementById("fulltext_validation_error").innerHTML = '';
		document.getElementById("fulltext_validation_error").style.display = "none";
		break;
	// 20110126 ADD END CiNii全文検索機能の開発
	default: //Default
		break;
	}//end of switch
}

function openauthordetail(nrid){ // 20100202 ADD CiNii著者名検索機能の開発
	if(document.authorsearchform.q.value == ""){
		document.authorsearchform.q.value = "";
	}
	document.authorsearchform.action = "/nrid/" + nrid;
	document.authorsearchform.method = "post";
	var count = getCookie('count');
	if(count) {
		document.authorsearchform.count.value = count;
	}
	var sortorder = getCookie('sortorder');
	if(sortorder) {
		document.authorsearchform.sortorder.value = sortorder;
	}
	document.authorsearchform.submit();
	resetSearchbox();
	return false;
}

function openAuthorALL(){ // 20100202 ADD CiNii著者名検索機能の開発

	if(document.actionform.fileType.value == "default"){
		return false;
	}
	
	if(document.actionform.submittime){
		if((new Date()).getTime() - document.actionform.submittime.getTime() < 2000){
			return false;
		}else{
			document.actionform.submittime = new Date();
		}
	}else{
		document.actionform.submittime = new Date();
	}

	if(document.actionform.fileType.value == 0){
		var checkcount = 0;
		var uri = "/nrid/";
		document.authorsearchform.method = "post";
		var count = getCookie('count');
		if(count) {
			document.authorsearchform.count.value = count;
		}
		var sortorder = getCookie('sortorder');
		if(sortorder) {
			document.authorsearchform.sortorder.value = sortorder;
		}
		if(document.authorsearchform.q.value == ""){
			document.authorsearchform.q.value = "";
		}

		// 20100303 MODIFY START 20番目以降詳細画面が表示されない、1件の時にチェックなしでも詳細が開く不具合を修正
		if(document.articlelist.docSelect.length){
			for(var i=0; i<document.articlelist.docSelect.length; i++){
				if(document.articlelist.docSelect[i].checked){
					checkcount++;
					var windowName = (new Date()).getTime();
					window.open("about:blank",windowName); 
					document.authorsearchform.target = windowName;
					document.authorsearchform.action = "/nrid/" + document.articlelist.docSelect[i].value
					document.authorsearchform.submit();

					if(checkcount == 20) {
						break;
					}
				}
			}
		}else{
			if(document.articlelist.docSelect.checked){
				document.authorsearchform.action = "/nrid/" + document.articlelist.docSelect.value
				document.authorsearchform.submit();
			}
		}
		// 20100303 MODIFY END 20番目以降詳細画面が表示されない、1件の時にチェックなしでも詳細が開く不具合を修正

		resetSearchbox();

	} else if(document.actionform.fileType.value == 4){

		var checkcount = 0;
		
		if(document.articlelist.docSelect.length){
			for(var i=0; i<document.articlelist.docSelect.length; i++){
				if(document.articlelist.docSelect[i].checked){
					checkcount++;
				}
			}
		}else{
			if(document.articlelist.docSelect.checked){
				checkcount++;
			}
		}
		if(checkcount > 0 && checkcount < 21){
			doFeedback(1,"");
		}
	}
	return false;
}

function doFeedback(process, lang) { // 20100202 ADD CiNii著者名検索機能の開発
	if(process == 1) {
		var fm_feedback = document.feedbackform;
		var fm_list = document.articlelist;
		var checkcount = 0;

		for(;;){
			var deleted = 0;
			for(var lcnt=0; lcnt<fm_feedback.elements.length; lcnt++){
				var obj = fm_feedback.elements[lcnt];
				if(obj.name == "id"){
					fm_feedback.removeChild(obj);
					deleted = 1;
					break;
				}
			}
			if(deleted == 0){
				break;
			}
		}

		if(fm_list.docSelect.length){
			for(var i=0; i<fm_list.docSelect.length; i++){
				if(fm_list.docSelect[i].checked){
					checkcount ++;
					var input_id = document.createElement("input");
					input_id.type = "hidden";
					input_id.name = "id";
					input_id.value = fm_list.docSelect[i].value;
					fm_feedback.appendChild(input_id);
				}
			}
		}else{
			if(fm_list.docSelect.checked){
				checkcount ++;
				var input_id = document.createElement("input");
				input_id.type = "hidden";
				input_id.name = "id";
				input_id.value = fm_list.docSelect.value;
				fm_feedback.appendChild(input_id);
			}
		}

		if(document.actionform.fileType.value == 4){
			fm_feedback.from.value = 2;
		} else {
			fm_feedback.from.value = 1;
		}
		fm_feedback.process.value = process;

		if(lang) {
			var input_lang = document.createElement("input");
			input_lang.type = "hidden";
			input_lang.name = "lang";
			input_lang.value = lang;
			fm_feedback.appendChild(input_lang);
		}
	
		if(checkcount > 0 && checkcount < 21) {
			var windowName = (new Date()).getTime();
			window.open("about:blank",windowName); 
			fm_feedback.target = windowName;
			fm_feedback.submit();
		}
	
		return false;
	} else if(process == 2) {
		var fm = document.point;
		
		if(validResult) {
			if(fm.submittime){
				if((new Date()).getTime() - fm.submittime.getTime() < 2000){
					return false;
				}else{
					fm.submittime = new Date();
				}
			}else{
				fm.submittime = new Date();
			}
			fm.process.value = process;
			fm.submit();
		}
		return true;
	} else if(process == 3) {
		var validResult = validCheckFeedBack();
		var fm = document.point;
		
		if(validResult) {
			if(fm.submittime){
				if((new Date()).getTime() - fm.submittime.getTime() < 2000){
					return false;
				}else{
					fm.submittime = new Date();
				}
			}else{
				fm.submittime = new Date();
			}

			fm.process.value = process;
			fm.submit();
		}
		return validResult;
	}
	
	return false;
}

function validCheckFeedBack(){ // 20100202 ADD CiNii著者名検索機能の開発
	var errormessage = "";

	// 名前の空チェック
	if(document.point.name.value.length == 0) {
		errormessage = "必須項目（名前）を入力してください。";
	}

	// E-Mailの空チェック
	if(document.point.mail_address.value.length == 0){
		if(errormessage.length > 0) {
			errormessage += "<br />";
		}
		errormessage += "必須項目（E-Mail）を入力してください。";
	}
	// E-Mail「@」有無チェック
	else if(!document.point.mail_address.value.match(/.*[@].*/)){
		if(errormessage.length > 0) {
			errormessage += "<br />";
		}
		errormessage += "メールアドレスに「@」を含めてください。";
	}

	// 指摘内容の選択チェック
	if(document.point.type.value == "default"){
		if(errormessage.length > 0) {
			errormessage += "<br />";
		}
		errormessage += "指摘内容を選択してください。";
	}

	if(errormessage.length > 0) {
		document.getElementById("validation_error2").innerHTML = "<p class=\"error_list\">" + errormessage + "</p>";
		document.getElementById("validation_error2").style.display = "block";
		return false;
	}
	
	return true;
}

function dofeedbackcancel(){ // 20100202 ADD CiNii著者名検索機能の開発
	var fm = document.point;
	// 20100607 MOD START CiNii実験機と本番機のソース共通化改修
	var topUrl = "http://".concat(window.location.hostname).concat("/");
	
	if(fm.submittime){
		if((new Date()).getTime() - fm.submittime.getTime() < 2000){
			return false;
		}else{
			fm.submittime = new Date();
		}
	}else{
		fm.submittime = new Date();
	}

	if(fm.referer.value.length == 0) {
		window.location.href = topurl;
	} else {
		var lengthCheck = linkUrlLengthCheck(fm.referer.value);
		if(! lengthCheck){
			window.location.href = topUrl;
		} else {
			window.location.href = fm.referer.value;
		}
	}
}

function doauthor(nrid){ // 20100223 ADD CiNii著者名検索機能の開発
	document.authorsearchform.count.value = document.listoption.count.value;
	document.authorsearchform.sortorder.value = document.listoption.sortorder.value;
	document.authorsearchform.action = "/nrid/" + nrid;
	document.authorsearchform.method = "post";
	document.authorsearchform.submit();
}

function dofulltextsearch() { // 20110126 ADD CiNii全文検索機能の開発
	
	var validResult = validCheckFullText();
	var urlLengthResult = urlLengthCheckFullText();
	var voidResult = voidCheckFullText();
	var fm = document.fulltextsearchform;

	if(document.listoption){
		fm.count.value = document.listoption.count.value;
		fm.sortorder.value = document.listoption.sortorder.value;
	} else {
		var fulltextCount = getCookie('fulltextCount');
		if(fulltextCount) {
			fm.count.value = fulltextCount;
		}
		var fulltextSortorder = getCookie('fulltextSortorder');
		if(fulltextSortorder) {
			fm.sortorder.value = fulltextSortorder;
		}
	}
	
	if(validResult && urlLengthResult && voidResult) {

		if(fm.submittime){
			if((new Date()).getTime() - fm.submittime.getTime() < 2000){
				return false;
			}else{
				fm.submittime = new Date();
			}
		}else{
			fm.submittime = new Date();
		}
	
		if(fm.q.value == ""){fm.q.value = "";}
		if(fm.q.value.length == 0){fm.q.disabled = true;}
		
		fm.submit();
		
		fm.q.disabled = false;
		if(fm.q.value.length == 0){
			fm.q.value = "";
			fm.q.style.color = "#999999";
        }
	}
	return validResult && urlLengthResult && voidResult;
}

function deleteCoordinatesByKeyFullText() { // 20110126 ADD CiNii全文検索機能の開発
    if((window.attachEvent && !window.opera) && (event.keyCode == 13)){
    	dofulltextsearch();
    	return false;
    }
    return true;
}

function validCheckFullText(){ // 20110126 ADD CiNii全文検索機能の開発
	var errormessage = "";

	// 全文
	if(! searchOperaorCheck(document.fulltextsearchform.q.value)){
		errormessage = "検索語の入力が不適切です。項目間のOR検索、NOT検索は行えません。";
	}
	
	if(errormessage.length > 0) {
		document.getElementById("fulltext_validation_error").innerHTML = "<p class=\"error_list\">" + errormessage + "</p>";
		document.getElementById("fulltext_validation_error").style.display = "block";
		return false;
	}
	
	return true;
}

function voidCheckFullText(){ // 20110126 ADD CiNii全文検索機能の開発
	var fm = document.fulltextsearchform;
	return ! (fm.q.value.length == 0 || fm.q.value == "");
}

function urlLengthCheckFullText(){ // 20110126 ADD CiNii全文検索機能の開発

	if(! (window.attachEvent && !window.opera)){
		return true;
	}
	var fm = document.fulltextsearchform;
	var url = "http://".concat(window.location.hostname).concat("/fulltext");

	var total = url.length;
	
	if(fm.q.value != "" && fm.q.value.length != 0){total += encodeURIComponent(fm.q.value).length + 3}
	total += encodeURIComponent(fm.count.value).length + 7;
	total += encodeURIComponent(fm.sortorder.value).length + 11;
	total += 7; // type
	
	if(total > 2083) {
		alert("URLの長さが2083文字を超えました。");
		return false;
	}
	
	return true;
}

