/* ◇ EC Navi OEM - REALWORLD - JavaScript - common - 2008/05/21 - S2 ◇ */

// *** omit method
function DW(htmlSrc){document.write(htmlSrc);}
function DWL(htmlSrc){document.writeln(htmlSrc);}


// *** path setting
var localCheck = (location.protocol == 'file:');
var sslCheck = (location.protocol == 'https:');
var urlProtocol = sslCheck ? 'https://' : 'http://';
var pathCSS = '/css/';
var pathJS = '/js/';


function searchCheck(formObject){
	var keywordValue = formObject.search_kwd.value;
	if(keywordValue == ""){
		alert("キーワードを入力してください");
		return false;
	}
	formObject.formSend;
}


// *** search form send
function searchFormSend(formObj){
	formObj.submit();
	return false;
}


// *** OS
var U = navigator.userAgent;
var osWin = (U.indexOf('Win', 0) != -1);
var osMac = (U.indexOf('Mac', 0) != -1);
var osLinux = (U.indexOf('Linux', 0) != -1);
var osEtc = (!osWin && !osMac && !osLinux);


// *** browser
var browserIE = (U.indexOf('MSIE') != -1);
var browserOpera = (U.indexOf('Opera') != -1);
var browserIEOnly = (browserIE && !browserOpera);
var browserFirefox = (U.indexOf('Firefox') != -1);
var browserSafari = (U.indexOf('Safari') != -1);
var browserGecko = (U.indexOf('Gecko') != -1) && !(U.indexOf('like Gecko') != -1);
var browserNetscape = (U.indexOf('Netscape') != -1); // netscape 6 or higher


// undefined
if(osMac && browserIE) var undefined = void(0);


// *** browser version get
function verGet(textObject, startText, endText){
	var startNum = textObject.search(new RegExp(startText, 'i'));
	if(startNum == -1) return 0;
	var cutStartText = textObject.match(new RegExp(startText, 'i'));
	if(!cutStartText) cutStartText = '';
	if(startText != '') var start = startNum + cutStartText[0].length;
	else var start = 0;
	var text = textObject.slice(start);
	if(endText) var end = text.search(new RegExp(endText, 'i'));
	else var end = text.length;
	if(end == -1) end = text.length;
	return text.slice(0, end);
}


// *** version check
function verCheck(ver1, ver2){
	var v1 = (ver1 + '.0.0.0.0').split('.');
	var v2 = ver2.split('.');
	for(var i in v1){
		if(v1[i] == undefined) v1[i] = 0;
		if(v2[i] == undefined) v2[i] = 0;
		if(parseFloat(v1[i]) < parseFloat(v2[i])) return 2;
		if(parseFloat(v2[i]) < parseFloat(v1[i])) return 1;
	}
	return 0;
}


// *** browser version
var verMozilla = 0;
if(U.indexOf('Mozilla/') != -1) verMozilla = verGet(U, 'Mozilla/', ' '); // mozilla
if(browserIE) var verIE = verGet(U, 'MSIE ', ';'); // ie
if(browserOpera) var verOpera = verGet(U, 'Opera[ /]', ' '); // opera
if(browserGecko) var verGecko = verGet(U, 'rv:', '\\)'); // gecko
if(browserGecko) var verGeckoDate = verGet(U, 'Gecko/', ' '); // gecko
if(browserFirefox) var verFirefox = verGet(U, 'Firefox/', ' '); // firefox
if(browserSafari) var verSafari = verGet(U, 'AppleWebKit/ ', ' '); // safari
if(browserNetscape) var verNetscape = verGet(U, 'Netscape6?/', ' '); // netscape 6 or higher
U = undefined;


// *** image toolbar
DWL('<meta http-equiv="Imagetoolbar" content="no">');


// *** onload execute
function onLoadExecute(){

	if(this['addPreLoad']) addPreLoad();
	autoImagePreload();
	imagePreLoad(preLoadImages);
}


// *** preload images - initialize
var preLoadStatus = false;
var preLoadImages = new Array();


// *** preload images - add images
function addPreLoadImages(imagesObject){
	preLoadImages = preLoadImages.concat(imagesObject);
}


// *** preload images - loading
function imagePreLoad(imageList){

	imageCache = new Array();

	for(var i in imageList){
		imageCache[i] = new Image();
		imageCache[i].src = imageList[i];
	}

	preLoadStatus = true;
}


// *** preload images - auto loading
function autoImagePreload(){
	
	var imageObjects = document.getElementsByTagName('img');

	for(var i = 0; i < imageObjects.length; i++){
		var onClickScript = imageObjects.item(i).onclick;
		var onMouseOverScript = imageObjects.item(i).onmouseover;
		var allScripts = onClickScript + onMouseOverScript;

		if(allScripts){
			allScripts = allScripts.replace(/[ |\t|\n]/g, '');
			// imageOver check
			if(allScripts.search(/\W?imageOver[^\(]*\([^\)]*\)/) != -1){
				var addImage = onImageName(imageObjects.item(i).src, true);
				if(preLoadImages.join(',').indexOf(addImage) == -1){
					addPreLoadImages(addImage);
				}
			}

			// imageChange check
			var imageChangeLocate = allScripts.search(/\W?imageChange[^\(]*\([^\)]*\)/);
			if(imageChangeLocate != -1){
				var imageChangeSrc = allScripts.substring(imageChangeLocate + 13);
				imageChangeSrc = imageChangeSrc.substring(imageChangeSrc.indexOf(',') + 1);
				imageChangeSrc = imageChangeSrc.substring(0, imageChangeSrc.indexOf(')'));
				var firstStr = imageChangeSrc.charAt(0);

				if((firstStr == "'" || firstStr == '"') && imageChangeSrc.indexOf(firstStr, 1) == imageChangeSrc.length - 1){
					imageChangeSrc = imageChangeSrc.slice(1, -1);
					if(preLoadImages.join(',').indexOf(imageChangeSrc) == -1){
						addPreLoadImages(imageChangeSrc);
					}
				}
			}
		}
	}
}


// *** image change
function imageChange(imageObject, imageStatus){

	if(preLoadStatus){
		var S = imageObject.src;
		var L = S.length;
		var P = S.lastIndexOf('.');

		if(isNaN(imageStatus)){
			var imageURL = imageStatus;
		} else if(imageStatus){
			var imageURL = onImageName(S, true);
		} else if(S.substr(P - 3, 3) == '_on'){
			var imageURL = onImageName(S, false);
		} else{
			var imageURL = S;
		}

		imageObject.src = imageURL;
	}
}


// *** image change - image name
function onImageName(imageSrc, imageStatus){
	if(imageStatus){
		var P = imageSrc.lastIndexOf('.');
		return imageSrc.substr(0, P) + '_on' + imageSrc.substring(P);
	} else{
		return imageSrc.replace('_on\.', '.');
	}
}


// *** image change - mouse over
function imageOver(imageObject){
	imageChange(imageObject, true);
}


// *** image change - mouse out
function imageOut(imageObject){
	imageChange(imageObject, false);
}


// *** image auto sizing
function imageAutoSizing(imageObject, maxW, maxH){
	if(osMac && browserIE && !browserOpera) return;
	if(maxH == undefined) maxH = maxW;
	var maxAspectRatio = maxW / maxH;
	var imageDummy = new Image();
	imageDummy.src = imageObject.src;
	var originalW = browserSafari ? imageObject.width : imageDummy.width;
	var originalH = browserSafari ? imageObject.height :  imageDummy.height;
	var originalAspectRatio = originalW / originalH;

	if(originalW < maxW && originalH < maxH){
		imageObject.style.width = originalW + 'px';
		imageObject.style.height = originalH + 'px';
		var styleW = imageObject.style.width;
		styleW = Number(styleW.substr(0, styleW.length - 2));
		var styleH = imageObject.style.height;
		styleH = Number(styleH.substr(0, styleH.length - 2));
		return new Array(styleW, styleH);
	}

	if(originalAspectRatio < maxAspectRatio){
		imageObject.style.width = Math.floor(maxH * originalAspectRatio) + 'px';
		imageObject.style.height = maxH + 'px';
	} else{
		imageObject.style.width = maxW + 'px';
		imageObject.style.height = Math.floor(maxW / originalAspectRatio) + 'px';
	}
	var styleW = imageObject.style.width;
	styleW = Number(styleW.substr(0, styleW.length - 2));
	var styleH = imageObject.style.height;
	styleH = Number(styleH.substr(0, styleH.length - 2));
	return new Array(styleW, styleH);
}


// *** image not found
function imageNotFound(imageObject, W, H){
	if(W == undefined) W = 60;
	if(H == undefined) H = W;
	imageObject.src = '/common/img/noimage_' + W + 'x' + H + '.gif';
}


// *** item click
function itemClick(itemObj){
	top.location.href = itemObj.firstChild.firstChild.href;
}


// *** item click
function itemClickTop(itemObj){
	top.location.href = itemObj.firstChild.href;
}


// *** get elements by attribute
function getElementsByAttribute(attrName, attrValue, searchObject, searchTagName){
	if(searchObject == undefined) var searchObject = document.getElementsByTagName('body')[0];
	if(searchTagName == undefined) var searchTagName = '*';
	searchTagName = searchTagName.toUpperCase();
	var childObjects = searchObject.getElementsByTagName(searchTagName);
	var resultObjects = new Array();

	for(var i = 0; i < childObjects.length; i++){
		var C = childObjects[i];
		if((C.getAttribute(attrName) == attrValue) || (attrName == 'class' && C.className == attrValue)){
			resultObjects = resultObjects.concat(C);
		}
	}
	return resultObjects;
}


// *** get parent by attribute
function getParentByAttribute(attrName, attrValue, searchObject, searchTagName){
	if(searchObject == undefined) return false;
	if(searchTagName == undefined) var searchTagName = '';
	searchTagName = searchTagName.toUpperCase();
	var resultObject = searchObject;
	while(resultObject.tagName != 'HTML'){
		resultObject = resultObject.parentNode;
		if(searchTagName && resultObject.tagName != searchTagName) continue;
		if(resultObject.getAttribute(attrName) == attrValue) break;
		if(attrName.toLowerCase() == 'class' && resultObject.className == attrValue) break;
	}
	if(resultObject.tagName == 'HTML') return false;
	return resultObject;
}


// *** add property
function addProperty(objectName, property, childArrayNum){
	if(this[objectName] == undefined) this[objectName] = new Array();
	if(childArrayNum == undefined){
		this[objectName] = this[objectName].concat(new Array(property));
	} else{
		if(this[objectName][childArrayNum] == undefined) this[objectName][childArrayNum] = new Array();
		this[objectName][childArrayNum] = this[objectName][childArrayNum].concat(new Array(property));
	}
}


// ログイン後のページURL引渡し
function gnRwsBar(){
	DW('<script type="text/javascript" src="http://www.realworld.jp/js/elements/rws_bar.js?loc='+ escape(top.location.href)+'"></script>');
}

/* EOF */
