/*
	SCGRPH lib, version 0.0.5 (2006-09-22)
	Copyright: 2006, Yosuke Yasuda
*/


/*@cc_on @*/
/*@if (!@_win32)
Array.prototype.push = function(o){
	this[this.length] = o;
}
@else @*/

/*@end @*/

if(!SCGRPH) var SCGRPH={};
SCGRPH.loc = location.href;
if(SCGRPH.loc.indexOf("?")!=-1) SCGRPH.loc = SCGRPH.loc.substring(0,SCGRPH.loc.indexOf("?"));
if(SCGRPH.loc.indexOf("#")!=-1) SCGRPH.loc = SCGRPH.loc.substring(0,SCGRPH.loc.indexOf("#"));
SCGRPH.loc = SCGRPH.loc.split("index.html").join("");

if(!window["SCGRPH_NO_CURRY"]){
	Function.prototype._=function(a){
	    var b = this;
	    return function() {
	        return b(a.apply(null, arguments));
	    }
	}
}

SCGRPH.evacuate = function(){
	SCGRPH.loc = "scgrph";
};

(function(){
	var b = navigator.userAgent.toLowerCase();
	SCGRPH.browser = {
		safari: /webkit/.test(b),
		opera: /opera/.test(b),
		macie: /msie/.test(b) && /mac_powerpc/.test(b),
		msie: /msie/.test(b) && !/opera/.test(b) && !/mac_powerpc/.test(b),
		mozilla: /mozilla/.test(b) && !/compatible/.test(b) && !/webkit/.test(b)
	};
})();

SCGRPH.isDOMready = false;
SCGRPH.ready = function(){SCGRPH.isDOMready = true;};
if ( SCGRPH.browser.mozilla || SCGRPH.browser.opera ) {
	document.addEventListener( "DOMContentLoaded", function(){SCGRPH.ready()}, false );
} else if( SCGRPH.browser.msie && !SCGRPH.browser.macie) {
	document.write("<scr" + "ipt id=__ie_init defer=true " + "src=//:><\/script>");
	var script = document.getElementById("__ie_init");
	script.onreadystatechange = function() {
		if ( this.readyState != "complete" ) return;
		this.parentNode.removeChild( this );
		SCGRPH.ready();
	};
	script = null;
} else if ( SCGRPH.browser.safari) {
	SCGRPH.safariTimer = setInterval(function(){
		if ( document.readyState == "loaded" || document.readyState == "complete" ) {
			clearInterval( SCGRPH.safariTimer );
			SCGRPH.safariTimer = null;
			SCGRPH.ready();
		}
	}, 100);
} 
else{
	var wl = window.onload;
	window.onload = function(){
		SCGRPH.ready();
		wl();
	}
}

SCGRPH.DOMready = function(f){
	if(SCGRPH.isDOMready) f();
	else SCGRPH.ready = function(){f();SCGRPH.isDOMready = true;};
};


SCGRPH.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;}}
	}*/
	name_NUM_n_o:{
		attach:{regexp:new RegExp("^(.+)_n(\.gif|\.jpg|\.png)$"),callback:"$1_o$2"},
		dettach:{regexp:new RegExp("^(.+)_o(\.gif|\.jpg|\.png)$"),callback:"$1_n$2"}
	},
	name_NUM_o:{
		attach:{regexp:new RegExp("^(.+)(\.gif|\.jpg|\.png)$"),callback:"$1_o$2"},
		dettach:{regexp:new RegExp("^(.+)_o(\.gif|\.jpg|\.png)$"),callback:"$1$2"}
	},
	name_o_NUM:{
		attach:{regexp:new RegExp("^(.+)(_[0-9]+)(\.gif|\.jpg|\.png)$"),callback:"$1_o$2$3"},
		dettach:{regexp:new RegExp("^(.+)_o(_[0-9]+)(\.gif|\.jpg|\.png)$"),callback:"$1$2$3"}
	}
}

SCGRPH.swapper = {
	apply:function(){
		var styles = arguments;
		for(var j=0;j<styles.length;j++){
			var style = styles[j];
			if(typeof style != "string") var elms = style;
			else{
				if(typeof cssQuery == "function") var elms = cssQuery(style);
				else var elms = $$(style);
			}
			if(!(elms.length>0)) elms = [elms];
			for(var i=0;i<elms.length;i++){
				
				if(!elms[i].src) continue;
				var parent = SCGRPH.node.getParent(elms[i],"a");
				if(parent!=null){
					var href = SCGRPH.path.basename(parent.href);
					var hreg = new RegExp(href.split("/").join("\\/").split(".").join("\\."));
				}
				
				if(parent != null && href == SCGRPH.path.basename(SCGRPH.loc) || 
						hreg.test(SCGRPH.path.basename(SCGRPH.loc).split("#")[0].split("?")[0])){
					elms[i].src = SCGRPH.swapper.attached(elms[i].src);
				}
				else{
					elms[i].src = SCGRPH.swapper.dettached(elms[i].src);
					(new Image()).src = SCGRPH.swapper.attached(elms[i].src);
					SCGRPH.swapper.attachEvent(elms[i]);
				}
			}
		}
/*		
		Behavior.register(style,function(elm){
			elm.onmouseover = function(e){
				
			},
			elm.onmouseout = function(e){
				
			}
		});*/
	},
	
	attachEvent:function(elm){
		elm.onmouseover = function(e){
			try{
				var elm = e.target || e.srcElement;
			}
			catch(err){
				var elm = this;
			}
			try{
				elm.src = SCGRPH.swapper.attached(elm.src);
			}
			catch(err){};
		}
		elm.onmouseout = function(e){
			try{
				var elm = e.target || e.srcElement;
			}
			catch(err){
				var elm = this;
			}
			try{
				elm.src = SCGRPH.swapper.dettached(elm.src);
			}
			catch(err){};
		}
	},
	deleteEvent:function(elm){
		delete elm.onmouseover;
		delete elm.onmouseout;
	},
	attached:function(src){
		return src.replace(SCGRPH.swapper.pathRule.attach.regexp,SCGRPH.swapper.pathRule.attach.callback);
	},
	dettached:function(src){
		return src.replace(SCGRPH.swapper.pathRule.dettach.regexp,SCGRPH.swapper.pathRule.dettach.callback);
	},
	forceAttach:function(elm){
		elm.src = SCGRPH.swapper.dettached(elm.src);
		(new Image()).src = SCGRPH.swapper.attached(elm.src);
		SCGRPH.swapper.attachEvent(elm);
	},
	forceDettach:function(elm){
		elm.src = SCGRPH.swapper.attached(elm.src);
		SCGRPH.swapper.deleteEvent(elm);
	},
	swapOn:function(elm){
		SCGRPH.swapper.forceDettach(elm);
	},
	pathRule:SCGRPH.pathRules.name_o_NUM
};

SCGRPH.activator={
	apply:function(){
		var styles = arguments;
		for(var j=0;j<styles.length;j++){
			var style = styles[j];
			if(typeof style != "string") var elms = style;
			else{
				if(typeof cssQuery == "function") var elms = cssQuery(style);
				else var elms = $$(style);
			}
			if(!(elms.length>0)) elms = [elms];
			
			for(var i=0;i<elms.length;i++){
				var elm = elms[i];
				if(elms[i].tagName.toUpperCase()=="A") var child = elms[i];
				else var child = elms[i].firstChild;//SCGRPH.findChild(elms[i],"a");
				var href = SCGRPH.path.basename(child.href);
				var hreg = new RegExp(href.split("/").join("\\/").split(".").join("\\."));
				if(href == SCGRPH.path.basename(SCGRPH.loc) || 
						hreg.test(SCGRPH.path.basename(SCGRPH.loc).split("#")[0].split("?")[0])){
					SCGRPH.element.addClassName(elm,SCGRPH.activator.className);
				}
				else{
					
				}
			}
		}
	},
	className:"active"
}
SCGRPH.element={
	addClassName:function(elm,className){
		var a = elm.className.split(" ");
		for(var i=0;i<a.length;i++){
			if(className == a[i]) return;
		}
		elm.className = className;
	}
};

SCGRPH.node={
	findParent: function(node, tagName) {
		var element = node;
		while (element.parentNode && (!element.tagName ||
			(element.tagName.toUpperCase() != tagName.toUpperCase())))
		element = element.parentNode;
		return element;
	},
	getParent:function(node,tagName){
		var element = node;
		if(element.parentNode.tagName.toUpperCase() != tagName.toUpperCase()) return null;
		return element.parentNode;
	},
	findChild:function(node,tagName){
	}
}

SCGRPH.path={
	basename:function(path){
		if(path.indexOf("?")!=-1) path = path.substring(0,path.indexOf("?"));
		if(path.indexOf("#")!=-1) path = path.substring(0,path.indexOf("#"));
		path = path.split(SCGRPH.loc).join("");
		if(path.indexOf("http://")>-1) return path;
		if(path.charAt(path.length-1) == "/") path += "index.html";
		return SCGRPH.loc +  path;
	}
}

SCGRPH.window={
	apply:function(obj,ext){
		if(!obj) return;
		/*@if (@_jscript)
			obj.onclick = function(){return SCGRPH.window._openWindow(obj,ext);};
		@else @*/
			if(navigator.appVersion.indexOf("Safari") < 0)
				obj.addEventListener("click",function(ev){SCGRPH.window._openWindow(obj,ext);ev.preventDefault();},true);
			else obj.onclick = function(){return SCGRPH.window._openWindow(obj,ext);};
		/*@end @*/
	},
	_openWindow:function(obj,ext){
		var href = obj.href;
		var name = href.split("-").join("_").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 r = (ext && ext["r"])?ext["r"]:0;
		var win = window.open(href,name,'width=' + w + ',height=' + h + ',scrollbars=' + s+",resizable="+r);
		win.focus();
		return false;
	}
}
SCGRPH.cookie={
	get:function(theName){
	    theName += "=";
	    theCookie = document.cookie+";";
		start = theCookie.indexOf(theName);
		if (start != -1){
	        	end = theCookie.indexOf(";",start);
		   return unescape(theCookie.substring(start+theName.length,end));
		}
		return false;
	}
}



SCGRPH.action = {
	list : [],
	addLoadEvent : function(func) {
		var oldonload = window.onload;
		if (typeof window.onload != 'function') {
			window.onload = func;
		} else {
			window.onload = function() {
				oldonload();
				func();
			}
		}
	},
	apply : function() {
		for (i = 0; i < SCGRPH.action.list.length; i++) {
			var rule = SCGRPH.action.list[i];
			if(typeof cssQuery == "function") var tags = cssQuery(rule.selector, rule.from);
			else var tags = $$(rule.selector);
			
			if (tags) {
				for (j = 0; j < tags.length; j++) {
					rule.action(tags[j]);
				}
			}
		}
	},
	register : function(selector, action, from) {
		SCGRPH.action.list.push({selector:selector,from:from,action:action});
	},
	start : function() {
		SCGRPH.action.addLoadEvent(function() {
			SCGRPH.action.apply();
		});
	}
}


SCGRPH.action.start();

if(typeof $ != "function")
$=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";
}

if(typeof $$ != "function")
$$ = 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;
}

SCGRPH.AJAX={};
SCGRPH.AJAX.iframeHttpRequest=function(){
	this.ifm = document.createElement("IFRAME");
	this.ifm.id = "iframe" + (new Date().getTime());
	this.div = document.createElement("DIV");
	this.div.style.visibility = "hidden";
	this.div.style.height = "1px";
	this.div.style.position = "absolute";
	this.div.style.top = "-100px";

	this.div.appendChild(this.ifm);
	this.onreadystatechange = function(){};
	this.open = function(method,url,sync){
		this.method  = method;
		this.requestURL = url;
	};
	this.mkonfunc = function(xmlobj,frame_id){
		var ifload = {set:function(o){for(var i in o){this[i]=o[i]}}};
		ifload.set({xmlobj: xmlobj,frame_id : frame_id});
		var _onload = function(ifload){
			ifload.xmlobj.readyState = 4;
			var doc = SCGRPH.AJAX.getFrameDoc(ifload.frame_id);
			var src = doc.body.innerHTML;
			ifload.xmlobj.responseText = src;
			ifload.xmlobj.onreadystatechange();
		};
		ifload.onload = function(){_onload(ifload)};
		return ifload.onload;
	};
	this._GET = function(){
		this.ifm.src = this.requestURL;
		var func = this.mkonfunc(this,this.ifm.id);
		/*@if (@_jscript)
			@if (@_win32)
				this.ifm.attachEvent('onload',func);
			@else
				TID = setTimeout("checkLoaded()",2000);
			@end
		@else @*/
			this.ifm.addEventListener('load', func, false)
		/*@end @*/
		document.body.appendChild(this.div);
	};
	this.send = function(q){this._GET();};
	return this;
};

SCGRPH.AJAX.getFrameDoc=function(id){
	var f = $(id);
	var doc;
	if(document.frames){
		doc = document.frames[id].document;
	}
	if(!doc){doc = f.contentWindow.document}
	return doc;
};

SCGRPH.AJAX.filter= function(t){
	var esc = escape(t);
	return(esc.indexOf("%u") < 0 && esc.indexOf("%") > -1) ? decodeURIComponent(esc) : t
};

