// JavaScript Document
// (c)TheDesignum

var dsn = {
	init: function() {
	},
	dominit: function() {
		if (!Browser.Engine.trident4) {
			if(Browser.Engine.trident) {
				motion = 0;
				$('information').set('html', 'The Designium - ver3.01<span class="padding12">/</span>Recommended browser - chrome or safari');
			}
			$("refine0").setStyle('display', 'block');
			//historyChangeのイベント設置
			this.historyFunc();
			
			contentFx = new Fx.Morph('content',{ wait: false });
			$('cover').set('opacity', 0);
			coverFx = new Fx.Morph('cover', { duration: 1000 });
			coverScroller = new Fx.Scroll('cover', { duration: 1000, transition: Fx.Transitions.Quart.easeOut });

			this.resizeFunc();
			(function() {
				dsn.loadedFunc();
			}).delay(500);
			$('attention').set('html', '<strong>Initializing...</strong>');

			initOK = true;
		} else {
			new Request.HTML({
				url: 'http://www.thedesignium.com/ie6', method: 'get', update: 'niceBody', evalScripts: false,
				onComplete: function(){
					dsn.dragFunc();
					dsn.resizeIE6();
					$('content').setStyle('cursor', 'url("http://dsn.sh/lab4/images/common/openhand.cur"), crosshair');
				},
				onFailure: function() {
					$('niceBody').set('html', 'Request Error!');
				},
				onRequest: function(){
					$$('html').setStyles({'background-color': '#FFFFFF'});
					$$('body').setStyles({'background-color': '#FFFFFF'});
					$('niceBody').setStyles({'background-color': '#FFFFFF'}).set('html', 'Request ...');
					location.hash = '/ie6/';
					initOK = 3;
				}
			}).send();
		}
		
		if(Browser.Engine.trident) {
			$$('#content #front .block').setStyles({
				'background-image': 'none',
				'background-color': '#FFFFFF',
				'padding': '0px 0px 0px 0px',
				'border-left': '1px solid #333333',
				'border-right': '1px solid #333333'
			});
			$$('#content #archive .block').setStyles({
				'background-image': 'none',
				'background-color': '#FFFFFF',
				'padding': '0px 0px 0px 0px',
				'border-left': '1px solid #333333',
				'border-right': '1px solid #333333'
			});
		}
	},
	resizeIE6: function() {
		winHeight = window.getHeight();
		winWidth = window.getWidth();
		var wh = $('wrapHeight').getHeight();
		blockHeight = winHeight - 52;

		var setMargin = 256 * 256;
		var setSize = 512 * 512;

		$('logo').setStyle('width', winWidth);
		$('layer').setStyles({'height': blockHeight, 'width': winWidth});
		$('block').setStyles({'height': setSize, 'width': setSize, 'margin-top': -setMargin, 'margin-left': -setMargin});
		$('content').setStyles({'height': blockHeight});
		
		if(wh < winHeight) limitHeight = ("-" + 0).toInt();
		else limitHeight = ("-" + (wh - winHeight)).toInt();
		
		limitWidth = ("-" + (2140 - winWidth)).toInt();
	},
	dragFunc: function() {
		var dragPosInit, dragPosInit2, delta = 0;
		$('content').set('morph', { duration: 360, wait: true });
			
		contentDrag = new Drag.Move('content', {
		    droppables: '#block',
			onDrop: function() {
				$('content').setStyle('cursor', 'url("http://dsn.sh/lab4/images/common/openhand.cur"), crosshair');

				dragEnd = [$('content').offsetTop, $('content').offsetLeft];
				if(dragEnd[0] > 0) dragEnd[0] = 0;
				else if(dragEnd[0] < limitHeight) dragEnd[0] = limitHeight;
				
				if(dragEnd[1] > 0) dragEnd[1] = 0;
				else if(dragEnd[1] < limitWidth) dragEnd[1] = limitWidth;

				$('content').morph({
					'top': [$('content').offsetTop, dragEnd[0]],
					'left': [$('content').offsetLeft, dragEnd[1]]
				});
			},
			onEnter: function() {
				$('content').setStyle('cursor', 'url("http://dsn.sh/lab4/images/common/closedhand.cur"), crosshair');
			},
			container: 'block'
		});

		$$('.wrapper a').addEvent('mousedown', function() {
			dragPosInit = this.getPosition();
		});
		$$('.wrapper a').addEvent('mouseup', function() {			
			if(this.get('rel')) var stockHash = this.get('rel');
			else var stockHash = this.get('href');
			dragPosInit2 = this.getPosition();
			deltaX = dragPosInit2.x - dragPosInit.x;
			deltaY = dragPosInit2.y - dragPosInit.y;
			delta = Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));
			if(delta <= 30) {
				if(stockHash.search(/http/i) != -1) {
					window.open(stockHash, "_blank");
				} else {
					dsn.vspam('contact_with','thedesignium.com');
				}
			}
		});
		//$$('.wrapper').addEvent('mouseout', function() {
			//if(Browser.Engine.trident) { contentDrag.detach(); contentDrag.detach(); }
		//});
	},
	loadedFunc: function() {
		$$('.menu-link').setStyle('visibility', 'visible');
		$$('.menuBorder').setStyle('visibility', 'visible');
		$('loadState').set('html', 'All Completed!');
		setTimeout(function(){
			var dsnShift = dsnHash.split("#");
			if(dsnShift[1]) dsn.setFunc(1);
			else dsn.setFunc(0);
		}, 500);
		dsnFocus = [
			['/archive/', 'http://www.thedesignium.com/', false],
			['/showcase/', 'http://www.thedesignium.com/category/showcase', false],
			['/column/', 'http://www.thedesignium.com/category/column', false],
			['/blog/', 'http://www.thedesignium.com/category/blog', false],
			['/web/', 'http://www.thedesignium.com/category/web', false],
			['/other/', 'http://www.thedesignium.com/category/other', false],
			['/services/', 'http://www.thedesignium.com/category/services', false],
			['/development/', 'http://www.thedesignium.com/category/development', false],
			['/marketing/', 'http://www.thedesignium.com/category/marketing', false],
			['/concept/', 'http://www.thedesignium.com/category/concept', false],
			['/news/', 'http://www.thedesignium.com/category/news', false],
			['/work/', 'http://www.thedesignium.com/category/work', false],
			['/private/', 'http://www.thedesignium.com/category/private', false],
			['/member/', 'http://www.thedesignium.com/category/member', false],
			['/member/', 'http://www.thedesignium.com/category/about', false],
			['/tag/socolab', 'http://www.thedesignium.com/tag/socolab', false]
		];
	},
	setFunc: function(call) {
		var categories = $$(".category");
		blocks = [
			$$("#front .block"),
			$$("#archive .block"),
			$$("#web .block"),
			$$("#other .block"),
			$$("#services .block"),
			$$("#development .block"),
			$$("#marketing .block"),
			$$("#concept .block"),
			$$("#news .block"),
			$$("#work .block"),
			$$("#private .block"),
			$$("#member .block"),
			$$("#about .block"),
			$$("#tag .block")
		];
		obj = [ {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {} ];
		objClose = [ {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {} ];
		blockNum = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];
		blockPos = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];
		state = 0;
		stateCat = 'archive';
		grp = false;

		eSlide = [
			new Fx.Elements(blocks[0], { duration: 600, wait: false }),		
			new Fx.Elements(blocks[1], { duration: 600, wait: false }),
			new Fx.Elements(blocks[2], { duration: 600, wait: false }),
			new Fx.Elements(blocks[3], { duration: 600, wait: false }),
			new Fx.Elements(blocks[4], { duration: 600, wait: false }),
			new Fx.Elements(blocks[5], { duration: 600, wait: false }),
			new Fx.Elements(blocks[6], { duration: 600, wait: false }),
			new Fx.Elements(blocks[7], { duration: 600, wait: false }),
			new Fx.Elements(blocks[8], { duration: 600, wait: false }),
			new Fx.Elements(blocks[9], { duration: 600, wait: false }),
			new Fx.Elements(blocks[10], { duration: 600, wait: false }),
			new Fx.Elements(blocks[11], { duration: 600, wait: false }),
			new Fx.Elements(blocks[12], { duration: 600, wait: false }),
			new Fx.Elements(blocks[13], { duration: 600, wait: false })
		];

		for(j = 0; j < objClose.length; j++) {
			blocks[j].each(function(block, i) {
				objClose[j][i] = { 'margin': '0px 0px 0px 1px', 'opacity': 0 };
				blockNum[j]++;
			});
			if(j != 1)  eSlide[j].start(objClose[j]);
			//ブロックスコープ！（bind） thank you for narucissus
			with ({j:j}){
				if(j >= 2) {
					blocks[j].each(function(block, i) {
						block.addEvent('click',function(){
							if(grp != false) {
								var count = 0;
								blocks[j].each(function(block, z) {
									if(block.get('rel').contains(grp, ' ')) {
										if(i == z) {
											if(blockPos[j] == count) blockPos[j] = count+1;
											else blockPos[j] = count;
										}
										count++;
									}
								});
							} else {
								if(blockPos[j] == i) blockPos[j]++;
								else blockPos[j] = i;
							}
							
							eSlider[j].set(blockPos[j]);
							$$('.knob').set('html',blockNum[j] - blockPos[j]);
							_gaq.push(['_trackEvent', 'Block', 'Click', stateCat]);
						});
					});
				}
			}
		}

		eSlider = [
			false, false,
			new Slider('area2', 'knob2', { onChange: function(pos){ blockPos[2] = pos; dsn.blockFunc(2,blockPos[2],0);
						$('knob2').set('html',blockNum[2] - blockPos[2]); }, steps: blockNum[2]}),
			new Slider('area3', 'knob3', { onChange: function(pos){ blockPos[3] = pos; dsn.blockFunc(3,blockPos[3],0);
						$('knob3').set('html',blockNum[3] - blockPos[3]); }, steps: blockNum[3]}),
			new Slider('area4', 'knob4', { onChange: function(pos){ blockPos[4] = pos; dsn.blockFunc(4,blockPos[4],0);
						$('knob4').set('html',blockNum[4] - blockPos[4]); }, steps: blockNum[4]}),
			new Slider('area5', 'knob5', { onChange: function(pos){ blockPos[5] = pos; dsn.blockFunc(5,blockPos[5],0);
						$('knob5').set('html',blockNum[5] - blockPos[5]); }, steps: blockNum[5]}),
			new Slider('area6', 'knob6', { onChange: function(pos){ blockPos[6] = pos; dsn.blockFunc(6,blockPos[6],0);
						$('knob6').set('html',blockNum[6] - blockPos[6]); }, steps: blockNum[6]}),
			new Slider('area7', 'knob7', { onChange: function(pos){ blockPos[7] = pos; dsn.blockFunc(7,blockPos[7],0);
						$('knob7').set('html',blockNum[7] - blockPos[7]); }, steps: blockNum[7]}),
			new Slider('area8', 'knob8', { onChange: function(pos){ blockPos[8] = pos; dsn.blockFunc(8,blockPos[8],0);
						$('knob8').set('html',blockNum[8] - blockPos[8]); }, steps: blockNum[8]}),
			new Slider('area9', 'knob9', { onChange: function(pos){ blockPos[9] = pos; dsn.blockFunc(9,blockPos[9],0);
						$('knob9').set('html',blockNum[9] - blockPos[9]); }, steps: blockNum[9]}),
			new Slider('area10', 'knob10', { onChange: function(pos){ blockPos[10] = pos; dsn.blockFunc(10,blockPos[10],0);
						$('knob10').set('html',blockNum[10] - blockPos[10]); }, steps: blockNum[10]}),
			new Slider('area11', 'knob11', { onChange: function(pos){ blockPos[11] = pos; dsn.blockFunc(11,blockPos[11],0);
						$('knob11').set('html',blockNum[11] - blockPos[11]); }, steps: blockNum[11]}),
			new Slider('area12', 'knob12', { onChange: function(pos){ blockPos[12] = pos; dsn.blockFunc(12,blockPos[12],0);
						$('knob12').set('html',blockNum[12] - blockPos[12]); }, steps: blockNum[12]}),
			new Slider('area13', 'knob13', { onChange: function(pos){ blockPos[13] = pos; dsn.blockFunc(13,blockPos[13],0);
						$('knob13').set('html',blockNum[13] - blockPos[13]); }, steps: blockNum[13]})
		];

		//wheel event
		if(!Browser.Engine.trident) var wheelTarget = window;
		else var wheelTarget = $('niceBody');
		
		wheelTarget.addEvent('mousewheel', function(elmnt) {
			var WA = wheelAction;
			if(WA == 1) {
				if(state >= 2) {
					elmnt = new Event(elmnt).stop(); //ホイールの重複動作制御
					if(waitAction != 1) {
						waitAction = 1;
						setTimeout(function(){ waitAction = 0; }, 350);
				
						//ホイール上回転or下回転
						if(elmnt.wheel >= 0) { blockPos[state]--; }
						else { blockPos[state]++; }
				
						if(blockPos[state] < 0) blockPos[state] = 0;
						else if(grp != false && blockPos[state] > grpCount) blockPos[state] = grpCount;
						else if(blockPos[state] > blockNum[state]) blockPos[state] = blockNum[state];
						eSlider[state].set(blockPos[state]);
						$$('.knob').set('html',blockNum[state] - blockPos[state]);
						_gaq.push(['_trackEvent', 'Blocks', 'Wheel', stateCat]);
					}
				} else if(state == 0) {
					elmnt = new Event(elmnt).stop(); //ホイールの重複動作制御
					if(waitAction != 1) {
						waitAction = 1;
						setTimeout(function(){ waitAction = 0; }, 600);
				
						//ホイール上回転or下回転
						if(elmnt.wheel >= 0) { blockPos[state]++; }
						else { blockPos[state]--; }
					
						if(blockPos[state] < 0) blockPos[state] = 2;
						else if(blockPos[state] > 2) blockPos[state] = 0;
					
						switch (stateCat) {
							case 'showcase':
								dsn.archiveFunc(3,5,0,3,stateCat);
							break;
							case 'column':
								dsn.archiveFunc(6,8,0,3,stateCat);
							break;
							case 'blog':
								dsn.archiveFunc(9,11,0,3,stateCat);
							break;
							case 'archive':
								dsn.archiveFunc(0,2,0,3,stateCat);
							break;
							default:
								blockPos[state] = 0;
						}
						_gaq.push(['_trackEvent', 'Category', 'Wheel', stateCat]);
					}
				}
			}
		});

		//group event
		for(g = 2; g < 9; g++) {
			//ブロックスコープ！（bind） thank you for narucissus
			with ({g:g}){
				$$('.grp'+g).addEvent('click', function(){
					if(this.get('id')) grp = this.get('id');
					else grp = false;
					$$('.grp'+g).setStyles({'background-position': 'left top', 'color': '#FFFFFF'});
					this.setStyles({'background-position': 'left -36px', 'color': '#B02100'});
					if( g != 8 ) {
						$$('.knob').set('html',blockNum[g]);
						eSlider[g].set(0);
						dsn.blockFunc(g,0,0);
					}
					_gaq.push(['_trackEvent', 'Group', 'Click', grp]);
				});
			}
		}
		
		this.clickFunc();

		if(call) this.transitionFunc(1);
		else dsn.archiveFunc(0,2,0,0,'archive');
		
		if(Cookie.read("dsn")) {
			visited = Cookie.read("dsn").split(",");
			for(c = 0; c < visited.length; c++) {
				var classVisited = visited[c];
				$$(classVisited).setStyles({ 'color': '#696969', 'background-position': 'left -80px' });
			}
		}
	},
	clickFunc: function() {		
		$$('.open').addEvent('click',function(){
			_gaq.push(['_trackEvent', 'Open', 'Click', 'open btn']);
		});
		$('memberLink').addEvent('click', function(){
			if(state == 11) dsn.blockFunc(11,0,0);
		});
		$('aboutLink').addEvent('click', function(){
			if(state == 12) dsn.blockFunc(12,0,0);
		});
		$('showcaseLink').addEvent('click', function(){
			if(state != 0) rtn = 1;
		});
		$('columnLink').addEvent('click', function(){
			if(state != 0) rtn = 1;
		});
		$('blogLink').addEvent('click', function(){
			if(state != 0) rtn = 1;
		});
		$('contactLink').addEvent('click', function(){
			if(dsnHash == '#/contact/' ) dsn.coverFunc(1);
		});
		$('logo').addEvent('click', function(){
			if(dsnHash == '#/ads/' ) dsn.coverFunc(1); 
		});
		$$('a').addEvent('mouseup', function() {
			var stockHref = this.get('href');
			var dsnShiftCheck = dsnHash.split("#");
			//this.set('href', 'javascript:void(0)');
			
			if(!this.get('target')) dsn.history(stockHref);
			else _gaq.push(['_trackEvent', 'openSite', 'Click', stockHref]);
			
			if(dsnShiftCheck[1]) {
				if(dsnShiftCheck[1].split("/")[2])
					var dsnDetailCheck = dsnShiftCheck[1].split("/")[2];
			}
			if(stockHref == dsnHash && dsnDetailCheck) {
				dsn.coverFunc(1);
				coverScroller.toTop();
				wheelAction = 0;
			}
			//this.set('href', stockHref);
		});

		$$('.return').addEvent('click', function(){
			if(state != 0) rtn = 1;
			else rtn = 2;
		});
	},
	transitionFunc: function(call) {
		//dsnHash = 現在中のページ＃以下
		if(dsnHash) {
			var dsnShift = dsnHash.split("#");
			var dsnPWD = '/' + dsnShift[1].split("/")[1] + '/';
			var dsnDetail = dsnShift[1].split("/")[2];
			var requestUrl = 'http://www.thedesignium.com' + dsnShift[1];
			
			switch (dsnPWD) {
				case '/showcase/':
					state = 0;
					stateCat = 'showcase';
					blockPos[0] = 0;
					dsn.archiveFunc(3,5,0,rtn,dsnPWD);
					dsn.phase1Func();
					grp = false;
				break;
				case '/column/':
					state = 0;
					stateCat = 'column';
					blockPos[0] = 0;
					dsn.archiveFunc(6,8,0,rtn,dsnPWD);
					dsn.phase1Func();
					grp = false;
				break;
				case '/blog/':
					state = 0;
					stateCat = 'blog';
					blockPos[0] = 0;
					dsn.archiveFunc(9,11,0,rtn,dsnPWD);
					dsn.phase1Func();
					grp = false;
				break;
				case '/web/':
					state = 2;
					dsn.pwdFunc(dsnDetail,requestUrl,dsnShift[1],call);
					dsn.archiveFunc(3,5,3,0,dsnPWD);
				break;
				case '/other/':
					state = 3;
					dsn.pwdFunc(dsnDetail,requestUrl,dsnShift[1],call);
					dsn.archiveFunc(3,5,4,0,dsnPWD);
				break;
				case '/services/':
					state = 4;
					dsn.pwdFunc(dsnDetail,requestUrl,dsnShift[1],call);
					dsn.archiveFunc(3,5,5,0,dsnPWD);
				break;
				case '/development/':
					state = 5;
					dsn.pwdFunc(dsnDetail,requestUrl,dsnShift[1],call);
					dsn.archiveFunc(6,9,6,0,dsnPWD);
				break;
				case '/marketing/':
					state = 6;
					dsn.pwdFunc(dsnDetail,requestUrl,dsnShift[1],call);
					dsn.archiveFunc(6,9,7,0,dsnPWD);
				break;
				case '/concept/':
					state = 7;
					dsn.pwdFunc(dsnDetail,requestUrl,dsnShift[1],call);
					dsn.archiveFunc(6,9,8,0,dsnPWD);
				break;
				case '/news/':
					state = 8;
					grp = false;
					dsn.pwdFunc(dsnDetail,requestUrl,dsnShift[1],call);
					dsn.archiveFunc(9,11,9,0,dsnPWD);
				break;
				case '/work/':
					state = 9;
					grp = false;
					dsn.pwdFunc(dsnDetail,requestUrl,dsnShift[1],call);
					dsn.archiveFunc(9,11,10,0,dsnPWD);
				break;
				case '/private/':
					state = 10;
					grp = false;
					dsn.pwdFunc(dsnDetail,requestUrl,dsnShift[1],call);
					dsn.archiveFunc(9,11,11,0,dsnPWD);
				break;
				case '/member/':
					state = 11;
					grp = false;
					dsn.archiveFunc(0,0,12,0,dsnPWD);
					dsn.phase1Func();
					dsn.blockFunc(11,0,0);
					eSlider[state].set(0);
					$$('.knob').set('html',blockNum[state]);
				break;
				case '/about/':
					state = 12;
					grp = false;
					dsn.archiveFunc(0,0,13,0,dsnPWD);
					dsn.phase1Func();
					dsn.blockFunc(12,0,0);
					eSlider[state].set(0);
					$$('.knob').set('html',blockNum[state]);
				break;
				case '/tag/':
					state = 13;
					grp = dsnDetail;
					dsn.archiveFunc(0,0,14,0,dsnPWD);
					dsn.blockFunc(0,0,1);
					dsn.coverFunc(0);
					if(dsnDetail != 'socolab') $$('.grp8').setStyles({'background-position': 'left top', 'color': '#FFFFFF'});
					else $$('.grp8').setStyles({'background-position': 'left -36px', 'color': '#B02100'});
					$$(".refine").setStyle('display', 'none');
					$("refine7").setStyle('display', 'block');
					dsn.blockFunc(13,0,0);
					eSlider[state].set(0);
					$$('.knob').set('html',blockNum[state]);
					$('tagName').set('html', dsnDetail);
				break;
				default:
					state = 0;
					grp = false;
					stateCat = 'archive';
					if(dsnPWD == '/ads/' || dsnPWD == '/contact/') dsn.requestChecker(requestUrl,dsnShift[1]);
					dsn.archiveFunc(0,2,0,rtn,dsnPWD);
					dsn.phase1Func();
			}

			$$('.menu-link').each(function(menulink, i) {
				if(menulink.hasClass('menu-now')) menulink.removeClass('menu-now');
			});
			if(dsnPWD != '/tag/' && dsnPWD != '/ads/' && dsnPWD != '/contact/' && dsnPWD != '/archive/') {
				if(dsnPWD == '/member/') {
					$('memberLink').addClass('menu-now');
				} else if(dsnPWD == '/showcase/' || dsnPWD == '/web/' || dsnPWD == '/other/' || dsnPWD == '/services/') {
					$('showcaseLink').addClass('menu-now');
				} else if(dsnPWD == '/column/' || dsnPWD == '/development/' || dsnPWD == '/marketing/' || dsnPWD == '/concept/') {
					$('columnLink').addClass('menu-now');
				} else if(dsnPWD == '/blog/' || dsnPWD == '/news/' || dsnPWD == '/work/' || dsnPWD == '/private/') {
					$('blogLink').addClass('menu-now');
				} else if(dsnPWD == '/about/') {
					$('aboutLink').addClass('menu-now');
				}
			}
			blockCall = 0;
		}
	},
	blockFunc: function(category,start,setClose) {
		var grpNum = 0;
		grpCount = 0;
		if(setClose == 1) {
			for(j = 2; j < objClose.length; j++) eSlide[j].start(objClose[j]);
		} else {
			if(grp) {
				blocks[category].each(function(block, i) {
					if(block.get('rel').contains(grp, ' ')) grpCount++;
					block.setStyle('z-index', 1500-i);
				});
				blocks[category].each(function(block, i) {
					if(!block.get('rel').contains(grp, ' ')) {
						var blockPos = '0px 0px 0px 1px';
						obj[category][i] = {'margin': blockPos, 'opacity': 0 };
						grpNum++;
					} else {
						if(i < start + grpNum) {
							var blockPos = '0px 0px 0px -' + (253*(start-i+grpNum)-3) + 'px';
							obj[category][i] = {'margin': blockPos, 'opacity': 1 };
						} else {
							var blockPos = '0px 0px 0px ' + (253*(i-start-grpNum) + 324) + 'px';
							obj[category][i] = {'margin': blockPos, 'opacity': 1 };
						}
					}
				});
				eSlide[category].start(obj[category]).chain(function(){
					if(Browser.Engine.trident) {
						blocks[category].each(function(block, i) {
							block.style.removeAttribute('filter');
						});
					}
				});
			} else {
				if(state == 12) var ws = 506;
				else var ws = 253;
				blocks[category].each(function(block, i) {
					if(i < start) {
						var blockPos = '0px 0px 0px -' + (ws*(start-i)-3) + 'px';
						obj[category][i] = {'margin': blockPos, 'opacity': 1 };
					} else {
						var blockPos = '0px 0px 0px ' + (ws*(i-start) + 324) + 'px';
						obj[category][i] = {'margin': blockPos, 'opacity': 1 };
					}
					block.setStyle('z-index', 1500-i);
				});
				eSlide[category].start(obj[category]).chain(function(){
					if(Browser.Engine.trident) {
						blocks[category].each(function(block, i) {
							block.style.removeAttribute('filter');
						});
					}
				});
			}
		}
	},
	archiveFunc: function(from,to,target,r,cat) {
		if(target != 0) {
			blocks[1].each(function(block, i) {
				if(i == target) {
					if(motion == 0) block.setStyles({'display':'block','margin':'0px 0px 0px 1px'});
					else obj[1][i] = {'margin': '0px 0px 0px 1px', 'opacity': 1 };
					block.setStyle('z-index', 3001);
				} else {
					if(motion == 0) block.setStyle('display','none');
					else obj[1][i] = {'margin': '0px 0px 0px 1px', 'opacity': 0 };
					block.setStyle('z-index', 3000-i);
				}
			});
			if(from == 3) $$('.return').set({'href':'#/showcase/', 'rel':'showcase'});
			else if(from == 6) $$('.return').set({'href':'#/column/', 'rel':'column'});
			else if(from == 9) $$('.return').set({'href':'#/blog/', 'rel':'blog'});
			else $$('.return').set({'href':'#/archive/', 'rel':'archive'});

			$$(".category").setStyle('display', 'none');
			$$('.phase1').setStyle('color', '#0E0E0E');
			$$('.phase2').setStyle('color', '#B02100');
			if(motion != 0) {
				eSlide[1].start(obj[1]).chain(function(){
					$$(".knob").setStyle('visibility', 'visible');
					if(Browser.Engine.trident) {
						blocks[1].each(function(block, i) {
							block.style.removeAttribute('filter');
						});
					}
				});
			} else {
				$$(".knob").setStyle('visibility', 'visible');
				blocks[1].each(function(block, i) {
					block.style.removeAttribute('filter');
				});
			}
		} else {
			blocks[1].each(function(block, i) {
				if(i >= from && i <= to) {
					var scrollPos = 321*((i-from+blockPos[state])%3)+1;
					if(from == 0 || from == 3 || from == 6 || from == 9) {
						if(r == 1) var catPos = ['0px 0px 0px ' + scrollPos + 'px'];
						else if(r == 3) var catPos = ['0px 0px 0px ' + scrollPos + 'px'];
						else var catPos = ['0px 0px 0px ' + scrollPos + 'px', '0px 0px 0px ' + scrollPos + 'px'];
					} else {
						var catPos = [];
					}

					if(motion == 0) block.setStyles({'display':'block','margin': catPos});
					else obj[1][i] = {'margin': catPos, 'opacity': [.9,1] };
					
					if(r == 3) block.setStyle('z-index', 3000-(i+blockPos[state])%3);
					else if(r != 1) block.setStyle('z-index', 3000-i);
				} else {
					if(motion == 0) block.setStyle('display','none');
					else obj[1][i] = {'margin': ['0px 0px 0px ' + scrollPos + 'px','0px 0px 0px ' + scrollPos + 'px'], 'opacity': 0 };
					block.setStyle('z-index', 3000+i);
				}
			});
			$$(".category").setStyle('display', 'block');
			$$('.phase1').setStyle('color', '#B02100');
			$$('.phase2').setStyle('color', '#0E0E0E');
			if(motion != 0) {
				eSlide[1].start(obj[1]).chain(function(){
					if(r==1) {
						$$('.return').set({'href':'#/archive/', 'rel':'archive'});
						rtn = 0;
					}
					if(Browser.Engine.trident) {
						blocks[1].each(function(block, i) {
							block.style.removeAttribute('filter');
						});
					}
				});
			} else {
				if(r == 1 || r == 2) {
					$$('.return').set({'href':'#/archive/', 'rel':'archive'});
					rtn = 0;
				}
				blocks[1].each(function(block, i) {
					block.style.removeAttribute('filter');
				});
			}
		}
	},
	phase1Func: function() {
		dsn.blockFunc(0,0,1);
		dsn.coverFunc(0);
		$$(".refine").setStyle('display', 'none');
		$("refine0").setStyle('display', 'block');
		$$(".knob").setStyle('visibility', 'hidden');
		$$('.grp').setStyles({'background-position': 'left top', 'color': '#FFFFFF'});
		$$('.grpAll').setStyles({'background-position': 'left -36px', 'color': '#B02100'});
	},
	coverFunc: function(call) {
		if(call) {
			coverFx.start({'opacity':[1]}).chain(function(){
				if(Browser.Engine.trident) $('cover').style.removeAttribute('filter');
			});
			dsn.resizeFunc();
		} else {
			coverFx.start({'opacity':[0]});
			wheelAction = 1;
		}
	},
	pwdFunc: function(dsnDetail,requestUrl,Shift,call) {
		if(dsnDetail) {
			var nowBlockID = 'post'+ dsnDetail;
			if(grp) {
				var grpNum = 0;
				blocks[state].each(function(block, i) {
					if(!block.get('rel').contains(grp, ' ')) {
						grpNum++;
					} else 	if(block.get('id') == nowBlockID) {
						//console.log('%s, %s, %s, %s', grp, i, grpCount, grpNum);
						blockPos[state] = i - grpNum;
						dsn.blockFunc(0,0,1);
						dsn.blockFunc(state,blockPos[state],0);
						eSlider[state].set(blockPos[state]);
					}
				});
			} else {
				blocks[state].each(function(block, i) {
					if(block.get('id') == nowBlockID) {
						blockPos[state] = i;
						dsn.blockFunc(0,0,1);
						dsn.blockFunc(state,blockPos[state],0);
						eSlider[state].set(i);
					}
				});
			}
			dsn.requestChecker(requestUrl,Shift);
			$$('.knob').set('html',blockPos[state]);
		} else {
			dsn.blockFunc(0,0,1);
			dsn.blockFunc(state,0,0);
			dsn.coverFunc(0);
			eSlider[state].set(0);
		}
		if(state > 1 && state < 8) {
			$$(".refine").setStyle('display', 'none');
			var refineState = 'refine' + (state - 1);
			$(refineState).setStyle('display', 'block');
		}
		$$('.knob').set('html',blockNum[state] - blockPos[state]);
	},
	requestChecker: function(requestUrl,dsnShift) {
		var requestCheck = false;
		for(i=0; i < dsnFocus.length; i++) {
			if(dsnFocus[i][0] == dsnShift) {
				requestCheck = true;					
				if(i > 13) {
					grp = false;
					$('frame').set('html', dsnFocus[i][2]);
					dsn.closeFunc();
					dsn.coverFunc(1);
					coverScroller.toTop();
				}
				requestState = 0;
				wheelAction = 0;
				break;
			}
		}
		if(!requestCheck) {
			grp = false;
			dsn.request(dsnShift, requestUrl, dsnFocus.length);
			wheelAction = 0;
		}
	},
	request: function(dsnShift, requestUrl, targetArray) {
		if(!requestState) {
			new Request.HTML({
				url: requestUrl, method: 'get', update: 'frame', evalScripts: true,
				onRequest: function() {
					requestState = 1;
					coverFx.start({'opacity':[1]});
					var stringLoading = 'loading "' + requestUrl + '"';
					$('frame').set('html', stringLoading);
					_gaq.push(['_trackEvent', 'Request', 'Request', requestUrl]);
				},
				onFailure: function() {
					$('frame').set('html', 'request failure<br /><a href="javascript:void(0)" class="close">close</a> or <a href="' + requestUrl + '">reload again</a>');
					dsn.closeFunc();
					requestState = 0;
				},
				onComplete: function() {
					var checkPostVisited = '.vstID' + dsnHash.split("/")[2];
					var allover = 0;
					for(c = 0; c < visited.length; c++) {
						var classVisited = visited[c];
						$$(classVisited).setStyles({ 'color': '#696969', 'background-position': 'left -80px' });
						if(checkPostVisited == visited[c]) allover = 1;
					}
					if(allover != 1) {
						visited.push([checkPostVisited]);
						Cookie.write("dsn", visited, { duration: 10, path: "/", domain: "www.thedesignium.com", secure: false });
						$$(checkPostVisited).setStyles({ 'color': '#696969', 'background-position': 'left -80px' });
					}

					requestState = 0;
					dsn.coverFunc(1);
					dsn.closeFunc();
					dsnFocus[targetArray] = [dsnShift, requestUrl, $('frame').get('html')];
					dsn.resizeFunc();
				},
				onSuccess: function() {
				}
			}).send();
		}
	},
	resizeFunc: function() {
		var winHeight = window.getHeight();
		var winWidth = window.getWidth();
		var setPos = [ (winHeight - 542)/2, (winWidth - 982)/2];
		
		if(setPos[0] < 0) setPos[0] = 0;
		if(setPos[1] < 0) setPos[1] = 0;
		
		$('cover').setStyles({'height':winHeight,'width':winWidth});
		$('closeFloor').setStyles({'height':winHeight,'width':winWidth-17});
		if(Browser.Engine.trident)  $('niceBody').setStyles({'height':winHeight,'width':winWidth});
		contentFx.start({'top':[setPos[0]],'left':[setPos[1]]});		
	},
	closeFunc: function(){
		$$('.close').addEvent('click', function(){
			requestState = 0;
			dsn.coverFunc(0);
		});
		//「ページトップに戻る」アクション
		$$('.pagetop').addEvent('click', function() {
			coverScroller.toTop();		
		});
		$$('.change').addEvent('click',function() {
			grp = false;
			$$('.grp').setStyles({'background-position': 'left top', 'color': '#FFFFFF'});
			$$('.grpAll').setStyles({'background-position': 'left -36px', 'color': '#B02100'});
		});
	},
	listen: function() {
		if (dsnHash != location.hash) {
			dsnHash = location.hash;
		}
	},
	historyFunc: function() {
		unFocus.History.addEventListener('historyChange', dsn.historyListener);
	},
	historyListener: function() {
		dsnHash = location.hash;
		document.title = 'TheDesignium - ' + dsnHash;
		dsn.transitionFunc(0);
		var googleHash = unFocus.History.getCurrent();
		_gaq.push(['_trackPageview', googleHash]);
		_gaq.push(['_trackEvent', 'Listener', 'Click', googleHash]);
	},
	history: function(historyHash) {
		var googleHash = unFocus.History.getCurrent();
		_gaq.push(['_trackEvent', 'Transition', 'Click', googleHash]);
	},
	vspam: function(address,domain) {
		var strEmail = 'mailto:' + address + '@' + domain;
		location.href = strEmail;		
	}
}

var dsnHash = location.hash;
var wheelAction = 1, waitAction = 0, requestState = 0, dsnFocus = new Array(), rtn = 0, initOK = false, motion = 1, visited = new Array();

window.addEvent('domready', function(){ dsn.dominit() });
//window.addEvent('load', function(){ dsninit() });　描画にずれ？
window.onresize = function() {
	if(initOK == 3) dsn.resizeIE6();
	else if(initOK != 0) dsn.resizeFunc();
};
window.onload = function() {
	dsn.init();
};