       //  ////        //  ////
      // //           // //
     //   //   //    //   //
    //     //       //     //
////   ////     ////   ////

var js = {
	js : true,
	ver: "beta",
	update : "070507",
	site : "http://qurx.net",
	the: "end"
}

var bw = {
	appName : navigator.appName,
	userAgent : navigator.userAgent,
	ie : navigator.appName.split(" ")[0]=="Microsoft" ? 1:0,
	ff : navigator.userAgent.indexOf("Firefox")!=-1 ? 1:0,
	op : window.opera ? 1:0
}

bw.ver = (bw.ie)? /MSIE ([0-9]).+;/.exec(bw.userAgent)[1] : "";

// x2
function id(){
	var elements = new Array;
  for(var i=0; i<arguments.length; i++){
  	var element = (typeof(arguments[i]) == "object")? arguments[i] : document.getElementById(arguments[i]);
    	//element.set = attr.set;
	if(arguments.length == 1)
	    return element;
  	elements.push(element);
  }
  return elements;
}

//function name(){
//	var elements = document.getElementsByName(arguments[0]);
//	return elements;
	//return (elements.length>0)? elements : [];
//}

// x1
function popup(url, name, width, height, sbar){
  if(!url){
  	var url = "about:blank";
  	var name = "";
  	var opt = "";
  }else{
  	if(!name) var name = "";
  	if(!scroll) var scroll = 0;
  	var top = (screen.height/2)-(height/2);
  	var left = (screen.width/2)-(width/2);
    var opt = "width="+width+", height="+height+", top="+top+", left="+left+", scrollbars=";
    opt += sbar ? "yes" : "no";
  }
  var obj = window.open(url, name, opt);
  if(obj == null) {
    alert("ÆË¾÷Ã¢ÀÌ Â÷´ÜµÇ¾ú½À´Ï´Ù.\nÆË¾÷Ã¢À» Çã¿ëÇØ ÁÖ½Ã±â ¹Ù¶ø´Ï´Ù.");
  }else{
    return obj;
  }
}

// x1
function flash(){
  var write = "<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'";
  var param = "";
  var embed = "<embed";
  var flag = (arguments.length%2>0) ? 1 : 0;
  if(flag)
  	arguments.length--;
  var name, value;
  for(i=0, c=arguments.length; i<c; i=i+2){
  	name = arguments[i];
  	value = arguments[i+1];
  	if(["width", "height", "id", "name"].in_array(name)){
  		if(name!="name")
	  		write += " "+name+"='"+value+"'";
  		if(name!="id")
	  		embed += " "+name+"='"+value+"'";
	  	continue;
  	}
  	if(name!="swliveconnect"){
     	param += "<param name='"+name+"' value='"+value+"' />\n";
    if(name=="src")
    	param += "<param name='movie' value='"+value+"' />\n";
    embed += " "+name+"='"+value+"'";
  	}
  }
  write += ">\n" + param + embed + "></embed>\n</object>\n";
  if(flag) return write;
  document.write(write);
}

// x2
function getQuery(){
	var query = location.search.slice(1);
	if(query.length > 0){
	  if(!/&/.test(query)) query += "&";
	  query = query.split("&");
	  for(i=0;i<query.length;i++){
	    if(/=/.test(query[i])){
      var temp = query[i].split("=");
      eval(temp[0] + " = \"" + temp[1] + "\"");
      }
		}
	}
}

String.prototype.trim = function(str){
  str = this != window ? this : str;
  return str.replace(/^\s+/g,'').replace(/\s+$/g,'');
}

String.prototype.camelize = function(){
	str = this.split("-");
	if(str.length==1) return str[0];
	else {
		for(i=1, count = str.length; i<count; i++){
			str[i] = str[i].charAt(0).toUpperCase() + str[i].slice(1);
		}
		return str.join("");
	}
}

// x2
function rand(start, end){
  if(!end) {
  	end = start;
  	start = 0;
  }
  return Math.round(Math.random()*(end-start))+start;
}

Array.prototype.in_array = function(str){
	return (this.find(str)!==false) ? true : false;
}

Array.prototype.find = function(str){
	for(var i=0;i<this.length;i++){
		if(this[i] == str)
			return i;
	}
	return false;
}

Array.prototype.unfindedPush = function(str){
	if(!this.find(str)){
		this.push(str);
		return true;
	}else
		return false;
}

Array.prototype.shuffle = function(){
	for(var i=0, count=this.length;i<count; i++){
		var key = rand(0, count-1);
		var now = this[i];
		this[i] = this[key];
		this[key] = now;
	}
}

Array.prototype.fill = function(start, end){
	if(!end){
		var end = start;
		var start = 0;
	}
	for(var i=start; i<end; i++){
		this.push(i);
	}
}
//////////////////////////////////////////////////////////////////////////////
// BETA
//////////////////////////////////////////////////////////////////////////////

var attachEventListener = function(object, type, listener){
	if(object.addEventListener){
		object.addEventListener(type, listener, false);
	}else{
		object.attachEvent("on"+type, listener);
	}
}

var removeEventListener = function(object, type, listener){
	if(object.removeEventListener){
		object.removeEventListener(type, listener, false);
	}else{
		object.detachEvent("on"+type, listener);
	}
}

var gd =
	gradation =
	getGD =
	getGd = function(start, end, step){
	var s10 = [
		eval("0x"+start.slice(1,3)).toString(10),
		eval("0x"+start.slice(3,5)).toString(10),
		eval("0x"+start.slice(5,7)).toString(10)
	]
	var e10 = [
		eval("0x"+end.slice(1,3)).toString(10),
		eval("0x"+end.slice(3,5)).toString(10),
		eval("0x"+end.slice(5,7)).toString(10)
	]
	var c = [[],[],[]];

	for(i=0;i<3;i++){
		ss = Number(s10[i]);
		e = Number(e10[i]);
		total = (ss < e)? e - ss : ss - e;
		div = total / step;
		for(j=1;j<step-1;j++){
			c[i][j] = (ss < e)? div*j : -div*j;
			c[i][j] = Math.round(ss+c[i][j]).toString(16);
			if(c[i][j].length==1) c[i][j] = "0"+c[i][j];
		}
	}

  var c16 = [];
  c16[0] = start;
  c16[step-1] = end;
  if(step>2)
  	for(i=1;i<step-1;i++)
  		c16[i] = "#"+c[0][i]+c[1][i]+c[2][i];
  return c16;
}


// getStyle by http://prototype.conio.net
function getStyle(element, style) {
  element = id(element);
  var value = element.style[style.camelize()];
  if (!value) {
    if (document.defaultView && document.defaultView.getComputedStyle) {
      var css = document.defaultView.getComputedStyle(element, null);
      value = css ? css.getPropertyValue(style) : null;
    } else if (element.currentStyle) {
      value = element.currentStyle[style.camelize()];
    }
  }

  //if (window.opera && ['left', 'top', 'right', 'bottom'].include(style))
  //  if (Element.getStyle(element, 'position') == 'static') value = 'auto';
  return value == 'auto' ? null : value;
}

function empty(){
	return function(){}
}

var offset = function(element){
	var element = id(element);
	var top = element.offsetTop;
	var left = element.offsetLeft;
	while(element.parentNode.tagName!="BODY"){
		element = element.parentNode;
		if(!/TR|TBODY|THEAD|TFOOT/.test(element.tagName)){
			top += element.offsetTop;
			left += element.offsetLeft;
		}

	}
	return [top, left];
}

var offsetTop = function(element){
	return offset(element)[0];
}

var offsetLeft = function(element){
	return offset(element)[1];
}

var attr = {
	set : function(property, element, value){
		var element = id(element);
		if(value)
			eval("element.style."+property+" = \""+value+"\";");
		//else
		//	this.get(property, element);
	},
	get : function(property, element){
		return getStyle(element, property);
	}
}

var opacity = function(element, value){
	var element = id(element);
	if(value){
		if(bw.ie) element.style.filter = "alpha(opacity='"+value+"')";
		else      element.style.MozOpacity = value/100;
	}
}

attr.get.opacity = function(element){
	var element = id(element);
	if(bw.ie) return element.style.filter ?  parseFloat(element.style.filter) : 100;
	else      return element.style.MozOpacity ? element.style.MozOpacity*100 : 100;
}

// dramatic effect
var drama = function(element){
	var element = id(element);
}


// get!
var g = {
	et : function(property, element){
		return getStyle(element, property);
	},

	opacity : function(element){
		var element = id(element);
		if(document.all)
			return element.style.filter ?  parseFloat(element.style.filter) : 100;
		else
			return element.style.MozOpacity ? element.style.MozOpacity*100 : 100;
	},

	radation : function(start, end, step){
	  var s10 = new Array;
	  var e10 = new Array;
	  s10[0] = eval("0x"+start.slice(1,3)).toString(10);
	  s10[1] = eval("0x"+start.slice(3,5)).toString(10);
	  s10[2] = eval("0x"+start.slice(5,7)).toString(10);
	  e10[0] = eval("0x"+end.slice(1,3)).toString(10);
	  e10[1] = eval("0x"+end.slice(3,5)).toString(10);
	  e10[2] = eval("0x"+end.slice(5,7)).toString(10);

	  var c = new Array;
	  c[0] = new Array;
	  c[1] = new Array;
	  c[2] = new Array;

	  for(i=0;i<3;i++){
	    ss = Number(s10[i]);
	    e = Number(e10[i]);
	    total = (ss < e)? e - ss : ss - e;
	    div = total / step;
	    for(j=1;j<step-1;j++){
	    c[i][j] = (ss < e)? div*j : -div*j;
	    c[i][j] = Math.round(ss+c[i][j]).toString(16);
	    if(c[i][j].length==1) c[i][j] = "0"+c[i][j];
	    }
	  }

	  c16 = new Array();
	  c16[0] = start;
	  c16[step-1] = end;
	  if(step>2){
	  for(i=1;i<step-1;i++){
	  c16[i] = "#"+c[0][i]+c[1][i]+c[2][i];
	  }
	  }
	  return c16;
	},

	push : Array("display", "width", "height", "top", "right", "bottom", "left", "visible", "position"),

	the : "end"
}
for(i=0, count=g.push.length; i<count; i++)
	eval("g."+g.push[i]+" = function(element){ return getStyle(element, \""+g.push[i]+"\");}");


// drama!
var d = {
	ver : "beta",
	rama : function(element){
		var element = id(element);
		if(!element.broadcasted){
			element.broadcasted = 1;
			element.term = 0;
			element.duration = 0.3;
			element.acts = 10;
			element.actor = 0;
			element.actors = new Array;

			element.stillCut = 1;

			element.ready = function(){
				element.stillCut = 0;
				element.term = 0;
				element.actors = new Array;
			}
			element.s = {
				prologue : {},
				epilogue : {},
				et : function(property, value){
					if(element.stillCut){
						var func = eval("s."+property);
						func(element, value);
					}else{
						var func = eval("g."+property);
						eval("element.s.prologue."+property+" = \""+func(element)+"\";");
						eval("element.s.epilogue."+property+" = \""+value+"\";");
						element.actors.unfindedPush(property);
					}
				},
				push : Array("opacity", "width", "height", "top", "right", "bottom", "left"),
				the : "end"
			}
			for(i=0, count=element.s.push.length; i<count; i++)
				eval("element.s."+element.s.push[i]+" = function(value){ return element.s.et(\""+element.s.push[i]+"\", value);}");
			element.s.display = function(value){
				if(element.stillCut){
					s.display(element, value);
				}else{
					element.s.prologue.display = g.display(element);
					element.s.epilogue.display = value;
					element.actors.unfindedPush("display");
					element.s.opacity((value=="none")? 0 : 100);
					if(value!="none"){
						element.s.prologue.opacity = 0;
					}
				}
			}

			element.onair = function(series){
				element.stillCut = 1;
				d.onair(element, series)
			}
		return element;
		}
	},

	onair : function(element, series){
		if(element.actor)
			win.clearInterval(element.actor);
		element.act = 0;
		element.actor = setInterval(function(){
				if(element.acts > element.act){
					element.act++;
					for(i=0, count=element.actors.length; i<count; i++){
						var actor = element.actors[i];
						var opening = eval("element.s.prologue."+actor);
						var ending = eval("element.s.epilogue."+actor);
						if(actor == "display"){
							if(element.s.epilogue.display != "none" && element.act==1)
								s.display(element, ending);
							else continue;
						}else{
							opening = parseFloat(opening);
							ending = parseFloat(ending);
						}
						if(opening!=ending){

							var value = d.getValue(opening, ending, element.act, element.acts, 0);
							eval("element.s.prologue."+actor+" = "+value+";");
							eval("element.s."+actor+"("+value+");");
						}
					}
				}else{
					win.clearInterval(element.actor);
					element.actors = new Array;
					if(element.s.epilogue.display == "none")
						s.display(element, "none");
					if(series) setTimeout(series, element.term*1000);
				}
			},
			(element.duration/element.acts)*1000
			);
	},

	getValue : function(start, end, act, acts, pow){
		var value = (pow)? Math.ceil((Math.pow(((1 / acts) * act), 0.4) * (start-end))) : ((start-end)/acts)*act;
		return Math.round(start-value);
	},

	the : "end"
}

// set!
var s = {
	et : function(property, element, value){
		var element = id(element);
		if(value)
			eval("element.style."+property+" = \""+value+"\";");
	},

	displayToggle : function(element){
		var element = id(element);
		if(g.display(element) == "none")
			this.display(element, "block");
		else
			this.display(element, "none");
	},

	opacity : function(element, value){
		var element = id(element);
		if(bw.ie){
			element.style.filter = "alpha(opacity='"+value+"')";
		}
		else
			element.style.MozOpacity = value/100;
	},

	push : g.push,

	the : "end"
}
for(i=0, count=s.push.length; i<count; i++)
	eval("s."+s.push[i]+" = function(element, value){ s.et(\""+s.push[i]+"\", element, value);}");


// ½æ³×ÀÏ ¸¸µé¾îÁ®ÀÖ´Â ÁÖ¼Ò?
// http://msnsearch.srv.girafa.com/srv/i?s=MSNSEARCH&r=
//http://spa.snap.com/preview/?url=miniwini.com&key=fff84db93ce9208e75fa9b3fe8e537b2

document.flash = function(movie){
	if (window.document[movie]){
		return window.document[movie];
	}
	if (!bw.ie){
	  if (document.embeds && document.embeds[movie])
	    return document.embeds[movie];
	}else {
		return window[movie];
	}
	return id(movie);
}

function FORM(formName){
	return formName ? document.forms[formName].elements : false;
}

var $F = function(){
	if(!arguments[0])
		return;
	var form = document.forms[arguments[0]];
	//var element = form.elements;
	//var values = [];
	//for(property in element){
	//	if(form.elements[property].type == "submit")
	//		continue;
	//	values[property] = element[property].value;
	//}
	//form.value = values;
	return form;
}

function N(no){
	return Number(no);
}

function S(str){
	return String(str);
}

var blind = {
	created : false,
	scrollTop : 0,
	open : function(option){
		
		option = {
			color : "black",
			opacity : 50
		}.merge(option);
		
		blind.scrollTop = body.scrollTop;
		
		if(!blind.created){
			var element = document.createElement("div");
			element.style.position = "absolute";
			element.innerHTML = "&nbsp;"
			element.style.top = 0;
			element.style.left = 0;
			element.style.zIndex = 0;
			document.body.appendChild(element);
			blind.element = element;
			blind.created = true;
		}

		element = blind.element;
		body = document.body;		
		blind.resize();		
		element.style.backgroundColor = option.color;
		opacity(element, option.opacity);
		element.style.display = "block";	
		body.style.overflow = "hidden";
		window.scrollTo(0, blind.scrollTop);
	},
	
	close : function(){
		if(blind.element){
			blind.element.style.display = "none";		
		}
		body.style.overflow = "visible";
		return false;
	},
	
	resize : function(){
		var element = blind.element;
		body = document.body;		

		element.style.width = "100%";
		var height = body.scrollHeight;
		if(height<body.clientHeight)
			height = body.clientHeight;
		element.style.height = height;
	}

}

Object.prototype.merge = function(to){
	if(typeof to != "object")
		var to = {};

	for(property in this){
		if(!to[property])
			to[property] = this[property];
	}

	return to;
}

function Element(tagName, attr, style){
	var create = document.createElement(tagName);
	var attr = {}.merge(attr);
	for(property in attr){
		create[property] = attr[property];
	}
	
	for(property in style){
		if(typeof style[property] == "function") continue;
		create.style[property] = style[property];
	}	
	return create;
}

function setCookie(name, value, expires){
	var cookie = name + "=" + escape(value);
	var time = new Date();
	var expires = (!expires)? 1 : expires*1000;
	time.setTime(time.getTime()+expires);
	cookie += ";expires="+time.toGMTString() + ";path=/";	
	document.cookie = cookie;
}

function getCookie(name){
	var cookie = document.cookie+";";
	var getReg = new RegExp(name+"=([^;]+);", "i");
	var result = getReg.exec(cookie);
	return (result!=null)? result[1] : null;
}

Number.prototype.loop = function(call){
	for (var i=0; i<this; i++)
		call(i);
}

reflect = function(img, option){	
var option = {
	opacity : 20, extent : 50
}.merge(option);

var height = Math.ceil(img.height/100 * option.extent);
var step = Math.ceil(option.opacity/height);
var html = "";

height.loop(function(i){
	var value = step * (height-i);
	var opacity = (bw.ie)? "filter:alpha(opacity='"+value+"');" : "opacity:"+value/100;	
	html += "<div style='height:1px;overflow:hidden;'><img src='"+img.src+"' style=\"margin-top:-"+(img.height-1-i)+"px;"+opacity+"\" alt=''></div>";
});

var shadow = Element("div", {innerHTML : html}, {width : img.width});		
img.parentNode.insertBefore(shadow, img.nextSibling);	
}
