/*@cc_on @*/

var LOC;
LOC = location.href;
if(LOC.indexOf("?")!=-1) LOC = LOC.substring(0,LOC.indexOf("?"));
if(LOC.indexOf("#")!=-1) LOC = LOC.substring(0,LOC.indexOf("#"));
LOC = LOC.split("index.html").join("");


Array.prototype.each = function(iterator) {
	for (var i = 0; i < this.length; i++)
		iterator(this[i]);
}
/*@if (!@_win32)
Array.prototype.push = function(o){
	this[this.length] = o;
}
@else @*/

/*@end @*/

function onEndLoad(){
	if(this["fixNavi"]) fixNavi();
	
	setAction($("global-navi"));
	//setAction($("local-navi"));
	
}

window.onload = onEndLoad;

function isArray(v){
	if(typeof(v)!=typeof(new Array()))return 0;
	if(typeof(v.length)!=typeof(1)||!v.sort)return 0;
	return 1;
}

function setAction(obj,bool){
	var d = document;
	var target = getFileName(location.href);


	
	if(obj){
		var elm;
		if(isArray(obj)){
			elm = obj;
			bool = true;
		}
		else {
			if(bool) elm = [obj];
			else elm = obj.getElementsByTagName('li');
		}
		
		for (var i = 0; i < elm.length; i++){
			var atag;
			
			if(bool) atag = elm[i];
			else atag = elm.item(i).childNodes[0];
			if(!atag || !atag.innerHTML || !atag.href) continue;
			var href = getFileName(atag.href);
			
			if(!(navigator.appVersion.indexOf("MSIE") >-1 && navigator.appVersion.indexOf("PPC") >-1)){
				
		//	if(href != "" && href != "index.html"){
				//if( href == target || (target.substring(target.length-1) == "/" && href == target + "index.html")){
				var hreg = new RegExp(href.split("/").join("\\/").split(".").join("\\."));
				if(href == target || hreg.test(target.split("#")[0].split("?")[0])){
					atag.childNodes[0].src = attachO(atag.childNodes[0].src);
				}
				else{
					atag.childNodes[0].src = dettachO(atag.childNodes[0].src);
					
					(new Image()).src = attachO(atag.childNodes[0].src);
					
					/*@if (@_jscript)
						atag.onmouseover = function(){event.srcElement.src = attachO(event.srcElement.src);};
						atag.onmouseout = function(){event.srcElement.src = dettachO(event.srcElement.src)};
					@else @*/
						atag.addEventListener("mouseover",function(ev){ev.target.src = attachO(ev.target.src);},true);
						atag.addEventListener("mouseout",function(ev){ev.target.src = dettachO(ev.target.src)},true);
					/*@end @*/
					
				}
			//}
			}
		}
		
		return true;
	}
	else return false;
	
}



/*
var pathRule = {
	attach:{regexp:new RegExp("^(.+)_n(\.gif|\.jpg|\.png)$"),callback:function(a,b,c){return b+"_o"+c;}},
	dettach:{regexp:new RegExp("^(.+)_o(\.gif|\.jpg|\.png)$"),callback:function(a,b,c){return b+"_n"+c;}}
};
*/

var pathRules = {
	name_NUM_n_o:{
		attach:{regexp:new RegExp("^(.+)_n(\.gif|\.jpg|\.png)$"),callback:function(a,b,c){return b+"_o"+c;}},
		dettach:{regexp:new RegExp("^(.+)_o(\.gif|\.jpg|\.png)$"),callback:function(a,b,c){return b+"_n"+c;}}
	},
	name_NUM_o:{
		attach:{regexp:new RegExp("^(.+)(\.gif|\.jpg|\.png)$"),callback:function(a,b,c){return b+"_o"+c;}},
		dettach:{regexp:new RegExp("^(.+)_o(\.gif|\.jpg|\.png)$"),callback:function(a,b,c){return b+c;}}
	},
	name_o_NUM:{
		attach:{regexp:new RegExp("^(.+)(_[0-9]+)(\.gif|\.jpg|\.png)$"),callback:function(a,b,c,d){return b+"_o"+c+d;}},
		dettach:{regexp:new RegExp("^(.+)_o(_[0-9]+)(\.gif|\.jpg|\.png)$"),callback:function(a,b,c,d){return b+c+d;}}
	}
};
var pathRule = pathRules.name_o_NUM;

function attachO(path){
//	return path.replace(/^(.+)_n\.(gif|jpg|png)$/,function(a,b,c){return b + "_o." + c;});
	
	return path.replace(pathRule.attach.regexp,pathRule.attach.callback);
	/*
	var file = "";
	for(var i=path.length-1;i>=0;i--){
		var c = path.charAt(i);
		if(c == "."){
			if(path.charAt(i-4)!="o"){ /*file = path.substring(0,i) +  "o." + file;* /
				//file = path.split(getName(path)).join("") + getName(path).split("_")[0] + "_o_" + getName(path).split("_")[1];
				file = pathRule.attach(file,path,i);
			}
			else file = path;
			break;
		}
		file = c + file;
	}
	return file;
	*/
}

function dettachO(path){

	return path.replace(pathRule.dettach.regexp,pathRule.dettach.callback);
//	return path.replace(/^(.+)_o\.(gif|jpg|png)$/,function(a,b,c){return b + "_n." + c;});
	/*
	var file = "";
	for(var i=path.length-1;i>=0;i--){
		var c = path.charAt(i);
		if(c == "."){
			if(path.charAt(i-4)=="o")/* file = path.substring(0,i-1) +  "." + file;* /
				file = pathRule.dettach(path,file,i);
//				file = path.split("o_").join("");
			else  file = path;
			break;
		}
		file = c + file;
	}
	return file;
	*/
}




$=function(id,element){
	if(!element) element=window.document;
	if(typeof(id)=='object') return id;
	if(element.getElementById) return element.getElementById(id);
	if(element.all) return element.all(id);
	if(document.layers) return document.layers[id];
//	throw "unsupport browser";
}

$$ = function(selector,bool){
	if(!document.getElementsByTagName) return [];
	var tokens = selector.split(' ');
	var currentContext = [document];
	var token;
	
	for (var i=0;i<tokens.length;i++){
		token = tokens[i].replace(/^\s+/,'').replace(/\s+$/,'');

		if (token.indexOf('#') > -1) {
			var bits = token.split('#');
			if (bits[0] && $(bits[1]).nodeName.toLowerCase() != bits[0].toLowerCase()) return [];
			currentContext = [$(bits[1])];
			
			continue;
		}

		if (token.indexOf('.') > -1){
			var bits = token.split('.');
			if (!bits[0]) bits[0] = '*';
			for (var found=[], h = 0; h < currentContext.length; h++){
				var a = currentContext[h].getElementsByTagName(bits[0]);
				
				for(var j=0;j<a.length;j++){
					if(a[j].className && a[j].className.match(new RegExp('\\b'+bits[1]+'\\b'))){
						found.push(a[j]);
						//found[found.length] = a[j];
					}
				}
			}
			currentContext = found;
			continue;
		}

		if (token.match(/^(\w*)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/)){
			var tagName = RegExp.$1;
			var attrName = RegExp.$2;
			var attrOperator = RegExp.$3;
			var attrValue = RegExp.$4;

			if (!tagName) tagName = '*';
			for (var found, h = 0; h < currentContext.length; h++)
				found = currentContext[h].getElementsByTagName(tagName);
			var callback;
			switch (attrOperator) {
				case '=':
					callback = function(e) { return (e.getAttribute(attrName) == attrValue); };
				break;
				case '~':
					callback = function(e) { return (e.getAttribute(attrName).match(new RegExp('\\b'+attrValue+'\\b'))); };
				break;
				case '|':
					callback = function(e) { return (e.getAttribute(attrName).match(new RegExp('^'+attrValue+'-?'))); };
				break;
				case '^':
					callback = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) == 0); };
				break;
				case '$':
					callback = function(e) { return (e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length); };
				break;
				case '*':
					callback = function(e) { return (e.getAttribute(attrName).indexOf(attrValue) > -1); };
				break;
				default :
					callback = function(e) { return e.getAttribute(attrName); };
			}
			
			for (var currentContext = [], k = 0; k < found.length; k++)
				if (callback(found[k])) currentContext.push(found[k]);
				
			continue;
		}
		
		var found = [];
		for (var tagName=token, h = 0; h < currentContext.length; h++){
			var a = currentContext[h].getElementsByTagName(tagName);
			for(var j=0;j<a.length;j++) found.push(a[j]);
		}
		
		currentContext = found;
	}
	
	return currentContext;
}



function getFileName(path){
//	var file = "";
	
	if(path.indexOf("?")!=-1) path = path.substring(0,path.indexOf("?"));
	if(path.indexOf("#")!=-1) path = path.substring(0,path.indexOf("#"));


	/*
	for(var i=path.length-1;i>=0;i--){
		var c = path.charAt(i);
		if(c == "/" || c == "\\") break;
		file = c + file;
		
	}*/
	path = path.split(LOC).join("");
	if(path.indexOf("http://")>-1) return path;
	
	
	if(path.charAt(path.length-1) == "/") path += "index.html";
	return LOC +  path;
}

function dir(path,lctn){
	var file = "";
	path = path.split(LOC).join("");
	
	for(var i=path.length-1;i>=0;i--){
		var c = path.charAt(i);
		if(c == "/" || c == "\\") break;
		file = c + file;
		
	}
	return LOC + path.split(file).join("");
}

function getName(path){
	var file = "";
	
	if(path.indexOf("?")!=-1) path = path.substring(0,path.indexOf("?"));
	if(path.indexOf("#")!=-1) path = path.substring(0,path.indexOf("#"));

	for(var i=path.length-1;i>=0;i--){
		var c = path.charAt(i);
		if(c == "/" || c == "\\") break;
		file = c + file;
		
	}
	
	
	return file;
}

function setOpenWindowAction(obj,ext){
	if(!obj) return;
	/*@if (@_jscript)
		obj.onclick = function(){return _openWindow(obj,ext);};
	@else @*/
		if(navigator.appVersion.indexOf("Safari") < 0)
			obj.addEventListener("click",function(ev){_openWindow(obj,ext);ev.preventDefault();},true);
		else obj.onclick = function(){return _openWindow(obj,ext);};
	/*@end @*/
}

function _openWindow(obj,ext){
	var href = obj.href;
	var name = href.split("/").join("_").split(".").join("_").split(":").join("_").split("?")[0].split("#")[0];
	var w = (ext && ext["w"])?ext["w"]:640;
	var h = (ext && ext["h"])?ext["h"]:480;
	var s = (ext && ext["s"])?ext["s"]:0;
	var win = window.open(href,name,'width=' + w + ',height=' + h + ',scrollbars=' + s);
	win.focus();
	return false;
}

var default_replace = String.prototype.replace;
String.prototype.def_replace = String.prototype.replace;
String.prototype.replace = function(search,rpl){
	if(typeof rpl != "function"){
		return this.def_replace(search,rpl);
//		return default_replace.apply(this,arguments);
	}
	
	var str = new String(this);
	var callback = rpl;
/*@if (!@_win32)
	if(typeof search != "object"){
@else @*/
	if(!(search instanceof RegExp)){
/*@end @*/
		var idx = str.indexOf(search);
		
		return (
			idx == -1 ? str : 
			str.def_replace(search,callback(search, idx, str))
			// default_replace.apply(str,[search,callback(search, idx, str)])
		)
	}
	var reg = search;
	var result = [];
	var lastidx = reg.lastIndex;
	if(!lastidx) lastidx = 0;
	var re;
	
	while((re = reg.exec(str)) != null){
		var idx  = re.index;
		var args = re.concat(idx, str);
		
		result.push(
			str.slice(lastidx,idx),
//			callback.apply(null,args).toString()
			callback(args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8],args[9],args[10]).toString()
		);
		
		if(!reg.global){
			var lm = RegExp.lastMatch;

			if(!lm || lm == undefined) lm = str;
			lastidx += lm.length;
			
			break;
		}else{
			lastidx = reg.lastIndex;
		}
		
	}
	
	result.push(str.slice(lastidx));
	return result.join("")
}
