//スワップイメージとカレント
function SwapImage(){}
SwapImage.Load = function(id,extension,currentFlag,currentPath){
	var nowUrl = document.URL;
	var imageId = id;
	var imageExtension = extension;
	var allTags = document.getElementsByTagName("*");
	for(i=0;i<allTags.length;i++){
		if(allTags[i].id.match(imageId)){
			preload(allTags[i]);
			AddEventListener(allTags[i],'mouseover',swap);
			AddEventListener(allTags[i],'mouseout',restore);
		}
	}
	if(currentFlag){
		current();
	}
	
	function swap(e){
		var targetElement = EventTarget(e);
		var src = targetElement.src;
		if(src.match("_r" + imageExtension)){
			return false;
		}
		src = src.replace("." + imageExtension,"_r." + imageExtension);
		targetElement.src = src;
		StopPropagation(e);
	}
	function restore(e){
		var targetElement = EventTarget(e);
		var src = targetElement.src;
		src = src.replace("_r." + imageExtension,"." + imageExtension);
		targetElement.src = src;
		StopPropagation(e);
	}
	function preload(image){
		var src = image.src;
		src = src.replace("." + imageExtension,"_r." + imageExtension);
		var image = new Image();
		image.src = src;
	}
	function current(){
		//例外処理をする場合
		if(currentPath){
			var tmpPath = currentPath;
			var currentObj = document.getElementById(imageId);
			var currentSrc = currentObj.src;
			if(nowUrl.indexOf("\\") >= 0){
				tmpPath = tmpPath.replace("/","\\");
			}
			if(nowUrl.indexOf(tmpPath) >= 0){
				RemoveEventListener(currentObj,"mouseout",restore);
				RemoveEventListener(currentObj,"mouseover",swap);
				currentObj.src = currentSrc.replace("." + imageExtension,"_r." + imageExtension);
			}
		}else{//通常のカレント
			var slash = "/";
			//ローカルで確認中だったら、区切り文字を\に
			var slashReg = new RegExp("/\\/");
			if(nowUrl.match(slashReg)){
				slash = "\\";
			}
			var urlSplit = nowUrl.split(slash);
			for(i=0;i<allTags.length;i++){
				var reg = new RegExp(imageId);
				if(allTags[i].id.match(reg)){
					var srcSplit = allTags[i].src.split("/");
					var currentSrc = srcSplit[(srcSplit.length) - 1];
					var currentName = currentSrc.replace(".gif","");
					currentName = currentName.replace(".jpg","");
					if(nowUrl.match(currentName)){
						RemoveEventListener(allTags[i],"mouseout",restore);
						RemoveEventListener(allTags[i],"mouseover",swap);
						allTags[i].src = allTags[i].src.replace(currentName,currentName + "_r");
					}
				}
			}
		}
	}
}

//イベント・リスナーをセットする
function AddEventListener(element,type,func,capture){
	if(!element){return false;};
	if(!capture){capture = false;};
	if(element.addEventListener){
		element.addEventListener(type,func,capture);
	}else if(element.attachEvent){
		element.attachEvent('on' + type,func);
	}else{
		return false;
	}
}

//イベント・リスナーを解除する
function RemoveEventListener(element,type,func,capture){
	if(!element){return false;};
	if(!capture){capture = false;};
	if(element.removeEventListener){
		element.removeEventListener(type,func,capture);
	}else if(element.detachEvent){
		element.detachEvent('on' + type,func);
	}else{
		return false;
	}
}

//イベント・ターゲットを特定する
function EventTarget(e){
	if(e && e.target){
		if(e.target.nodeType == 3){
			return e.target.parentNode;
		}else{
			return e.target;
		}
	}else if(window.event && window.event.srcElement){
		return window.event.srcElement;
	}else{
		return null;
	}
}

//デフォルト・アクションを抑止する
function PreventDefault(e){
	if(e && e.preventDefault){
		e.preventDefault();
		e.currentTarget["on" + e.type] = function(){return false;};
	}else if(window.event){
		window.event.returnValue = false;
	}
}

//イベントの伝播を抑止する
function StopPropagation(e){
	if(e && e.stopPropagation){
		e.stopPropagation();
	}else if(window.event){
		window.event.cancelBubble = true;
	}
}

//ウィンドウリサイズ
function ThisWinResize(width,height){
	this.resizeTo(width,height);
	if(window.opera || document.layers){//N4、O6用
		var w = self.innerWidth;
		var h = self.innerHeight;
	}else if(document.all){//IE用
		var w = self.document.body.clientWidth;
		var h = self.document.body.clientHeight;
	}else if(document.getElementById){//N6、N7、M1用
		var w = self.innerWidth;
		var h = self.innerHeight;
	}
}

//XMLHttpRequestオブジェクト作成
function CreateXMLHttp(){
	try{
		return new XMLHttpRequest();
		
	}catch(e){
		try{
			return new ActiveXObject("Microsoft.XMLHTTP");
		}catch(e){
			try{
				return new ActiveXObject("Msxml2.XMLHTTP");
			}catch(e){
				return null;
			}
		}
	}
	return null;
}

//クッキーをセット
function SetCookie(name,value,expires,domain,path){
	var cookie = name + "=" + encodeURIComponent(value);
	if(expires){
		cookie += "; expires=" + expires.toGMTString();
	}
	if(domain){
		cookie += "; domain=" + domain;
	}
	if(path){
		cookie += "; path=" + path;
	}
	document.cookie = cookie;
}

//クッキーを呼び出し
function GetCookie(name){
	var sRegExp = "(?:; )?" + name + "=([^;]*);?";
	var oRegExp = new RegExp(sRegExp);
	if(oRegExp.test(document.cookie)){
		return decodeURIComponent(RegExp["$1"]);
	}else{
		return "";
	}
}

//ブラウザ判別
function GetBrowser(){
	var ua = navigator.userAgent;
	var strBrowser;
	if(ua.indexOf("MSIE") >= 0){
		strBrowser = "IE";
	}else if(ua.indexOf("Netscape") >= 0){
		strBrowser = "NN";
	}else if (ua.indexOf("Safari") >= 0){
		strBrowser = "Safari";
	}else if(ua.indexOf("Opera") >= 0){
		strBrowser = "Opera";
	}else if(ua.indexOf("Firefox") >= 0){
		strBrowser = "Firefox";
	}else if(ua.indexOf("Gecko") >= 0){
		strBrowser = "Mozilla";
	}else if(ua.indexOf("Mozilla/4") >= 0){
		strBrowser = "NN";
	}else{
		strBrowser = "";
	}
	return strBrowser;
}
