/**
* common javascript library for DRAGONFLY websites.
* wrote by jaNg. @ rootbox ( jangkw@dragonflygame.com )
**/

/*

/*
* enable image cache for less than internet explorer 6
*/
try { document.execCommand('BackgroundImageCache', false, true); } catch(e) {}


function trim(str) {
    return str.replace(/^\s*(\b.*\b|)\s*$/, "$1");
}

/*
* flash activation
*/
function flashActivate() {
	var object = new String;
	var params = new String;
	var objParams = new String;
	var embedParams = new String;
	var objID = new String;

	this.init = function(objectID, flashURL, W, H) {
		objID = objectID;
		object = "<object id='" +objectID+ "' width='" +W+ "' height='" +H+ "' classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0'>";
		object += "";
		objParams = "<param name='movie' value='" +flashURL+ "' />";
		embedParams = "src='" +flashURL+ "' ";
		embedParams += "name='" +objectID+ "' ";
		embedParams += "width='" + W + "' height='" + H + "' ";
	};
	this.param = function(param, value) {
		params += "";
		objParams += "<param name='" +param+ "' value='" +value+ "' />";
		embedParams += param + "='" +value+ "' ";
	};
	this.setAttr = function(param, value) {
		if(param.toLowerCase() == "flashvars") {
			getFlashMovieObject(objID).SetVariable(value.split("=")[0], value.split("=")[1]);
		} else {
			getFlashMovieObject(objID).setAttribute(param, value);
		}
	};
	this.load = function() {
		var embedTag = "<embed " + embedParams + "pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' />";
		var objTag = object + objParams + embedTag + "</object>";
		//alert(objTag);
		document.write(objTag);
	};
};

/*
* initialize tabs
*/
var initTab = function(obj, link, cur) {
	var tabs = [];
	var imgs = obj.getElementsByTagName("img");
	var regx = "\#[a-zA-Z0-9]+";
	var old = null;

	for(var i = 0; val = imgs[i]; i ++) {
		tabs.push(document.getElementById(val.parentNode.href.match(regx)[0].replace("#","")));
	}

	for(var i = 0; i < imgs.length; i ++) {
		imgs[i].onclick = function() {
			reset();
			this.src = this.src.replace(".gif", "On.gif");
			this.tab = document.getElementById(this.parentNode.href.match(regx)[0].replace("#",""));
			this.tab.style.display = "block";
			if(link) link.href = this.tab.href;
			return false;
		};
	}
	
	if(cur >= 0) {
		reset();
		imgs[cur].src = imgs[cur].src.replace(".gif", "On.gif");
		tabs[cur].style.display = "block";
	}

	function reset() {
		for(var i = 0; i < tabs.length; i ++) {
			tabs[i].style.display = "none";
			imgs[i].src = imgs[i].src.replace("On.gif", ".gif");
		}
	};
};

/*
* set image rollover
*/
var initRollOver = function(handler) {
	handler.imgs = handler.getElementsByTagName("img");
	for(var i = 0; i < handler.imgs.length; i ++) {
		if(handler.imgs[i].src.match("On.gif")) continue;
		handler.imgs[i].onmouseover = function() { this.src = this.src.replace(".gif", "On.gif"); };
		handler.imgs[i].onmouseout = function() { this.src = this.src.replace("On.gif", ".gif"); };
	}
};

/*
* image slider - array control version
*/
var GallerySlider = function(container, content, cropItems, btns, preview, isMoving, marginWidth) {
	container.ul = content;
	container.li = content.getElementsByTagName("li");
	container.cropItems = cropItems;
	container.btns = btns;
	container.isMoving = isMoving;
	container.target = null;
	container.opacity = 0;
	container.timer = null;
	container.marginWidth = marginWidth || 12;

	initRollOver(container.btns[0]);
	initRollOver(container.btns[1]);

	if(container.isMoving || container.cropItems >= container.li.length) return;
	container.isMoving = true;

	if(preview) {
		container.preview = preview.getElementsByTagName("img")[0];
		for(var i in container.li) {
			container.li[i].onclick = function() {
				for(var i in container.li) { container.li[i].className = ""; }
				this.className = "selected";
				container.opacity = 0;
				clearTimeout(container.timer);
				setStyle(container.preview, { "opacity":0, "MozOpacity":0, "KhtmlOpacity":0, "filter":"alpha(opacity=0)" });
				container.preview.src = this.getElementsByTagName("a")[0].href;
				(function() {
					setStyle(container.preview, { "opacity":container.opacity / 100, "MozOpacity":container.opacity / 100, "KhtmlOpacity":container.opacity / 100, "filter":"alpha(opacity="+container.opacity+")" });
					container.timer = setTimeout(arguments.callee, 20);
					container.opacity = (container.opacity + 10);
				})();
				return false;
			};
		}
	}

	container.btns[1].onclick = function() {
		if(/^-/.test(container.ul.style.marginLeft)) {
			container.ul.appendChild(container.li[0]);
		}
		container.ul.style.marginLeft = "0px";
		container.target = -container.li[0].offsetWidth - container.marginWidth;
		action();
		return false;
	};
	container.btns[0].onclick = function() {
		if(!/^-/.test(container.ul.style.marginLeft)) {
			container.ul.insertBefore(container.li[container.li.length - 1], container.li[0]);
		}
		container.ul.style.marginLeft =- container.li[0].offsetWidth + container.marginWidth + "px";
		container.target = 0;
		action();
		return false;
	};

	function action() {
		var marginLeft = parseInt(container.ul.style.marginLeft),
			moveLength = parseInt((container.target - marginLeft) * .2);
		if (moveLength) {
			container.ul.style.marginLeft = marginLeft + moveLength + "px";
			setTimeout(arguments.callee, 20);
		} else {
			container.ul.style.marginLeft = container.target + "px";
			container.isMoving = 0;
		}
	};
};

/*
* file search
*/
function setFileSearch(obj) {
	if(obj.length <= 0) return;

	for(i = 0; i < obj.length; i ++) {
		document.getElementById(obj[i]).onchange = function() {
			document.getElementById(this.id.replace("-field", "-search")).value = this.value;
		}
	}
};

/*
* attach event
*/
function addEvent(elm, evType, fn, useCapture) {
	if(elm.addEventListener) {
		elm.addEventListener(evType,fn,useCapture);
		return true;
	} else if(elm.attachEvent) {
		var r = elm.attachEvent('on'+evType,fn);
		return r;
	} else {
		alert("Browser Does Not Full Support Event Handling");
		return true;
	}
};

/*
* get elements by class name.
* return - array object
*/
function getElementsByClassName(className, tag, elm) {
	var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++) {
		current = elements[i];
		if(testClass.test(current.className)) {
			returnElements.push(current);
		}
	}
	return returnElements;
};

function setStyle(obj, style) {
	if(!obj || !style) return;
	for(var i in style) {
		obj.style[i] = style[i];
	}
};

function getFlashMovieObject(movieName) {
	if(window.document[movieName]) return window.document[movieName];
	if(navigator.appName.indexOf("Microsoft Internet") == -1) {
		if (document.embeds && document.embeds[movieName]) return document.embeds[movieName]; 
	} else {
		return document.getElementById(movieName);
	}
};



function SetCookie(name, value, expiredays) {
    var todayDate = new Date();
    todayDate.setHours(todayDate.getHours() + expiredays);
    document.cookie = name + "=" + escape(value) + "; path=/; expires=" + todayDate.toGMTString() + ";"
}


function GetCookie(name) {
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    } else
        begin += 2;
    var end = document.cookie.indexOf(";", begin);
    if (end == -1)
        end = dc.length;
    return unescape(dc.substring(begin + prefix.length, end));
}
