root = '/';
issuePath = root + 'issues/';
coverPath = root + 'covers/';
curIssueRE = new RegExp(issuePath+'(\\d+)');

function initCmn() {
	initWindowTargets();
	file.preload.load();
}

function closeWin() {
	if (window.name && window.name == 'win_main') { window.location.href = root; }
	else { window.close(); }
}
/*------------------------------------------------------------
| backnumber functions (バックナンバー)
------------------------------------------------------------*/

//---------- backnumber data ------------------------------

function parseIssueData() {
	if (!window.mag) { alert('ERROR -> parseIssueData(): 雑誌データがない！'); return; }

	// parse new data
	if (!mag.shin) { alert('ERROR -> parseIssueData(): 新刊データがない！'); return; }
	for (var i = 0; i < mag.shin.length; i++) {
		var d = mag.shin[i].split(':');
		d[0] = parseInt(d[0]);
		mag.shin[i] = { num:d[0], date:d[1] };
	}

	// parse backnumber data
	if (!mag.back) { alert('ERROR -> parseIssueData(): バックナンバーデータがない！'); return; }
	for (var i = 0; i < mag.back.length; i++) {
		var d = mag.back[i].split(':');
		d[0] = parseInt(d[0]);
		mag.back[i] = { num:d[0], date:d[1] };
	}
}
function getCurIssue(src) {
	if (!src) { src = document.location.href; }
	var i = src.match(curIssueRE);
	if (!i || i.length < 2) { return null; }
	return parseFloat(i[1]);
}
function toIntStr(v,l) {
	v = v.toString();
	if (v.length >= l) { return v; }
	while (v.length < l) { v = '0' + v; }
	return v;
}

//---------- backnumber page ------------------------------

function buildCovers() {
	if (!mag.back) { alert('ERROR -> buildCovers(): バックナンバーデータがない！'); return; }
	var h = '';
	for (var i = 0; i < mag.back.length; i++) {
		var d = mag.back[i];
		var code = toIntStr(d.num,3);
		h += '<a href="' + issuePath + code + '.shtml" target="win_sub"><img src="'+ coverPath + code + '.jpg" alt="" />';
		h += '<span class="num">' + d.num + '号<span class="txt_xs">[' + d.date + '号]</span></span></a><br class="disp_n" />\n';
	}
	document.write(h);	
}

//---------- backnumber (order) page ------------------------------

curOrderType = 'notset';

function buildSubscribe() {
	if (!mag.shin) { alert('ERROR -> buildSubscribe(): 新刊データがない！'); return; }
	var h = '<select id="sel_subscribe" name="年間購読開始">';
	for (var i = 0; i < mag.shin.length; i++) {
		var d = mag.shin[i].num + '号 [' + mag.shin[i].date + '号]';
		h += '<option value="' + d + '">' + d + '</option>';
	}
	h += '</select> から';
	document.write(h);
}

function buildBackorder() {
	if (!mag.back) { alert('ERROR -> buildBackorder(): バックナンバーデータがない！'); return; }
	var h = '';
	for (var i = 0; i < mag.back.length; i++) {
		var d = mag.back[i];
		var code = toIntStr(d.num,3);
		h += '<input id="chk_' + code + '" type="checkbox" class="plain" name="バックナンバー' + d.num + '号" value="○" />';
		h += '<label onclick="getById(\'chk_' + code + '\').click();"> ' + d.num + '号<span class="txt_xs">[' + d.date + '号]</span></label>';
		h += ' <a href="' + issuePath + code + '.shtml" target="win_sub">内容詳細</a><br />\n';
	}
	document.write(h);
}

function checkBackorder(num) {

	//-- check order type selected (this is [ff] problem!!)
	if (getById('rad_subscribe').checked) { setOrderType('subscribe') }
	if (getById('rad_backorder').checked) { setOrderType('backorder') }

	//-- check for referrer
	if (!num == null || !document.referrer) { return; }
	var cur = (num) ? num : getCurIssue(document.referrer);
	if (cur == null) { return; }
	getById('rad_backorder').click();
	getById('chk_' + toIntStr(cur,3)).checked = true;
}

function setOrderType(id) {

	if (id == curOrderType) { return; }
	//-- collect order elements
	var sub = getById('sel_subscribe');
	var bak = [];
	for (var i = 0; i < mag.back.length; i++) { bak.push(getById('chk_' + toIntStr(mag.back[i].num,3))); }

	//-- enable order elements
	var active = (id == 'subscribe') ? true : false;
	sub.disabled = !active;
	for (var i = 0; i < bak.length; i++) { bak[i].disabled = active; }

	//-- set visibility
	setClassAttr(getById(curOrderType),'disp_n');
	setClassAttr(getById(id),'');
	curOrderType = id;
}

//---------- backnumber popup ------------------------------

function buildIssueNav() {
	if (!window.mag) { return; }
	if (!window.mag.cur) { //-- init issuePath info
		var cur = getCurIssue();
		for (var i = 0; i < mag.back.length; i++) {
			if (mag.back[i].num == cur) {
				mag.cur = toIntStr(mag.back[i].num,3);
				if (i > 0) { mag.next = toIntStr(mag.back[i-1].num,3); }
				if (i < mag.back.length - 1) { mag.prev = toIntStr(mag.back[i+1].num,3); }
			}
		}
	}
	var h = '';
	if (mag.prev != null) { h += '<a class="arr_l" href="' + issuePath + mag.prev + '.shtml">前号へ</a>'; }
	else { h += '<span class="arr_lx">前号へ</span>'; }
	if (mag.next != null) { h += '<a class="arr_r" href="' + issuePath + mag.next + '.shtml">次号へ</a>'; }
	else { h += '<span class="arr_rx">次号へ</span>'; }
	document.write(h);
}

function buildCoverSub() {
	if (!mag.back) { alert('ERROR -> buildCoverSub(): バックナンバーデータがない！'); return; }
	var cur = getCurIssue();
	for (var i = 0; i < mag.back.length; i++) {
		if (parseInt(mag.back[i].num) == parseInt(cur)) { var date = mag.back[i].date; break; }
	}
	h = '<h2>VEGA' + cur + '号</h2>';
	h += '<div class="mb_xs">[' + date + '号]</div>';
	h += '<img src="../covers/' + toIntStr(cur,3) + '.jpg" alt="" />';
	document.write(h);	
}

function checkLoc(a) {
	var wo = window.opener;
	if (wo) {
		wo.focus();
		if (wo.document.src.absPath == file.splitSrc(a.href).absPath) {
			wo.checkBackorder(mag.cur);
			return false;
		}
	}
	return true;
}
/*------------------------------------------------------------
| items description functions (アイテム詳細情報)
------------------------------------------------------------*/
