function createHttpRequest()
{
	if(window.ActiveXObject){
		try {
			return new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				return new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e2) {
				return null;
	 		}
	 	}
	} else if(window.XMLHttpRequest){
		return new XMLHttpRequest();
	} else {
		return null;
	}
}

function exec( element,url,olHandeler)
{
	var requestObj = createHttpRequest();

	if(requestObj){
		requestObj.open("GET",url,true);
	
		requestObj.onreadystatechange = function() 
		{
			if (requestObj.readyState==4) 
			{
				olHandeler( element, requestObj.responseText );
			}
		}
	
		requestObj.send("");
	}
}

function addStation(num,stationSelection)
{
	var te = document.getElementsByName('stationCode' + num).item(0);
	var sn = stationSelection.options[stationSelection.selectedIndex].text;
	var sc = stationSelection.value;
	if(isUniqOption(te,sc)){
		te.options[te.length] = new Option(sn,sc);
		te.selectedIndex = te.length - 1;
	}else{
		alert('すでに追加されています');
	}
}

function setLineToSelectbox(element,pref)
{
	if(pref.value == "")return false;
	exec(element,'/js/railsData_maker.php?pref='+ pref.value,onloadHandelerLine);
}

function setStationToSelectbox(element,line)
{
	if(line.value == "")return false;
	exec(element,'/js/railsData_maker.php?line='+ line.value,onloadHandelerStation);
}

function onloadHandelerLine(element,result)
{
	var lines = eval("(" + result + ")");

	if(lines != null){
		//alert(lines.length);
		itemSet(element,lines);
	}else{
		itemSet(element,[["","路線がありません"]]);
	}
	
}
var closeAt = 0;
var resultCount = 0;
var closeTarget = {};
closeTarget.close = function(){};
// Add by Motohashi (IWS) 2008/06/19 Start
function reloadC13(){ 
	var jobId = document.getElementsByName('jobId').item(0).value;

	var address = document.getElementsByName('addressSearch').item(0).value;

	if( address.length > 0){
		var addressQuery =  'addressSearch/' + urlEncode( address) + '/';
	}else{
		var addressQuery = "";
	}
	if( jobId ){
		addressQuery += 'jobId/' + jobId + '/';
	}
	
	var i = 1;
	var stationCodeQuery = "";
	var commuterQuery = "";
	var commuterTimeQuery = "";
	
//	while(i <= 2) {
//-- #534 Add by Motohashi (IWS) 2008/11/11 Next 1 Line
	while(i <= 3) {
		if(document.getElementById('stationCode' + i).value != ""){
			stationCodeQuery = stationCodeQuery + 'stationCode' + i + '/' + document.getElementById('stationCode' + i).value + '/';
		}
		if(document.getElementById('commuter' + i).value != ""){
			commuterQuery = commuterQuery + 'commuter' + i + '/' + document.getElementById('commuter' + i).value + '/';
		}
		if(document.getElementById('commuterTime' + i).value != ""){
			commuterTimeQuery = commuterTimeQuery + 'commuterTime' + i + '/' + document.getElementById('commuterTime' + i).value + '/';
		}
//-- #534 Add by Motohashi (IWS) 2008/11/11 Start
		if(document.getElementById('commuterTIme' + i).value != ""){
			commuterTimeQuery = commuterTimeQuery + 'commuterTIme' + i + '/' + document.getElementById('commuterTIme' + i).value + '/';
		}
//-- #534 Add by Motohashi (IWS) 2008/11/11 End
		i++;
	}
		url = '/app/m/client/a/C13/' + addressQuery + stationCodeQuery + commuterQuery + commuterTimeQuery;
	
	url = '/app/m/client/a/C13/addressSearch/' +
		urlEncode( document.getElementById('addressSearch').value );
// -- Add by Motohashi 2008/06/17 Start --
	url += "/pref/" + urlEncode(document.getElementsByName('prefSearch')[0].value);
// -- Add by Motohashi 2008/06/17 End --
	document.location = url;
	
}
// Add by Motohashi (IWS) 2008/06/19 End
function openC13()
{
	var jobId = document.getElementById('jobId').value;

	var prefName = "";
	var pref = "";

	if(getPrefName(document.getElementsByName('jobPref').item(0).value) != null){
		prefName = getPrefName(document.getElementsByName('jobPref').item(0).value);
		pref = document.getElementsByName('jobPref').item(0).value;
	}
	//opener.document.getElementById('stationCode' + i).value = "";
	//opener.document.getElementById('commuter' + i).value = "";
	//opener.document.getElementById('commuterTime' + i).value = "";
	
	var address = prefName + document.getElementsByName('jobAddress').item(0).value;
	if( address == "勤務地詳細入力"){
		address = "";
	}
	if( address.length > 0){
		var addressQuery =  'addressSearch/' + urlEncode( address) + '/';
	}else{
		var addressQuery = "";
	}
	if( pref){
		addressQuery += 'pref/' + pref + '/';
	}
	if( jobId ){
		addressQuery += 'jobId/' + jobId + '/';
	}
	
	var i = 1;
	var stationCodeQuery = "";
	var commuterQuery = "";
	var commuterTimeQuery = "";
	
//	while(i <= 2) {
//-- #534 Add by Motohashi (IWS) 2008/11/11 Next 1 Line
	while(i <= 3) {
		if(document.getElementsByName('stationCode' + i).item(0) != null){
			stationCodeQuery = stationCodeQuery + 'stationCode' + i + '/' + document.getElementsByName('stationCode' + i).item(0).value + '/';
		}
		if(document.getElementsByName('commuter' + i).item(0) != null){
			commuterQuery = commuterQuery + 'commuter' + i + '/' + document.getElementsByName('commuter' + i).item(0).value + '/';
		}
		if(document.getElementsByName('commuterTime' + i).item(0) != null){
			commuterTimeQuery = commuterTimeQuery + 'commuterTime' + i + '/' + document.getElementsByName('commuterTime' + i).item(0).value + '/';
		}
//-- #534 Add by Motohashi (IWS) 2008/11/11 Start
		if(document.getElementsByName('commuterTIme' + i).item(0) != null){
			commuterTimeQuery = commuterTimeQuery + 'commuterTIme' + i + '/' + document.getElementsByName('commuterTIme' + i).item(0).value + '/';
		}
//-- #534 Add by Motohashi (IWS) 2008/11/11 End
		i++;
	}
	var childWindow = window.open('/app/m/client/a/C13/' + addressQuery + stationCodeQuery + commuterQuery + commuterTimeQuery,'railsInput','scrollbars=yes,width=800,height=800');

}
function closeWhen(num,target)
{
	closeAt = num * 1;
	closeTarget = target;
}
function isClosable(){
	if(closeAt <= ++resultCount)
	{
// -- Import from fworks by Motohashi 2008/06/19 Start --
		var ua = navigator.userAgent
		if (ua.indexOf("Gecko") >= 0 && location.href.indexOf("C13") >= 0) {
			window.opener = window;
			var win = window.open(location.href,"_self");
			win.close();
			return;
		}
// -- Import from fworks by Motohashi 2008/06/19 End --
		closeTarget.close();
	}
}
function onloadHandelerStaionName(num,result)
{
	if(result == ""){
		return false;
	}
	var aRes = eval('(' + result + ')');
	var index = aRes[0];
	if(parentIsAlive()){
		opener.document.getElementById('stationCode' + index + 'Label').innerHTML = aRes[1];
	}else{
		document.getElementById('stationCode' + index + 'Label').innerHTML = aRes[1];
	}
	isClosable();
}

function getStationName(num,stationCode,commuter,commuterTime)
{

	exec(num,'/js/railsData_maker.php?station='+ stationCode +'&commuter=' + commuter+ '&commuterTime=' + commuterTime + '&index=' + num ,onloadHandelerStaionName);
}

function labelTranslate(doc,num)
{
//	if(doc.getElementById('stationCode' + num).value == "")return false;
//	if(doc.getElementById('stationCode' + num).value == "0")return false;
	// Import from fworks by Motohashi (IWS) 2008/06/19 Start
	var stationCode = doc.getElementsByName('stationCode' + num).item(0).value;
	if (stationCode == "" || stationCode == "0") {
		return false;
	}
	// Import from fworks by Motohashi (IWS) 2008/06/19 End
//	getStationName(num,doc.getElementById('stationCode' + num).value,
//	doc.getElementById('commuter' + num).value,
//	doc.getElementById('commuterTime' + num).value);
//-- #534 Edit by Motohashi (IWS) 2008/11/11 Start
	switch (num) {
		case 3:
		getStationName(num,doc.getElementsByName('stationCode' + num).item(0).value,
		doc.getElementsByName('commuter' + num).item(0).value,
		doc.getElementsByName('commuterTIme' + num).item(0).value);
		break;
		default:
		getStationName(num,doc.getElementsByName('stationCode' + num).item(0).value,
		doc.getElementsByName('commuter' + num).item(0).value,
		doc.getElementsByName('commuterTime' + num).item(0).value);
	}
//-- #534 Edit by Motohashi (IWS) 2008/11/11 End
}

function hex(n, len)
{
    var out, i;
    out = "";
    for(i = 0; i < len; i++) {
	out = "0123456789ABCDEF".charAt(n & 0xf) + out;
	n >>= 4;
    }
    return out;
}
function escape(str)
{
    var c, i, out;

    if(navigator.appName != "Microsoft Internet Explorer")
	return str.replace(/[^.0-9A-Z_a-z-]/g, function(s) {
	    c = s.charCodeAt(0);
	    if(c < 256)
		return "%" + hex(c, 2);
	    return "%u" + hex(c, 4);
	});

    out = "";
    for(i = 0; i < str.length; i++) {
	c = str.charAt(i);
	if(c.match(/[^.0-9A-Z_a-z-]/)) {
	    c = str.charCodeAt(i);
	    if(c < 256)
		out += "%" + hex(c, 2);
	    else
		out += "%u" + hex(c, 4);
	} else
	    out += c;
    }
    return out;
}


function urlEncode(str)
{
    return escape(utf16to8(str));
}

function utf16to8(str)
{
    var out, i, len, c;

    out = "";
    len = str.length;
    for(i = 0; i < len; i++) {
	c = str.charCodeAt(i);
	if ((c >= 0x0001) && (c <= 0x007F)) {
	    out += str.charAt(i);
	} else if (c > 0x07FF) {
	    out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
	    out += String.fromCharCode(0x80 | ((c >>  6) & 0x3F));
	    out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));
	} else {
	    out += String.fromCharCode(0xC0 | ((c >>  6) & 0x1F));
	    out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));
	}
    }
    return out;
}

function onloadHandelerStation(element,result)
{
	var lines = eval("(" + result + ")");

	if(lines != null){
		//alert(lines.length);
		itemSet(element,lines);
	}else{
		alert("駅がありません");
	}
	
}
var enterKeyCanceler = function()
{
	if(event.keyCode == 13){
		event.returnValue = false;
	}
}
function rail_initC13()
{
	var pe = document.getElementsByName('prefSearch').item(0);
	var le = document.getElementsByName('lineSearch').item(0);
	var ss = document.getElementsByName('stationSelection').item(0);
	if(pe.value != ""){
		setLineToSelectbox(le,pe);
	}
	if(!parentIsAlive()){
		alert('呼び出し元ウィンドウが見つかりません');
		window.close();	
	}
}
function sendToOpener(index,stationCode,commuter,commuterTime)
{
	if(!parentIsAlive()){
		alert('呼び出し元ウィンドウが見つかりません');
		window.close();	
	}
	if(stationCode * 1 == 0){
		return false;
	} 
	var opener = getParent();
	opener.document.getElementsByName('stationCode' + index).item(0).value = stationCode;
	opener.document.getElementsByName('commuter' + index).item(0).value = commuter;
//	opener.document.getElementById('commuterTime' + index).value = commuterTime;
//-- #534 Edit by Motohashi (IWS) 2008/11/11 Start
	switch (index) {
		case 3:
		opener.document.getElementsByName('commuterTIme' + index).item(0).value = commuterTime;
		break;
		default:
		opener.document.getElementsByName('commuterTime' + index).item(0).value = commuterTime;
	}
//-- #534 Edit by Motohashi (IWS) 2008/11/11 End
	labelTranslate(opener.document,index);
}
function openerReset()
{
	var i = 1;
	var opener = getParent();
	while(opener.document.getElementById('stationCode' + i + 'Label') != null) {
		opener.document.getElementsByName('stationCode' + i).item(0).value = "";
		opener.document.getElementsByName('commuter' + i).item(0).value = "";
//		opener.document.getElementById('commuterTime' + i).value = "";
//-- #534 Edit by Motohashi (IWS) 2008/11/11 Start
		switch (i) {
			case 3:
			opener.document.getElementsByName('commuterTIme' + i).item(0).value = "";
			break;
			default:
			opener.document.getElementsByName('commuterTime' + i).item(0).value = "";
		}
//-- #534 Edit by Motohashi (IWS) 2008/11/11 End
		opener.document.getElementById('stationCode' + i + 'Label').innerHTML = "";
		i++;
	}
}
function parentIsAlive()
{
      var ua = navigator.userAgent
      if( !!window.opener ){
          if( ( ua.indexOf('Gecko')!=-1 || ua.indexOf('MSIE 4')!=-1 ) && ua.indexOf('Win')!=-1 ){ 
               return ! window.opener.closed;
          }else{
          		return typeof window.opener.document  == 'object';
          }
      }else{
      	return false;
      }
	//return window.opener.document !== undefined;
}

function getParent()
{
	return window.opener;
}
function isUniqOption(element,value)
{
  		var i = 0;
		if(element != null) {
			i = element.length - 1;
	  		while(i >= 0) {
				if(element.options[i].value == value){
					return false;
				}
				i--;
			}
		}
		return true;
}

function itemSet(item,data)
{
		var len = item.length;
  		while( item.length > 0) {
			item.options[item.length - 1] = null;
		}
		for(i=0;i<data.length;i++){
			item.options[i] = new Option(data[i][1],data[i][0]);
		}
}		
