/*@cc_on 
var doc = document;
eval('var document = doc');
@*/

var obj1 = null;
var obj2 = null;
var cur_obj = null;
var load_chk = false;
var sel1 = "";

//document.onKeyPress = sHgt;

function page_init(){
  obj2 = new sltClass("slotbox2");
  obj1 = new sltClass("slotbox1");
  writeWords();

  obj1.ckname = "sel0";
  obj2.ckname = "sel1";

  obj1.fix = document.forms["ctrl"].elements["fix1"];
  obj2.fix = document.forms["ctrl"].elements["fix2"];

  obj1.sel = document.forms["ctrl"].elements["sel1"];
  obj2.sel = document.forms["ctrl"].elements["sel2"];

  obj1.orig = document.forms["ctrl"].elements["wb1"];
  obj2.orig = document.forms["ctrl"].elements["wb2"];

  var sel0 = r_ck("sel0");
  sel0 = (sel0 != "")? sel0 : "keiyou";
  sel1 = r_ck("sel1");
  sel1 = (sel1 != "")? sel1 : "kensaku";

  chdata(0,sel0);
  init2(sel1);
  obj1.set_sel(sel0);
  obj2.set_sel(sel1);

}

function init2(){
  if(load_chk){
    chdata(1,sel1);load_chk = false;
    //setTimeout("go_result()",1000);
  }
  else{
    setTimeout("init2()",100);
  }
}


function retObj(id){
  if(document.all){
    return document.all(id);
  }
  else if(document.getElementById){
    var ret_o = null;
    return document.getElementById(id);
  }
  return null;
}

function str_replace(ol,nw,val){
  var ret_str = val;
  var tmp_pos = val.indexOf(ol);
  if(tmp_pos > -1){
    ret_str = val.substr(0,tmp_pos);
    ret_str += nw;
    ret_str += val.substring(tmp_pos + ol.length,val.length);
  }

  if(ret_str.indexOf(ol) != -1){
    ret_str = str_replace(ol,nw,ret_str);
  }
  return ret_str;
}

function explode(tk,val_str){
  var orig_str = val_str;
  var ret_arr = new Array();
  ret_arr[0] = orig_str;
  var st_pos = 0;
  var end_pos = orig_str.indexOf(tk);
  orig_str += tk;
  var idx = 0;
  while(end_pos != -1){
    ret_arr[idx] = orig_str.substring(st_pos,end_pos);
    st_pos = end_pos + tk.length;
    end_pos = orig_str.indexOf(tk,st_pos);
    idx++;
  }
  return ret_arr;
}

function dvWord(wd){
  var tmp_arr = new Array();
  var tmp_str = str_replace("　"," ",wd);
  var tmp_str = str_replace("'"," ",wd);

  var tmp_str = str_replace("「"," ",wd);
  var tmp_str = str_replace("」"," ",wd);

  tmp_arr = explode(" ",tmp_str);
  if(tmp_arr.length > 1){
    var rnd = Math.floor(Math.random() * tmp_arr.length);
    return tmp_arr[rnd];
  }
  return tmp_arr[0];
}

function sltClass(nm){
  this.box_obj = retObj(nm);
  if(!this.box_obj){
    return null;
  }

  this.data = null;
  this.ckname = "";
  this.dname = "";
  this.hgt = parseInt(this.box_obj.style.height);
  this.word_obj = this.setWordObj(this.box_obj);

  this.speed = 4;
  this.interval = 81;

  this.move_id = null;
  this.stop_id = null;

  this.sel = null;
  this.fix = null;
  this.orig = null;

  this.wiki_obj = null;

  this.word_mem = [];
  this.inum_mem = [];
  this.mem_idx = 0;
  this.midx_max = 0;
  this.prev = false;
}


sltClass.prototype.set_sel = function(tmp_name){
  var idx = 0;
  if(!tmp_name){
    var tmp_name = this.dname;
  }
  while(this.sel[idx]){
    if(this.sel[idx].value == tmp_name){
      this.sel[idx].selected = true;
      break;
    }
    idx++;
  }
}

function sw(){
  /*

  if(obj1.word_obj[1].style.display == "block"){
    obj1.orig.value = tmp_2;
    obj2.word_obj[1].style.display = "block";
  }
  else{
    obj1.word_obj[0].innerHTML = tmp_2;
  }

  if(obj2.word_obj[1].style.display == "block"){
    obj2.orig.value = tmp_str;
  }
  else{
    obj2.word_obj[0].innerHTML = tmp_str;
  }


  var tmp_str = obj1.word_obj[0].innerHTML;
  if(obj1.word_obj[1].style.display == "block"){
    tmp_str = obj1.word_obj[1].innerHTML;
  }
  var tmp_2 = obj2.word_obj[0].innerHTML;
  if(obj2.word_obj[1].style.display == "block"){
    tmp_str = obj2.word_obj[1].innerHTML;
  }

  obj1.word_obj[0].innerHTML = obj2.word_obj[0].innerHTML;
  obj2.word_obj[0].innerHTML = tmp_str;
  */

  var tmp_1 = (obj1.orig.value != "")? obj1.orig.value : obj1.word_obj[0].innerHTML;
  var tmp_2 = (obj2.orig.value != "")? obj2.orig.value : obj2.word_obj[0].innerHTML;

  var tmp_str = "" + obj2.dname;
  if(obj1.dname == "orig"){
    //alert("chk0");
    chdata(1,"orig");
    obj2.orig.value = tmp_1;
  }
  else{
    obj2.orig.value = "";
    obj2.word_obj[0].innerHTML = tmp_1;
    obj2.word_obj[0].style.display = "block";
    obj2.word_obj[1].style.display = "none";
    obj2.dname = obj1.dname;
  }
  obj2.set_sel(obj1.dname);

  if(tmp_str == "orig"){
    //alert("chk");
    chdata(0,"orig");
    obj1.orig.value = tmp_2;
  }
  else{
    obj1.orig.value = "";
    obj1.word_obj[0].innerHTML = tmp_2;
    obj1.word_obj[0].style.display = "block";
    obj1.word_obj[1].style.display = "none";
    obj1.dname = tmp_str;
  }
  obj1.set_sel(tmp_str);

  /*
  tmp_str = obj1.word_obj[0].innerHTML;
  obj1.word_obj[0].innerHTML = obj2.word_obj[0].innerHTML;
  obj2.word_obj[0].innerHTML = tmp_str;

  tmp_str = obj1.orig.value;
  obj1.orig.value = obj2.orig.value;
  obj2.orig.value = tmp_str;
  */


  /*
  obj1.word_obj[0].style.display = (obj2.dname == "orig")? "none" : "block";
  obj1.word_obj[1].style.display = (obj2.dname == "orig")? "block" : "none";
  obj2.word_obj[0].style.display = (obj1.dname == "orig")? "none" : "block";
  obj2.word_obj[1].style.display = (obj1.dname == "orig")? "block" : "none";
  */

  /*
  tmp_str = obj1.word_obj[1].style.display;
  obj1.word_obj[1].style.display = obj2.word_obj[1].style.display;
  obj2.word_obj[1].style.display = tmp_str;
  alert(tmp_str);
  */


  tmp_str = obj1.data;
  obj1.data = obj2.data;
  obj2.data = tmp_str;

  tmp_str = obj1.word_mem[obj1.mem_idx];
  obj1.word_mem[obj1.mem_idx] = obj2.word_mem[obj2.mem_idx];
  obj2.word_mem[obj2.mem_idx] = tmp_str;

  /*
  tmp_str = obj1.dname;
  obj1.dname = obj2.dname;
  obj2.dname = tmp_str;
  obj1.set_sel();
  obj2.set_sel();
  */

  tmp_str = obj1.fix.checked;
  obj1.fix.checked = obj2.fix.checked;
  obj2.fix.checked = tmp_str;
  //alert(tmp_str);
  go_result();
}


sltClass.prototype.setWord = function(obj){
  this.mem_idx++;
  if(this.mem_idx <= this.midx_max){
    obj.innerHTML = this.word_mem[this.mem_idx]; // + "("+this.mem_idx+")";
  }
  else{
    var idx = Math.floor(Math.random() * this.data.length);
    //alert(typeof(this.data[idx]));
    if(typeof(this.data[idx]) == "object"){
      //this.word_mem[this.mem_idx] = this.data[idx][0];
      this.word_mem[this.mem_idx] = dvWord(this.data[idx][0]);
      this.inum_mem[this.mem_idx] = this.data[idx][1];
    }
    else{
      //this.word_mem[this.mem_idx] = str_replace(" ","　",this.data[idx]);
      this.word_mem[this.mem_idx] = this.data[idx];
    }
    obj.innerHTML = this.word_mem[this.mem_idx]; // + "("+this.mem_idx+")";
    //alert(obj.innerHTML);
    this.midx_max = this.mem_idx;
    if(this.mem_idx > 100){
      delete this.word_mem[this.mem_idx - 100];
      delete this.inum_mem[this.mem_idx - 100];
    }
    //alert("setWord mem_idx="+this.mem_idx+",word_mem[mem_idx]="+this.word_mem[this.mem_idx]);
  }
  this.setHgt(obj);
  go_result();
}

sltClass.prototype.prevWord = function(obj){
  var tmp_idx = this.mem_idx - 1;

  if(tmp_idx < 1 || tmp_idx < this.midx_max - 99){
    //alert("chk");
    tmp_idx = this.mem_idx;
  }
  obj.innerHTML = this.word_mem[tmp_idx]; // + "("+tmp_idx+")";
  //alert("prevWord tmp_idx="+tmp_idx+",word_mem[tmp_idx]="+this.word_mem[tmp_idx]);

  this.mem_idx = tmp_idx;
  this.setHgt(obj);
  go_result();
}

sltClass.prototype.setHgt = function(obj){
  obj.style.height = "10px";
  var tmp_hgt = parseInt(obj.scrollHeight);
  obj.style.height = tmp_hgt + "px";
  tmp_hgt = Math.floor((this.hgt - tmp_hgt) / 2);
  tmp_hgt = (tmp_hgt < 0)? 0 : tmp_hgt;
  obj.style.top = tmp_hgt + "px";
}

sltClass.prototype.setWordObj = function(){
  var ret_obj = new Array();
  var word_tmp = this.box_obj.firstChild;

  var idx = 0;
  while(word_tmp){
    //this.setWord(word_tmp);
    ret_obj[idx] = word_tmp;
    word_tmp = word_tmp.nextSibling;
    idx++;
  }

  //alert("setWordObj this.hgt="+this.hgt+",this.itemhgt="+this.itemhgt+",idx="+idx);

  for(jj = 0;jj < ret_obj.length;jj++){
    var tmp_top = ((jj * -1) * this.hgt);
    ret_obj[jj].style.top = tmp_top + "px";
  }
  return ret_obj;
}


sltClass.prototype.setData = function(dt){
  this.data = dt;
  this.setWord(this.word_obj[0]);

  load_chk = true;
}



sltClass.prototype.mvWord = function(){
  //var ret_val = 0;
  //var chk_val = this.hgt * (this.word_obj.length - 1)

  if(this.fix.checked == false && this.dname != "orig"){
    this.setWord(this.word_obj[0]);
  }
}

sltClass.prototype.backWord = function(){
  //var ret_val = 0;
  //var chk_val = this.hgt * (-1);

  if(this.fix.checked == false && this.dname != "orig"){
    this.prevWord(this.word_obj[0]);
  }
}

sltClass.prototype.wikiSet = function(fname){
  if(!fname || fname == "wiki"){
    var tmp_idx = Math.floor(Math.random() * 100);
    var tmp_url = "js/wiki" + tmp_idx + ".js";
  }
  else{
    var tmp_url = "js/"+fname+".js";
  }

  if(this.wiki_obj){
    document.body.removeChild(this.wiki_obj);
  }
  this.wiki_obj = document.createElement('script');
  this.wiki_obj.src = tmp_url
  document.body.appendChild(this.wiki_obj);
}

function sHgt(id){
  var tmp_obj = (id)? obj2 : obj1;
  if(!tmp_obj){ return; }
  tmp_obj.setHgt(tmp_obj.word_obj[1]);
}

function chdata(id,val){
  var tmp_obj = (id)? obj2 : obj1;
  if(!tmp_obj){ return; }

  if(val == "orig"){
    tmp_obj.dname = val;
    //tmp_obj.fix.checked = true;

    tmp_obj.orig.value = tmp_obj.word_obj[0].innerHTML;
    tmp_obj.word_obj[1].style.display = "block";
    tmp_obj.word_obj[0].style.display = "none";
    tmp_obj.word_obj[0].innerHTML = "";
    tmp_obj.setHgt(tmp_obj.word_obj[1]);
    tmp_obj.orig.focus();

  }
  else{
    tmp_obj.word_obj[0].style.display = "block";
    tmp_obj.word_obj[1].style.display = "none";
    tmp_obj.orig.value = "";

    cur_obj = tmp_obj;
    tmp_obj.dname = val;
    w_ck(tmp_obj.ckname,val);
    tmp_obj.wikiSet(val);
  }
}

function setMove(id,val){
  if(!val || val.value == "stop"){
    stopMove(id);
    val.value = "start";
  }
  else if(val.value == "start"){
    startMove(id);
    val.value = "stop";
  }
}

function startMove(id){
  var tmp_obj = (id)? obj2 : obj1;
  if(!tmp_obj){
    return;
  }

  tmp_obj.mvWord();
}

function stopMove(id){
  var tmp_obj = (id)? obj2 : obj1;
  if(!tmp_obj){
    return;
  }
  if(tmp_obj.move_id){
    clearTimeout(tmp_obj.move_id);
    tmp_obj.move_id = null;
  }

  var chk_val = (tmp_obj.prev)? tmp_obj.backWord() : tmp_obj.mvWord();
  tmp_obj.prev = false;
}

var push_chk = false;

function mvOne(id,chk_val){
  if(!push_chk || !chk_val){
    if(id.indexOf("0") != -1){
      obj1.interval = 10;
      stopMove(0);
    }
    if(id.indexOf("1") != -1){
      obj2.interval = 10;
      stopMove(1);
    }
    if(!chk_val){
      push_chk = true;
    }
  }
  else{
    push_chk = false;
  }
  go_result();
}

function mvPrev(id){
  if(id.indexOf("0") != -1){
    obj1.interval = 10;
    obj1.prev = true;
    stopMove(0);
  }
  if(id.indexOf("1") != -1){
    obj2.interval = 10;
    obj2.prev = true;
    stopMove(1);
  }
  go_result();  
}

function showMean(id,obj){
  var tmp_obj = (id)? obj2 : obj1;
  
  if(tmp_obj.dname == "orig"){
    return false;
  }

  if(tmp_obj.dname == "wiki"){
    var url_wiki = "http://en.wikipedia.org/wiki/";
    var sch_str = obj.innerHTML;
    sch_str = encodeURIComponent(sch_str);
    url_wiki += sch_str;

    wopen0(url_wiki);
  }
  else if(tmp_obj.dname == "kensaku"){
    var sch_url = "http://search.yahoo.com/search?p=";
    var sch_str = obj.innerHTML;
    sch_url += encodeURIComponent(sch_str);  
    wopen0(sch_url);
  }

  else if(tmp_obj.dname == "hatena"){
    var sch_url = "http://search.hatena.ne.jp/keyword?word=";
    var sch_str = obj.innerHTML;
    sch_url += encodeURIComponent(sch_str);  
    wopen0(sch_url);
  }

  else if(tmp_obj.dname == "amz" && tmp_obj.inum_mem[tmp_obj.mem_idx]){
    var sch_url = "http://www.amazon.com/exec/obidos/ASIN/";
    sch_url += tmp_obj.inum_mem[tmp_obj.mem_idx];
    sch_url += "/wordsj-20";
    wopen0(sch_url);
  }


  else{
    var url_yh = obj.innerHTML;
    url_yh = encodeURIComponent(url_yh);
    url_yh = "http://www.answers.com/"+url_yh;
    //url_yh = "http://search.yahoo.co.jp/search?p=" + url_yh;
    //url_yh += "&dsearch.x=33&dsearch.y=12&fr=ysvn&ei=%A2%A5%A2%A5%A2%A5";
    wopen0(url_yh);

    //var tmp_fm = document.forms["y_form"];
    //tmp_fm.elements["p"].value = obj.innerHTML;
    //tmp_fm.submit();
  }
}


function wopen0(url_str,wth,hgt){ 
  var ww=window.outerWidth;
  var wh=window.outerHeight;
  var x=(ww-wth)/2;
  var y=(wh-hgt)/2;
  dlg_obj = window.open(url_str,"subwin","toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width="+ww+"px,height="+wh+"px,left="+x+"px,top="+y+"px");

}


function ret_aj_obj(){

  if(window.ActiveXObject){
    var ret_obj = new ActiveXObject("Msxml2.XMLHTTP");
    if(!ret_obj){  
      ret_obj = new ActiveXObject("Microsoft.XMLHTTP") 
    }
    return ret_obj;
  }
  else if(window.XMLHttpRequest){
    return new XMLHttpRequest();
  }
  return null;
}

var rq_chk = true;

function requestFile(data,method,fileName,async){
  var httpoj = ret_aj_obj();
  rq_chk = false;
  httpoj.onreadystatechange = function(){ 
    if (httpoj.readyState==4){ 
      rq_chk = true;
      var val_str = httpoj.responseText;
      if(val_str.indexOf("cnt=") != -1){
	on_loaded(val_str);
      }
    }
  }

  if(!document.all && document.getElementById){
    //  httpoj.open("POST" , fileName , async );

    httpoj.open("GET" , fileName , async );
    httpoj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    httpoj.send('');
  }
  else{
    httpoj.open("GET" , fileName , async );

    if((typeof httpoj.setRequestHeader) == 'function'){
      httpoj.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=EUC-JP');
    }

    httpoj.send('');
  }
}

function on_loaded(val){
  //var cnt_val = val.split("=");
  //writeWords(parseInt(cnt_val[1]));
}

function r_ck(v_name){
  //alert(document.cookie);
  var ck = document.cookie + ";";
  var dataArr = new Array();
  var stPos = 0;
  var tmpPos = ck.indexOf(";");
  var endPos = ck.length;
  var ii=0;
  var ttl = "";
  while(tmpPos != -1 && tmpPos < endPos){
    dataArr[ii] = ck.substring(stPos,tmpPos);
    if(dataArr[ii].indexOf(v_name) != -1 && dataArr[ii].indexOf("=") != -1){
      st_pos = dataArr[ii].indexOf("=");
      ttl = dataArr[ii].substring(st_pos+1,dataArr[ii].length);
      break;
    }
    stPos = tmpPos+1;
    tmpPos = ck.indexOf(";",stPos);
    ii++;
  }
  return unescape(ttl);
}

function w_ck(v_name,val){
  if(val != ""){
    var setDay = new Date();
    setDay.setTime(setDay.getTime()+(365*1000*60*60*24));
    var expDay = setDay.toGMTString();
  }
  else{
    var expDay = "expires=Sun,01-Jan-70 00:00:01 GMT";
  }
  var ck_str = v_name + "=" + escape(val);
  document.cookie = ck_str + ";expires="+expDay;
}

/*
function setWords(){
  var tmp_str = obj1.word_obj[0].innerHTML; //obj1.word_mem[obj1.mem_idx];
  tmp_str += " ";
  tmp_str += obj2.word_obj[0].innerHTML; //obj2.word_mem[obj2.mem_idx];
  alert(tmp_str);
  tmp_str = "result.php?words="+encodeURIComponent(tmp_str);
  wopen0(tmp_str);
  //window.location.href = tmp_str;
}
*/

function chkWords(){
  var tmp_str =  (obj1.orig.value != "")? obj1.orig.value : obj1.word_obj[0].innerHTML;
  tmp_str += " ";
  tmp_str +=  (obj2.orig.value != "")? obj2.orig.value : obj2.word_obj[0].innerHTML;

  var ck_str = r_ck("words");
  if(ck_str.indexOf(tmp_str) != -1){
    return;
  }

  var ck_arr = [];
  if(ck_str == ""){
    ck_arr[0] = tmp_str;
  }
  else{
    ck_arr = ck_str.split('"');
    ck_arr.push(tmp_str);
    if(ck_arr.length > 20){
      delete(ck_arr[0]);
    }
  }

  if(ck_arr.length > 20){
    ck_arr[0] = "";
  }
  ck_str = "";var idx = 0;
  for(var jj in ck_arr){
    if(typeof(ck_arr[jj]) == "string" && ck_arr[jj] != ""){
      ck_str += (idx == 0)? '' : '"';
      ck_str += ck_arr[jj]; //.join('"');
      idx++;
    }
  }
  //ck_str = escape(ck_str);
  w_ck("words",ck_str);
  writeWords();
  var cat_str = obj1.dname + " " + obj2.dname;
  cat_str = encodeURIComponent(cat_str);
  var url_str = "chkwords.php?words=";
  url_str += encodeURIComponent(tmp_str);
  url_str += "&cats="+cat_str;
  //window.tmp.window.location.href = url_str;
  requestFile("","GET",url_str,true);

}

function unchkWord(w_str){
  //alert(w_str);
  var ck_str = r_ck("words");
  //ck_str = unescape(ck_str);

  ck_str = str_replace(w_str,"",ck_str);
  ck_str = str_replace('""','"',ck_str);

  w_ck("words",ck_str);
}

function writeWords(val){
  var ck_str = r_ck("words");
  if(ck_str != ""){
    var w_arr = ck_str.split('"');
    var out_str = "";
    var w_len = w_arr.length - 1;
    for(ii=w_len;ii >= 0;ii--){
      if(w_arr[ii] != ""){
	//out_str += "<a href=\"result.php?words=";
	out_str += "<a href=\"words/";
	out_str += encodeURIComponent(w_arr[ii]);
	out_str += "\" target=\"_blank\">" + w_arr[ii] + "</a>&nbsp;";
	if(ii == w_len && val){
	  out_str += "("+val+")&nbsp;&nbsp;";
	}
	out_str += "<a class='del' href='Javascript:unchkWord(\"";
	out_str += w_arr[ii];
	out_str += "\")'>削除</a><br>";
      }
    }
    if(document.all){
      document.all("savebox").innerHTML = out_str;
    }
    else if(document.getElementById){
      document.getElementById("savebox").innerHTML = out_str;
    }
  }
}

function go_result(){
  var tmp_str = (obj1.orig.value != "")? obj1.orig.value : obj1.word_mem[obj1.mem_idx];  //obj1.word_obj[0].innerHTML;
  if(tmp_str.length > 30){
    tmp_str = tmp_str.substring(0,30);
  }
  tmp_str += "\"";
  var tmp_str2 =  (obj2.orig.value != "")? obj2.orig.value : obj2.word_mem[obj2.mem_idx]; //obj2.word_obj[0].innerHTML;

  if(!tmp_str2){
    return false;
  }

  if(tmp_str2.length > 30){
    tmp_str2 = tmp_str2.substring(0,30);
  }
  tmp_str += tmp_str2;
  //alert(tmp_str);

  var cat_str = obj1.dname + "\"" + obj2.dname;
  cat_str = encodeURIComponent(cat_str);
  var url_str = "words/";
  url_str += encodeURIComponent(tmp_str);
  url_str += "&cats="+cat_str;
  //wopen0(url_str);
  var res_obj = retObj("result");
  res_obj.setAttribute("href",url_str);

}

