// $Id: google.js 283 2005-04-18 00:43:18Z takayama $
// License: GPL
// 検索件数
var num = 20;
var now;
var lst = 0;
var sel = 0;
var tabs = new Array();
var keys = new Array();
var url = 'http://espion.just-size.jp/files/js/google/google.cgi';
function init() {
insertQuery();
}
function newHttp() {
var xmlhttp = false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation, we can cope with old IE versions.
// and security blocked creation of the objects.
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
@else
xmlhttp=false
@end @*/
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp=false
}
}
return xmlhttp;
}
function search(key, mySel) {
var sel = 0;
var del = false;
var nav = 0;
var cache = new Array();
for (i=0;i<20;i++) {
cache[i] = new Array();
}
this.exec = function(page) {
if(page == -1) page = sel;
if(cache[page] == '') {
request(page, 1);
} else {
setResult(page);
request(page+1);
}
sel = page;
}
this.del = function() {
cache = Array();
del = true;
}
var request = function(page, flag) {
if (cache[page] != '') return;
var xmlhttp = newHttp();
if (!xmlhttp) return;
if (xmlhttp.readyState == 1 || xmlhttp.readyState == 2 || xmlhttp.readyState == 3) return;
lst++;
xmlhttp.open("GET", url+"?num="+num+"&q="+encodeURIComponent(key)+"&start="+(page*num), true);
xmlhttp.onreadystatechange = new searchResults(xmlhttp, key, page, flag, lst);
xmlhttp.send(null)
}
var setResult = function(page) {
document.getElementById('results').innerHTML = cache[page][0];
setNav(page);
}
var searchResults = function(xmlhttp, key, page, flag, set) {
return function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200 && !del) {
var result = xmlhttp.responseText;
var int = parseInt(result.slice(-8, -6), 10);
cache[page][0] = result;
if(nav < int) nav = int;
if(flag == 1) {
if(lst == set) setResult(page);
request(page+1);
}
}
}
}
var setNav = function(page) {
var wt = '';
if(mySel > 0) wt += "[CLOSE]<\/a> ";
for (i = 0;i < nav;i++) {
var nClass;
if(i == page) nClass = 'nNow';
else nClass = 'navi';
wt += ""+(i+1)+"<\/a>";
}
document.getElementById('nav1').innerHTML = wt;
document.getElementById('nav2').innerHTML = wt;
}
}
function setTab(key) {
var wt = '';
var nClass;
for (i in tabs) {
if(keys[i] == '') continue;
if(i == key) nClass = 'tNow';
else nClass = 'tab';
wt += ""+keys[i]+"<\/a>";
}
document.getElementById('tab1').innerHTML = wt;
document.getElementById('tab2').innerHTML = wt;
}
function clTab(n) {
if(n > 0) {
now.del();
tabs[n] = '';
keys[n] = '';
for(n;n > 0;n--) {
if(tabs[n]) break;
}
now = tabs[n];
now.exec(-1);
setTab(n);
}
}
function chTab(n) {
lst++;
now = tabs[n];
now.exec(-1);
setTab(n);
}
function setPage(i) {
now.exec(i);
scroll(0, 0);
}
function doSearch() {
key = document.gForm.q.value;
if(!key) return false;
document.getElementById('nav1').innerHTML = document.getElementById('nav2').innerHTML = 'now loading...';
tabs[sel] = new search(key, sel);
keys[sel] = key;
chTab(sel);
sel++;
}
// おまけ
function insertQuery() {
var query = document.location.href;
if(query.indexOf('?') == -1) return;
query = query.split('?');
query = query[1].split('#');
query = query[0].split('&');
for (i in query) {
var val = query[i].split('=');
if(val[0] == 'q') {
document.gForm.q.value = decodeURIComponent(val[1]).replace(/\+/g, ' ');
doSearch();
break;
}
}
}