

var RandomCands = new Array("show", "certain", "drive", "trivial", "happy", "real", "know", "key", "button", "switch", "power", "output", "love", "gain", "absorbed", "deep", "entrance", "excited", "from", "contract", "with", "excitement", "family", "awful", "star", "allow", "way", "spy", "like", "bullet", "get", "current", "water", "gold", "flash", "ブザー", "感情", "道", "不明", "自動", "すっかり", "およそ", "夢中", "いたるところに" , "きっちり" , "かっこいい" , "花形" , "喋る", "myth", "desire", "emotion", "search", "most", "人情", "心", "思い" );
	
	var formHTML =
  '<form name="yakugo">' +
  '<table border="0" cellpadding="0">' +
  '<tr>' +
  '<td>類語検索</td>' +
  '<td><input type="text" name="inp" size="30"></td>' +
  '<td><input type="button" name="kensaku" value="検索" onClick="yakugoSearch()"></td>' +
  '</tr>' +
  '</table>' +
  '</form>';

var DataDirectoryName = "yakugo";
var DisplayAdP = true;

function yakugoDoSearchString(searchWord) {
  //  alert(searchWord);

  yakugoDoSearch(searchWord);
}

function yakugoDoSearch(searchWord) {


  if (searchWord == "") {return;}


  var escapedWord = yakugoEscape_utf8(searchWord);
  escapedWord = escapedWord.toLowerCase();


  while (escapedWord.lastIndexOf("%") >=0) {
    escapedWord = escapedWord.replace("%", "");
  }
  var filename = yakugoSplitFilenameWithSlash(escapedWord);

  //  print ("filename=" + filename);
  try {
    showURL(filename);
  }
  catch(e) {
    var currentURL = location.href;
    if (currentURL.indexOf("/data/") >= 0) {
      filename = "../../../" + filename;
    }
    try {
      location.href = filename;
    } catch(e) {
      var regexp = new RegExp("\/data\/.*\.html.*$");
      currentURL = currentURL.replace(regexp, "/index-notfound.html");
      location.href = currentURL;
    return false;
  }
    
  }
  

  /*

  var currentURL = location.href;
  
  if (currentURL.indexOf("/data/") >= 0) {
    filename = "../../../" + filename;
  }

  try {
    location.href = filename;
  } catch(e) {
    var regexp = new RegExp("\/data\/.*\.html");
    currentURL = currentURL.replace(regexp, "/index-notfound.html");
    location.href = currentURL;
      
    return false;
  }
  */

  return false;
}

function yakugoSearch() {
  
  var searchWord = document.getElementById("yakugo").value;
  if (searchWord == "") {
    searchWord = document.getElementById("yakugo2").value;
  }
  if (searchWord == "") {
    searchWord = document.getElementById("yakugo3").value;
  }
  
  if (searchWord == "") {
    location.href = "http://www.dictjuggler.net/yakugo/"
    return;
  }

  return yakugoDoSearch(searchWord);

  while (out.lastIndexOf("##NR##") >= 0) {
    out = out.replace("##NR##","\n");
  }

  var line = out.split("\|");

  document.getElementById("headword").innerHTML =
    '<h3>' + searchWord + '（' + line[0]  + '）'+ '</h3>';
  document.getElementById("outputarea").innerHTML = line[1];
  return false;
}


function yakugoEscape_utf8(data) {
  if (data == '' || data == null) {
    return '';
  }

  data = data.toString();
  var buffer = '';
  for(var i=0; i<data.length; i++) {
    var c = data.charCodeAt(i);
    var bs = new Array();
    if (c > 0x10000) {

      bs[0] = 0xF0 | ((c & 0x1C0000) >>> 18);
      bs[1] = 0x80 | ((c & 0x3F000) >>> 12);
      bs[2] = 0x80 | ((c & 0xFC0) >>> 6);
      bs[3] = 0x80 | (c & 0x3F);
    }
    else if (c > 0x800) {

      bs[0] = 0xE0 | ((c & 0xF000) >>> 12);
      bs[1] = 0x80 | ((c & 0xFC0) >>> 6);
      bs[2] = 0x80 | (c & 0x3F);
    }
    else if (c > 0x80) {

      bs[0] = 0xC0 | ((c & 0x7C0) >>> 6);
      bs[1] = 0x80 | (c & 0x3F);
    }
    else {

      bs[0] = c;
    }
    for (var j=0; j<bs.length; j++) {
      var b = bs[j];
      var hex = nibble_to_hex((b & 0xF0) >>> 4)
	+ nibble_to_hex(b &0x0F);buffer += '%'+hex;
    }
  }
  return buffer;
}

function nibble_to_hex(nibble) {
  var chars = '0123456789ABCDEF';
  return chars.charAt(nibble);
}




function yakugoSplitFilenameWithSlash(originalEncodedName) {

  if (originalEncodedName.length >= 112) {
    var dir1 = originalEncodedName.substr(0,55); 
    var dir2 = originalEncodedName.substr(55,55);
    var stem = originalEncodedName.substr(110, 56);
  }
  else if (originalEncodedName.length >= 64) {
    var dir1 = originalEncodedName.substr(0,30);
    var dir2 = originalEncodedName.substr(30,30);
    var stem = originalEncodedName.substr(60);
  }






  else if (originalEncodedName.length >= 8) {
    var dir1 = originalEncodedName.substr(0,3);
    var dir2 = originalEncodedName.substr(3,3);
    var stem = originalEncodedName.substr(6);
  }
  else if (originalEncodedName.length >= 5) {
    var dir1 = "000";
    var dir2 = originalEncodedName.substr(0,3);
    var stem = originalEncodedName.substr(3);
  }
  else {
    dir1 = "000";
    dir2 = "000";
    stem = originalEncodedName;
  }
  
  var returnValue = "data/" + dir1 + "/" + dir2 + "/" + stem  + ".html";
  return returnValue;
}



function lookUpExternalDict(word) {
  var i;
  if ((i=word.lastIndexOf("的な")) != -1) {
    word = word.substring(0, i+1);
  }
  else if ( 1 < (i=word.lastIndexOf("する")) ) {
    word = word.substring(0, i);
  }

  word = yakugoEscape_utf8(word);
  var url = "http://dic.yahoo.co.jp/bin/dsearch?p=" + word + "&stype=0&dtype=2&enc=UTF-8";

  location.href = url;
}


function showURL(url) {
  // print ("showURL=" + url);

  var dataURLtailRegexp = new RegExp("\/data\/.*\.html[#0-9a-z]*$");
  var tamatebakoRegexp = new RegExp(DataDirectoryName);
  var topURLtailRegexp = new RegExp("\/[^/]*\.html$");
  var pageAnchorURLRegexp = new RegExp("#.*$");
  var currentFullURL = location.href;
  var currentTopDirectoryURL;

  if (currentFullURL.match(dataURLtailRegexp)) {
    currentTopDirectoryURL = currentFullURL.replace(dataURLtailRegexp, "\/");

  }
  else if (currentFullURL.match(tamatebakoRegexp)) {
    currentTopDirectoryURL = currentFullURL.replace(topURLtailRegexp, "\/");

  }
  else {
    if (currentFullURL.match(topURLtailRegexp)) {
      currentTopDirectoryURL = currentFullURL.replace(topURLtailRegexp, "\/" + DataDirectoryName + "\/");
    }
    else {
      currentTopDirectoryURL = currentFullURL + "\/" + DataDirectoryName + "\/";
    }
    
  }


  url = currentTopDirectoryURL + url;

  var fileProtcol = new RegExp("^file://");


  var request;
  if (fileProtcol.test(url)) {
    request = false;

  }
  else {
    request = createHttpRequestForIE();
  }

  if (! request) {
    try {
      location.href = url;
      return false;
    }
    catch(e) {
      currentURL = currentTopDirectoryURL + "index-notfound.html";
      location.href = currentURL;
      return false;
    }
  }
/*
  agentname = window.navigator.userAgent;
  var agent = new RegExp("MSIE");
  if ( agent.test(agentname) ) { 
  alert(window.navigator.userAgent);
      location.href = url;	
			return false;
	}
*/

  var urlFilePart = url;
  
  urlFilePart = urlFilePart.replace(pageAnchorURLRegexp, "");

  request.open("GET", urlFilePart, false);
  request.send("");
  var stat = request.status;

  if (stat == 200) {
    location.href = url;
    return false;
  }
  /*  404 --> not found
  else if (stat == 404) {
    location.href = url;
    return false;		
  }
  */  
  else {

    location.href = currentTopDirectoryURL +  "index-notfound.html";
  }
  return false;
}



/*
function createHttpRequest() {

  if (window.XMLHttpRequest) {
    return new XMLHttpRequest();
  }
	



  if (window.ActiveXObject){
    try {
      return new ActiveXObject("Msxml2.XMLHTTP") 
	}
    catch (e) {
      try {
	return new ActiveXObject("Microsoft.XMLHTTP") 
	  }
      catch (e2) {
	return null;
      }
    }
  }
  
  return null;

}
*/


function yakugoInitializePage() {
	/* 対応ブラウザでは 検索欄にカーソルを移動 */





}

function outputSearchAdBox(applicationNameShort) {

  var searchBox = 
    '<form name="yakugo-form" id="yakugo-form" onSubmit="yakugoSearch(); return false;">' +
    '  <table>' +
    '    <tr>';

  if (DisplayAdP) {
    searchBox += 
      '      <td align="right" style="padding-right: 3px;"><a href="http://www.dictjuggler.net/"><span id="djcolor2" style="font-size: 18px; font-family:\'Times New Roman\', Times, serif; font-style: italic;">D<span id="djcolor">ict</span>J<span id="djcolor">uggler</span>.net</span></a></td>';
  }

  searchBox +=
    '    </tr>' +
    '    <tr>' +
    '      <td align="right" style="padding-right: 3px; color: #FFFFCB"><a href="../../../">' 
    +  applicationNameShort 
    + '</a></td>'  +
'    </tr>' +
'    <tr>' +
'      <td align="right">' +
'        <input type="text" name="yakugo" id="yakugo" size="20"></td>' +
'    </tr>' +
'    <tr>' +
'      <td align="right">' +
'         <input type="button" name="kensaku" value="日本語/英語 検索" onClick="yakugoSearch()">' +
'      </td>' +
'    </tr>' +
'  </table>' +
    '</form>';

  document.writeln('<div class="search-ad-box">');
  document.writeln(searchBox);
  
  
  if (DisplayAdP) {
		
		if (false) {
      googleVerticalTextAd();
      googleVerticalTextAd();
      googleVerticalTextAd();
		}
		else {


        document.writeln('<iframe src="http://www.dictjuggler.net/yakugo/adpage.html"' +
		     'border="0" frameborder="0" bordercolor="#74D4D5" width="180"' +
		     'height="4000" marginheight="0" marginwidthh="0" scrolling="no"' +
		     'style="margin: 0px; padding: 0px; background-color: #74D4D5;>');
          document.writeln('</iframe>');
		}
  }
  else {
    ;
  }

  document.writeln('</div>');
}

function linkAmazon(book) {
  if (DisplayAdP) {
    location.href = "http://www.amazon.co.jp/gp/search?ie=UTF8&keywords="
      + yakugoEscape_utf8(book)
      + "&tag=honyakuyakugo-22&index=blended&linkCode=ur2&camp=247&creative=1211";
  }
  else {
    location.href = "http://www.amazon.co.jp/gp/search?ie=UTF8&keywords="
      + yakugoEscape_utf8(book)
      + "&index=blended"

      ;




  }
}



function yakugoRandom() {
	num = Math.floor(Math.random()*RandomCands.length);

	
  var cand = RandomCands[num];
	yakugoDoSearchString(cand);
	
  return(false);
}

  function ruigoSearchInYakugo() {
    tamatebakoDoSearchString(document.getElementById("ruigo-kensaku").value);
  }
  
  

  function showURLMainForYakugoSearchFromTamatebako(url) {
    // alert("in showURLMainForYakugoSearchFromTamatebako: " + url);

    var agentname = window.navigator.userAgent;
    var version = window.navigator.appVersion;
    // alert(version);
    //  version = version.substr(0,1);
    //var safari = new RegExp("Safari");
    var oldwebkit = new RegExp("Webkit\/[12348]");
    //alert (version.substr(15));
    if (version && oldwebkit.test(version) ) {
      ;
      // alert("old web kit");
    }
    

    var request;

    var fileProtcol = new RegExp("^file:\/");
    if (fileProtcol.test(url)) {  // file protocolの場合は単純にロード
      request = false;
      // alert(url);
    }
    else {
      request = createHttpRequestForIE();
    }

    if (! request) {
      try {
	location.href = url;
	// alert("cannot open HTTP");
	return false;
      }
      catch(e) {
	currentURL = "http://www.dictjuggler.net/yakugo/index-notfound.html";
	location.href = currentURL;
	return false;
      }
    }

    //    alert("url=" + url);

    var urlFilePart = url;

    // alert("urlFilePart=" + urlFilePart);
    // urlFilePart = urlFilePart.replace(pageAnchorURLRegexp, "");
    // これは今回は余計

    // alert("will get");
    try {
      request.open("GET", urlFilePart, false);
    }
    catch (e) {
      print("exception");
      location.href = "../../../yakugo/index-notfound.html";
      return false;
    }

    try {
      //      alert("after open");
      request.send(""); // ここでexceptionが起こってしまう。
      // alert("after send");
    }
    catch (e) {
      print("exception");
      location.href = "../../../yakugo/index-notfound.html";
      return false;
    }
    
    var stat = request.status;
    // alert("request.status = " + stat);
    if (stat == 200) {
      location.href = url;
      return false;
    }
    /*  404 --> not found */
  else if (stat == 404) {
    location.href = "../../../yakugo/index-notfound.html";
    //location.href = url;
    return false;		
  }

    else {
      // alert("not found. status ="+ request.status);
      location.href = "http://www.dictjuggler.net/yakugo/index-notfound.html";
//      location.href = currentTopDirectoryURL +  "index-notfound.html";
    }
    return false;
  }
