// 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]*)news\.dengeki\.com';
		ownURL2 = '^https?://([-.a-zA-Z0-9]*)tech\.dengeki\.com';
	}
	if(undefined == aOpt) {
		aOpt = '';
	}
	
	this.defURL  = defURL;
	this.ownURL  = ownURL;
	this.ownURL2 = ownURL2;
	this.aOpt    = aOpt;
}


// Get previouse URL (internal function)
function _RefBack_getBackURL() {
	var ret = document.referrer;
	var re  = new RegExp(this.ownURL, 'i');
	var re2 = new RegExp(this.ownURL2, 'i');
	if(undefined == ret || !(ret.match(re) || ret.match(re2)) ) {
		ret = this.defURL;
	} else if(ret == location.href) {
		var artUrlElem = document.getElementById("artURL");
		if(artUrlElem){
			ret = artUrlElem.value;
		}
	} 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	
		document.getElementById('related').style.display='none';
		document.write('<div id="amwlpo">');
		document.write('<script language="JavaScript">');
		document.write('var amwlpo_params = "un=5&sn=22&path=12a99edb6f081c97e6d7d0e658bb2c7a&cr=on";');
		document.write('<\/script>');
		document.write('<script src="http://asciimw-apis.jp/lpo/articles.js" language="JavaScript" charset="utf-8"><\/script>');
		document.write('<\/div>');
	} 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;

