var vcms_Filter = {
  defaultId : 'vcms_filter',
  show: function(){
		var grayElement = 'vcms_filter';
		grayElement.style.backgroundColor = '#0000ff';
		grayElement.style.zIndex = 1;
		this.resetSize(grayElement);
		if(this._hideOverElements) this.hideOverElements();
		grayElement.style.display = '';
		return grayElement;
	},
	hide: function(grayElement) {
		grayElement = this.getElement(grayElement || this.defaultId);
		grayElement.style.display = 'none';
		if(this._hideOverElements) this.showOverElements();
		return grayElement;
	},
	fadeIn: function(color, grayElement, fadeOptions){
		grayElement = this.createElement(grayElement || this.defaultId);
		if(color != undefined){
			grayElement.style.backgroundColor = color;
		}
		grayElement.style.zIndex = 1;
		this.resetSize(grayElement);
		if(this._hideOverElements) this.hideOverElements();
		fadeOptions = this.copyProperties({to: this.getOpacity(grayElement)}, fadeOptions || {});
		new vcms_Filter.FadeIn(grayElement, fadeOptions).start();
		return grayElement;
	},
	fadeOut: function(grayElement, fadeOptions) {
		grayElement = this.getElement(grayElement || this.defaultId);
		fadeOptions = this.copyProperties({from: this.getOpacity(grayElement)}, fadeOptions || {});
		var fade = new vcms_Filter.FadeOut(grayElement, fadeOptions);
		if(this._hideOverElements){
			fade.end = function(){
				vcms_Filter.showOverElements();
				vcms_Filter.FadeOut.prototype.end.apply(this, arguments);
			}
		}
		fade.start();
		return grayElement;
	},
	showParallel: function(otherElements, grayElement) {
		grayElement = this.createElement(grayElement || this.defaultId);
		this.resetSize(grayElement);
		if(this._hideOverElements) this.hideOverElements();
		grayElement.style.display = '';
		for(var i = 0; i < otherElements.length; i++){
			otherElements[i] = this.getElement(otherElements[i]);
			otherElements[i].style.display = '';
		}
		return grayElement;
	},
	hideParallel: function(otherElements, grayElement) {
		grayElement = this.getElement(grayElement || this.defaultId);
		grayElement.style.display = 'none';
		if(this._hideOverElements) this.showOverElements();
		for(var i = 0; i < otherElements.length; i++){
			otherElements[i] = this.getElement(otherElements[i]);
			otherElements[i].style.display = 'none';
		}
		return grayElement;
	},
	fadeInParallel: function(otherElements, grayElement, fadeOptions) {
		grayElement = this.createElement(grayElement || this.defaultId);
		this.resetSize(grayElement);
		if(this._hideOverElements) this.hideOverElements();
		fadeOptions = this.copyProperties({to: this.getOpacity(grayElement)}, fadeOptions || {});
		var grayFade = new vcms_Filter.FadeIn(grayElement, fadeOptions);
		var otherFades = [];
		for(var i = 0; i < otherElements.length; i++){
			otherElements[i] = this.getElement(otherElements[i]);
			otherFades.push(new vcms_Filter.FadeIn(otherElements[i], {duration: fadeOptions.duration, to: this.getOpacity(otherElements[i])}));
		}
		grayFade.start(function(){ grayFade.update(); for(var i = 0; i < otherFades.length; i++){	otherFades[i].update(); }});
		return grayElement;
	},
	fadeOutParallel: function(otherElements, grayElement, fadeOptions) {
		grayElement = this.getElement(grayElement || this.defaultId);
		fadeOptions = this.copyProperties({from: this.getOpacity(grayElement)}, fadeOptions || {});
		var grayFade = new vcms_Filter.FadeOut(grayElement, fadeOptions);
		if(this._hideOverElements){
			grayFade.end = function(){
				vcms_Filter.showOverElements();
				vcms_Filter.FadeOut.prototype.end.apply(this, arguments);
			}
		}
		var otherFades = [];
		for(var i = 0; i < otherElements.length; i++){
			otherElements[i] = this.getElement(otherElements[i]);
			otherFades.push(new vcms_Filter.FadeOut(otherElements[i], {duration: fadeOptions.duration, from: this.getOpacity(otherElements[i])}));
		}
		grayFade.start(function(){ grayFade.update(); for(var i = 0; i < otherFades.length; i++){ otherFades[i].update(); }});
		return grayElement;
	},
		resetSize: function(element) {
		var position = this._getStyle(element, 'position');
		if(position != 'fixed'){
			var page = this.getPageSize();
			element.style.width  = page.width + 'px';
			element.style.height = page.height + 'px';
		}
	},
	getElement: function(element) {
		if(typeof element == 'string'){
			element = document.getElementById(element);
  	}
  	return element;
	},
	createElement: function(element) {
		var id = element;
		element = this.getElement(element);
		if(!element){
			element = document.createElement('div');
			element.id = id;
			element.style.display = 'none';
			document.body.appendChild(element);
		}
		return element;
  },
	copyProperties: function(dest, src) {
		for(var property in src){
			dest[property] = src[property];
		}
		return dest;
	},
	isIE : (/MSIE/.test(navigator.userAgent) && !window.opera),
	isWebKit : (navigator.userAgent.indexOf('AppleWebKit') != -1),
	getWindowSize: function() {
		var width;
		var height;
		if(document.compatMode == 'CSS1Compat' && !window.opera){
			width  = document.documentElement.clientWidth;
			height = document.documentElement.clientHeight;
		}
		else if(navigator.userAgent.indexOf('AppleWebKit') != -1){
			width  = window.innerWidth;
			height = window.innerHeight;
		}
		else{
			width  = document.body.clientWidth;
			height = document.body.clientHeight;
		}
		return {width: width, height: height};
	},
	getPageSize: function() {
		var windowSize = this.getWindowSize();
		var width  = windowSize.width;
		var height = windowSize.height;
		if(document.compatMode == 'CSS1Compat'){
			if(document.documentElement.scrollWidth > width){
				width  = document.documentElement.scrollWidth;
			}
			if(document.documentElement.scrollHeight > height){
				height = document.documentElement.scrollHeight;
			}
		}
		else{
			if(document.body.scrollWidth > width){
				width  = document.body.scrollWidth;
			}
			if(document.body.scrollHeight > height){
				height = document.body.scrollHeight;
			}
		}
		return {width: width, height: height};
	},
	getOpacity: function(element) {
		var value = this._getStyle(element, 'opacity');
		if(value)	return parseFloat(value);
		if(value = (element.style.filter || '').match(/alpha\(opacity=(.*)\)/)){
			if(value[1])	return parseFloat(value[1]) / 100;
		}
		return 1.0;
	},
	_getStyle: function(element, style){
		var value = element.style[style];
		if(value)	return value;
		if(document.defaultView && document.defaultView.getComputedStyle){
			var oldDisplay = element.style.display;
			if(vcms_Filter.isWebKit)	element.style.display = 'block';
			var css = document.defaultView.getComputedStyle(element, null);
			if(css)	value = css.getPropertyValue(style);
			if(vcms_Filter.isWebKit)	element.style.display = oldDisplay;
			return value;
		}
		else if(element.currentStyle){
			return element.currentStyle[style];
		}
		return null;
	},
	_hideOverElements: false /*@cc_on || @_jscript_version < 5.7 @*/,
	overElementTagNames: ['select', 'object', 'embed'],
	hideOverElements: function() {
		for(var i = 0, len1 = vcms_Filter.overElementTagNames.length; i < len1; i++){
			var elements = document.getElementsByTagName(vcms_Filter.overElementTagNames[i]);
				for(var j = 0, len2 = elements.length; j < len2; j++){
					elements[j].style.visibility = 'hidden';
				}
		}
	},
	showOverElements: function() {
		for(var i = 0, len1 = vcms_Filter.overElementTagNames.length; i < len1; i++){
			var elements = document.getElementsByTagName(vcms_Filter.overElementTagNames[i]);
			for(var j = 0, len2 = elements.length; j < len2; j++){
				elements[j].style.visibility = '';
			}
		}
	}
};

vcms_Filter.Fade = function(element, options) {
  this.setup(element, options);
};
vcms_Filter.Fade.prototype = {
	intervalTime: 10,
	duration: 200,
	setup: function(element, options){
		this.element = element;
		this.style = this.element.style;
		options = options || {};
		if(options.duration != undefined)	this.duration = options.duration;
		if(options.from != undefined)			this.from = options.from;
		if(options.to != undefined)				this.to = options.to;
		if(options.callback != undefined)	this.callback = options.callback;
		this.startTime = new Date().getTime();
		this.endTime = this.startTime + this.duration;
		this.range = this.to - this.from;
		if(vcms_Filter.isIE && (!this.element.currentStyle.hasLayout)){
			this.style['zoom'] = 1;
		}
		this.first = true;
	},
	start: function(updater){
		var self = this;
		updater = updater || function(){ self.update(); };
		this.intervalId = setInterval(updater, this.intervalTime);
	},
	end: function(){
		if(this.intervalId != null){
			clearInterval(this.intervalId);
			this.intervalId = null;
		}
		this.execCallback();
	},
	execCallback: function(){
		if(!this.callback)	return;
		if(typeof this.callback == 'function'){
			this.callback();
		}
		else{
			for(var i = 0; i < this.callback.length; i++){
				this.callback[i]();
			}
		}
	},
	update: function(){
		var nowTime = new Date().getTime();
		if(this.first){
			this.style.display = '';
			this.first = false;
		}
		if(nowTime >= this.endTime){
			this.setOpacity(this.to);
			this.end();
		}
		else{
			this.setOpacity(this.from + (this.range * (nowTime - this.startTime) / this.duration));
		}
	},
	setOpacity: function(opacity) {
		this.style.opacity = opacity;
		if(vcms_Filter.isIE)	this.style.filter = 'alpha(opacity=' + (opacity * 100) + ')';
	}
};
vcms_Filter.FadeIn = function(){
	vcms_Filter.Fade.apply(this, arguments);
};
vcms_Filter.copyProperties(vcms_Filter.FadeIn.prototype, vcms_Filter.Fade.prototype);
vcms_Filter.FadeIn.prototype.from = 0.0;
vcms_Filter.FadeIn.prototype.to = 1.0;
vcms_Filter.FadeOut = function(){
	vcms_Filter.Fade.apply(this, arguments);
};
vcms_Filter.copyProperties(vcms_Filter.FadeOut.prototype, vcms_Filter.Fade.prototype);
vcms_Filter.FadeOut.prototype.from = 1.0;
vcms_Filter.FadeOut.prototype.to = 0.0;
vcms_Filter.FadeOut.prototype.end = function(){
	this.style.display = 'none';
	this.setOpacity(this.from);
	vcms_Filter.Fade.prototype.end.apply(this, arguments);
};
var vcms_thumbnailProc={
	scrollbarwidth: 16,
	opacitystring: 'filter:progid:DXImageTransform.Microsoft.alpha(opacity=10); -moz-opacity: 0.1; opacity: 0.1',
	targetlinks:[],
	create_vcms_thumbnailPanel:function(){
		document.write('<div id="vcms_thumbnailPanel"><div id="vcms_thumbnailIMG"></div><div class="vcms_thumbfooter"><input type="button" value="CLOSE" class="vcms_thumbnailX" onclick="vcms_thumbnailProc.closePanel()" /></div></div>');
		document.write('<div id="vcms_thumbnailLoading">Now loading...</div>');
		this.vcms_thumbnailPanel   = document.getElementById("vcms_thumbnailPanel");
		this.vcms_thumbnailIMG     = document.getElementById("vcms_thumbnailIMG");
		this.vcms_thumbnailLoading = document.getElementById("vcms_thumbnailLoading");
		this.standardbody=(document.compatMode=="CSS1Compat")? document.documentElement : document.body;
	},
	centeringObj:function(obj){
		var isIE = document.all && !window.opera;
		var scroll_top  = (isIE) ? this.standardbody.scrollTop  : window.pageYOffset;
		var scroll_left = (isIE) ? this.standardbody.scrollLeft : window.pageXOffset;
		var docwidth  = (isIE) ? this.standardbody.clientWidth  : window.innerWidth-this.scrollbarwidth;
		var docheight = (isIE) ? this.standardbody.clientHeight : window.innerHeight;
		var docheightcomplete = (this.standardbody.offsetHeight>this.standardbody.scrollHeight) ? this.standardbody.offsetHeight : this.standardbody.scrollHeight;
		var objwidth  = obj.offsetWidth;
		var objheight = obj.offsetHeight;
		var topposition = (docheight>objheight) ? scroll_top+docheight/2-objheight/2+"px" : scroll_top+10+"px";
		obj.style.left = docwidth/2-objwidth/2+"px";
		obj.style.top  = Math.floor(parseInt(topposition))+"px";
		obj.style.visibility = "visible";
	},
	show_vcms_thumbnailPanel:function(){
		this.centeringObj(this.vcms_thumbnailPanel);
		this.currentopacity = 0.1;
		this.opacitytimer = setInterval("vcms_thumbnailProc.opacityProc()", 12);
	},
	vcms_loading:function(link){
		if(this.vcms_thumbnailPanel.style.visibility=="visible")	this.closePanel();
		var imageHTML='<img src="'+link.getAttribute("href")+'" style="'+this.opacitystring+'" />';
		if(link.getAttribute("title")){
			var relA = link.getAttribute("rel").split(",");
			imageHTML += '<div class="vcms_thumbtitle" style="width:'+relA[1]+'px;">'+link.getAttribute("title")+'</div>';
		}
		this.centeringObj(this.vcms_thumbnailLoading);
		this.vcms_thumbnailIMG.innerHTML = imageHTML;
		this.featureImage=this.vcms_thumbnailIMG.getElementsByTagName("img")[0];
		this.featureImage.onload=function(){
			vcms_thumbnailProc.vcms_thumbnailLoading.style.visibility="hidden";
			vcms_thumbnailProc.show_vcms_thumbnailPanel();
		}
		if(document.all && !window.createPopup)	this.featureImage.src=link.getAttribute("href");
		this.featureImage.onerror=function(){
			vcms_thumbnailProc.vcms_thumbnailLoading.style.visibility="hidden";
		}
	},
	setimgopacity:function(value){
		var targetobject=this.featureImage
		if(targetobject.filters && targetobject.filters[0]){
			if(typeof targetobject.filters[0].opacity=="number")	targetobject.filters[0].opacity=value*100;
			else	targetobject.style.filter="alpha(opacity="+value*100+")";
		}
		else if(typeof targetobject.style.MozOpacity!="undefined")	targetobject.style.MozOpacity=value;
		else if (typeof targetobject.style.opacity!="undefined")	targetobject.style.opacity=value;
		else	this.vcms_stopAnim();
	},
	opacityProc:function(){
		this.setimgopacity(this.currentopacity);
		this.currentopacity+=0.1;
		if(this.currentopacity>1)	this.vcms_stopAnim();
	},
	vcms_stopAnim:function(){
		if(typeof this.opacitytimer!="undefined")	clearInterval(this.opacitytimer);
	},
	closePanel:function(){
		this.vcms_stopAnim();
		this.vcms_thumbnailPanel.style.visibility="hidden";
		this.vcms_thumbnailIMG.innerHTML="";
		this.vcms_thumbnailPanel.style.left="-3000px";
		this.vcms_thumbnailPanel.style.top="-3000px";
//	vcms_Filter.hide();
		vcms_Filter.fadeOut();
	},
	cleanup:function(){
		this.vcms_thumbnailLoading=null;
		if(this.featureImage) this.featureImage.onload=null;
		this.featureImage=null;
		this.vcms_thumbnailIMG=null;
		for(var i=0; i<this.targetlinks.length; i++)	this.targetlinks[i].onclick=null;
		this.vcms_thumbnailPanel=null;
	},
	dotask:function(target, functionref, tasktype){
		var tasktype=(window.addEventListener)? tasktype : "on"+tasktype
		if(target.addEventListener)	target.addEventListener(tasktype, functionref, false);
		else if(target.attachEvent)	target.attachEvent(tasktype, functionref);
	},
	vcms_init:function(){
		var thumbnailA = document.getElementsByTagName("a");
		for(var i=0; i<thumbnailA.length; i++){
			if(thumbnailA[i].getAttribute("rel") && thumbnailA[i].getAttribute("rel").match(/^vcms_thumbnail/)){
				var relA = thumbnailA[i].getAttribute("rel").split(",");
				thumbnailA[i].onclick=function(){
					vcms_thumbnailProc.vcms_stopAnim();
					vcms_thumbnailProc.vcms_loading(this);
//					vcms_Filter.show();
						vcms_Filter.fadeIn(relA[3]);
					return false;
				}
					this.targetlinks.push(thumbnailA[i]);
			}
		}
		this.dotask(window, function(){if (vcms_thumbnailProc.vcms_thumbnailPanel.style.visibility=="visible") vcms_thumbnailProc.centeringObj(vcms_thumbnailProc.vcms_thumbnailPanel)}, "resize");
	}
}
vcms_thumbnailProc.create_vcms_thumbnailPanel();
vcms_thumbnailProc.dotask(window, function(){vcms_thumbnailProc.vcms_init()}, "load");
vcms_thumbnailProc.dotask(window, function(){vcms_thumbnailProc.cleanup()}, "unload");
var vcms_thisobj0;
var vcms_thisobj;
var vcms_offsetX;
var vcms_offsetY;
onload=function (){
	if(document.all){
		vcms_thisobj0 = document.all.vcms_thumbnailPanel
		document.all.vcms_thumbnailIMG.onmousedown = onMouseDown;
	}
	else if(document.getElementById){
		vcms_thisobj0 = document.getElementById("vcms_thumbnailPanel");
		document.getElementById("vcms_thumbnailIMG").onmousedown = onMouseDown;
	}
   document.onmousemove = onMouseMove;
   document.onmouseup = onMouseUp;
}
function onMouseDown(e){
   vcms_thisobj = vcms_thisobj0;
   if (document.all) {
      vcms_offsetX = event.offsetX + 2;
      vcms_offsetY = event.offsetY + 2;
   } else if (document.getElementsByTagName) {
      vcms_offsetX = e.pageX - parseInt(vcms_thisobj.style.left);
      vcms_offsetY = e.pageY - parseInt(vcms_thisobj.style.top);
   }
   return false;
}
function onMouseMove(e){
	if(!vcms_thisobj){
		return true;
	}
	if(document.all){
		var scrollLeft = document.body.scrollLeft || document.documentElement.scrollLeft;
		var scrollTop  = document.body.scrollTop  || document.documentElement.scrollTop;
		vcms_thisobj.style.pixelLeft = event.clientX - vcms_offsetX + scrollLeft;
		vcms_thisobj.style.pixelTop  = event.clientY - vcms_offsetY + scrollTop;
	}else if(document.getElementsByTagName){
		vcms_thisobj.style.left = (e.pageX - vcms_offsetX)+"px";
		vcms_thisobj.style.top  = (e.pageY - vcms_offsetY)+"px";
	}
	return false;
}
function onMouseUp(e){
	vcms_thisobj = null;
}

