$(function(){
	Rollover.initrolloverimages();
});


/**
 * ロールオーバー
 *
 * img要素のclass属性に「rollover」を指定すると、指定されたファイル名に「_over」の接尾語をつけたファイル名がロールオーバーで入れ替わる
 * 
 * 使用例
 * <img src="images/image.jpg" alt="" class="rollover" />
 *
 */
var Rollover = function () {};

Rollover.suffix = '_over';
Rollover.preloadimages = [];
Rollover.overflag = [];

Rollover.overimage = function (obj) {
	if (obj.src && obj.src.indexOf('.') != -1) {
		obj.src = Rollover.getrolloverimagefile(obj.src);
		this.overflag.push(obj);
	}
}
	
Rollover.normalimage = function (obj) {
	var flag = false;
	for (var i in this.overflag) {
		if (this.overflag[i] == obj) {
			flag = true;
			this.overflag[i] = null;
			break;
		}
	}
	if (flag && obj.src && obj.src.indexOf('.') != -1) {
		obj.src = Rollover.getoriginalimagefile(obj.src);
	}
}
	
Rollover.getrolloverimagefile = function (path) {
	var filename = path.substring(0, path.lastIndexOf('.'));
	var extention = path.substring(path.lastIndexOf('.'), path.length);
	return filename + Rollover.suffix + extention;
}
	
Rollover.getoriginalimagefile = function (path) {
	var filename = path.substring(0, path.lastIndexOf('.')-Rollover.suffix.length);
	var extention = path.substring(path.lastIndexOf('.'), path.length);
	return filename + extention;
}

Rollover.initrolloverimages = function() {
	var images = document.getElementsByTagName('img');
	for (var i=0; i<images.length; i++) {
		var classValue = null;
		if (images[i].getAttribute('className'))
			classValue = images[i].getAttribute('className');
		else if (images[i].getAttribute('class'))
			classValue = images[i].getAttribute('class');
		if (classValue != null && classValue.indexOf('rollover') != -1 && images[i].src) {
			images[i].onmouseover = function() {
				Rollover.overimage(this);
			};
			images[i].onmouseout = function() {
				Rollover.normalimage(this);
			};
			Rollover.preloadimages[i] = new Image();
			Rollover.preloadimages[i].src = Rollover.getrolloverimagefile(images[i].src);
		}
	}
};


/**
 * ポップアップウィンドウクラス
 * 
 * 使用例 (1)
 * var pop1 = new PopupWindow('popup.html');
 * pop1.open({width:500,height:400});
 *
 * 使用例 (2)
 * <a href="popup.html" onclick="(new PopupWindow(this.href)).open({width:200,height:'max'});">open</a>
 * 
 */
var PopupWindow = function(url) {
	if (url)
		this.url = url;
	this.popupwindow = null;
	this.scrollbars = 'yes';
	this.resizable = 'yes';
	this.copyhistory = 'yes';
	this.width = null;
	this.height = null;
	this.left = 'center';
	this.top = 'center';
};

PopupWindow.prototype.open = function(argv) {
	
	var option = {};
	
	if (!argv)
		argv = {};
	
	var lurl = (argv.url) ? argv.url : this.url;
	
	option.width = (argv.width) ? argv.width : this.width;
	option.height = (argv.height) ? argv.height : this.height;
	option.scrollbars = (argv.scrollbars) ? argv.scrollbars : this.scrollbars;
	option.resizable = (argv.resizable) ? argv.resizable : this.resizable;
	option.copyhistory = (argv.copyhistory) ? argv.copyhistory : this.copyhistory;
	
	option.left = (argv.left!=undefined) ? argv.left : this.left;
	if (option.left == 'center')
		option.left = (!isNaN(option.width)) ? (screen.width - option.width) / 2 : null;
		
	option.top = (argv.top!=undefined) ? argv.top : this.top;
	if (option.top == 'center')
		option.top = (!isNaN(option.height)) ? (screen.height - option.height) / 2 : null;
	
	if (option.width && option.width == 'max') 
		option.width = screen.width;
	if (option.height && option.height == 'max') 
		option.height = screen.height;
	if (option.left)
		option.screenX = option.left;
	if (option.top)
		option.screenY = option.top;
	
	if (this.popupwindow && !this.popupwindow.closed) {
		this.popupwindow.close();
	}
	
	var optionStr = '';
	for (var key in option) {
		if (option[key]!=null)
			optionStr += key+'='+option[key]+',';
	}
	
	// Output to console
	if (window.console) {
		window.console.log(optionStr);
		window.console.log('popup::'+lurl);
	}
	
	this.popupwindow = window.open(lurl, PopupWindow.getNewWindowName(), optionStr);
	return this.popupwindow;
	
};

PopupWindow.sequence = 0;
PopupWindow.getNewWindowName = function(){
	return 'win'+(PopupWindow.sequence++);
};