// RefBack.js - HTTP referrer based history back object.
// Copyright (C) 2008 ASCII MEDIA WORKS Inc., All rights reserved.
// $Id: $
//


function RefBack(defURL, ownURL, aOpt){
	if(undefined == defURL || '' == defURL) {
		defURL = '/';
	}
	if(undefined == ownURL || '' == ownURL) {
		ownURL = '^https?://([-.a-zA-Z0-9]*)ascii\.jp';
	}
	if(undefined == aOpt) {
		aOpt = '';
	}
	
	this.defURL = defURL;
	this.ownURL = ownURL;
	this.aOpt   = aOpt;
}


// Get previouse URL (internal function)
function _RefBack_getBackURL() {
	var ret = document.referrer;
	var re  = new RegExp(this.ownURL, 'i');
	if(undefined == ret || ! ret.match(re)) {
		ret = this.defURL;
	} else {
		var str = this.getMyEID();
		if(str) ret += "#eid" + str ;
	}
	return ret;
}
RefBack.prototype.getBackURL = _RefBack_getBackURL;


// Jump to previouse page (for event handler)
function _RefBack_jumpBack() {
	location.href = this.getBackURL();
}
RefBack.prototype.jumpBack = _RefBack_jumpBack;


// Generate A tag for jump to previouce page
function _RefBack_genBackAOpen() {
	var url = this.getBackURL();
	document.write('<a href="' + url + '" ' + this.aOpt +'>');
}
RefBack.prototype.genBackAOpen = _RefBack_genBackAOpen;


// Generate close A tag (to use XHTML page)
function _RefBack_genBackAClose() {
	document.write('</a>');
}
RefBack.prototype.genBackAClose = _RefBack_genBackAClose;


// Get My EID 
function _RefBack_getMyEID() {
	var str    = location.href;
	var myData = str.split("/");
	var reg    = new RegExp('.*\/$', 'i');
	var re     = new RegExp('^[0-9]+$', 'i');
	var ret    = (str.match(reg)) ? '' : myData[myData.length - 1] ;
	if('' == ret || ! ret.match(re)) {
		ret = myData[myData.length - 2];
	} else if (undefined == ret) {
		ret = '';
	}
	return ret;
}
RefBack.prototype.getMyEID = _RefBack_getMyEID;

// Get EID From Referrer
function _RefBack_getRefEID() {
	var str    = document.referrer;
	var myData = str.split("/");
	var reg    = new RegExp('.*\/$', 'i');
	var re     = new RegExp('^[0-9]+$', 'i');
	var ret    = (str.match(reg)) ? '' : myData[myData.length - 1] ;
	if('' == ret || ! ret.match(re)) {
		ret = myData[myData.length - 2];
	} else if (undefined == ret) {
		ret = '';
	}
	if(!ret.match(re)) ret = '';

	return ret;
}
RefBack.prototype.getRefEID = _RefBack_getRefEID;

// Print Related article  
function _RefBack_printRelated() {
	var ret = document.referrer;
	var re  = new RegExp(this.ownURL, 'i');

	if('' == ret || undefined == ret) {		// view all related articles
		document.getElementById('related').style.display='';
		for(var i = 0;i < relID.length; i++){
			document.getElementById(relID[i]).style.display='';
		}
		return;
	};
	if(undefined == ret || ! ret.match(re)) {
		ret = ''; 
	}
	if('' == ret) {		// view LPO	

		return;

	} else {			// view related article
		var str = this.getRefEID();
		if(str) var rel = "rel" + str ;
		if(undefined != rel && '' !== rel) {
			document.getElementById('related').style.display='';
			document.getElementById(rel).style.display='';
		} else {	
			document.getElementById('related').style.display='';
			for(var i = 0;i < relID.length; i++){
				document.getElementById(relID[i]).style.display='';
			}
		}
	}
}
RefBack.prototype.printRelated = _RefBack_printRelated;

