﻿var CardPositions = new Array;
CardPositions[-4] = new Props(-0.702,-0.377,25);
CardPositions[-3] = new Props(-0.667,-0.320,50);
CardPositions[-2] = new Props(-0.615,-0.246,100);
CardPositions[-1] = new Props(-0.513,-0.123,100);
CardPositions[0] = new Props(0,0,100);
CardPositions[1] = new Props(0.513,-0.123,100);
CardPositions[2] = new Props(0.615,-0.246,100);
CardPositions[3] = new Props(0.667,-0.320,50);
CardPositions[4] = new Props(0.702,-0.377,25);
function fly(){
	p = new Array;
	p['x0'] = 100;
	p['x1'] = 120;
	p['y0'] = 100;
	p['y1'] = 80;
	p['time'] = 200;
	p['steps'] = 5;
	p['objID'] = 'testDiv';
	transform(p);
}
function Props(x, y, op){
	this.x = x;
	this.y = y;
	this.op = op;
}
function cardmenu_flipTo(idx){
	menu = document.getElementById('card_menu');
	if(!menu) return;
	currentcard = menu.CurrentCard;
	cardmenu_flip(currentcard - idx);
}
function cardmenu_flip(dir){
	if(dir == 0) return;
	time = Math.round((1+Math.sqrt(Math.abs(dir)-1))*200);
	menu = document.getElementById('card_menu');
	if(!menu) return;
	currentcard = menu.CurrentCard;
	menu.CurrentCard= currentcard-dir;
	
	if(typeof(cardmenu_flipStart)=='function') cardmenu_flipStart(menu);
	
	cards = menu.getElementsByTagName('div');
	cCount = cards.length;
	first = currentcard-dir - 4;
	last = currentcard-dir + 4;

	for(i=0; i<cards.length;i++){
		card = cards[i];
		if((i < first) || (i > last)){
			p = new transparams(card.id,'!',0,'!',0,'!','!','!','!','!','!','!', 1,time);
			transform(p);
		}else{
			p = i+dir - currentcard;
			nX = Math.round(CardPositions[p].x*card.offsetWidth);
			nY = Math.round(CardPositions[p].y*card.offsetHeight);
			nOp = CardPositions[p].op;
			zIndex = 10-Math.abs(p);
			card.style.zIndex = zIndex;
			p = new transparams(card.id,'!',nX,'!',nY,'!','!','!','!','!','!','!', nOp,time);
			transform(p);
		}
	}
}
function cardmenu_init(){
	var menu = document.getElementById('card_menu');
	if(!menu) return;
	if(menu.initialized) return;
//	menu.State = 1;
//	menu.FlippingCards = 0;
	menu.CurrentCard = menu.getAttribute('currentCard')*1; 
	menu.FlippingCards = 0;
	var currentcard = menu.CurrentCard;
	var cards = menu.getElementsByTagName('div');
	for(var i=0; i<cards.length;i++){
		card = cards[i];
		
		card.cardIndex = i;
		card.id = 'card'+1*(i+1);
		card.onclick = function(){cardmenu_flipTo(this.cardIndex);};
		if(typeof(cardmenu_DblClick)=='function'){
			card.ondblclick = function(){cardmenu_DblClick(this);};
		}
		card.OnTransformStart = function(sender){$('card_menu').FlippingCards++;};
		card.OnTransformEnd = function(sender){
			if(sender.cardIndex == $('card_menu').CurrentCard){
				sender.style.cursor = "default";
				sender.title = "Щракнете два пъти за да изберете";
				sender.alt = "Щракнете два пъти за да изберете";
			} else {
				sender.style.cursor = "pointer";
				sender.title = "Щракнете веднъж за да прелистите";
				sender.alt = "Щракнете веднъж за да прелистите";
			}
			
			$('card_menu').FlippingCards--;
			if($('card_menu').FlippingCards==0){
				if(typeof(cardmenu_afterFlip)=='function'){
					cardmenu_afterFlip(menu);
				}
			}
		}
		card.style.left = "0px";
		card.style.top =  "0px";
	}
	menu.initialized = true;
}

function cardmenu_show(){
	var cid1='___';
	var cid2='___';
	var menu = $('card_menu');
	if(!menu) return;
	
	menu.State = 1;
	menu.FlippingCards = 0;
	
	if(typeof(cardmenu_flipStart)=='function') cardmenu_flipStart(menu);
	
	var currentcard = menu.CurrentCard;
	var cards = menu.getElementsByTagName('div');
	var nOp1, nX1, nY1, nOp2, nX2, nY2, to, card;
	
	for(var i = 4; i>=0; i--){
		zIndex = 10-Math.abs(i);
		cid1 = '___';
		cid2 = '___';
			
		if(currentcard+i < cards.length){
			card = cards[currentcard+i];
			card.style.display = "block";
			card.style.opacity = 0;
			card.style.filter = "alpha(opacity=0)";
			to = (4-i+1)*50;
			if(i==0) to = 400;
			if(card){
				card.style.zIndex = zIndex;
				cid1 = card.id;
			}else cid1 = '___';
			nOp1 = CardPositions[i].op;
			nX1 =  Math.round(CardPositions[i].x*card.offsetWidth);
			nY1 =  Math.round(CardPositions[i].y*card.offsetHeight);
		}
		if(i>0 && currentcard-i>=0){
			card = cards[currentcard-i];
			card.style.display = "block";
			card.style.opacity = 0;
			card.style.filter = "alpha(opacity=0)";
			if(card){
				card.style.zIndex = zIndex;
				cid2 = card.id;
			} else cid2='___';
			nOp2 = CardPositions[-i].op;
			nX2 =  Math.round(CardPositions[-i].x*card.offsetWidth);
			nY2 =  Math.round(CardPositions[-i].y*card.offsetHeight);
			setTimeout("transform(new transparams('"+cid2+"',0,"+nX2+",0,"+nY2+",'!','!','!','!','!','!','!',"+nOp2+",300))",to);
		}
		setTimeout("transform(new transparams('"+cid1+"',0,"+nX1+",0,"+nY1+",'!','!','!','!','!','!','!',"+nOp1+",300))",to);
	}
}
function cardmenu_close(){
	var menu = document.getElementById('card_menu');
	if(!menu) return;
	var currentcard = menu.CurrentCard;
	var cards = menu.getElementsByTagName('div');
	var cid1 = '___';
	var cid2 = '___';
	var to;
	for(var i = 0; i<=4; i++){
		to = (i+1)*50;
		if(currentcard+i<cards.length) cid1 = cards[currentcard+i].id;
		if(i>0 && currentcard-i>=0){
			cid2 = cards[currentcard-i].id;
			setTimeout("transform(new transparams('"+cid2+"','!',0,'!',0,'!','!','!','!','!','!','!',0,300))",to);
		}
		setTimeout("transform(new transparams('"+cid1+"','!',0,'!',0,'!','!','!','!','!','!','!',0,300))",to);
	}
	menu.shown = false;
}
function cardmenu_dragDown(event){
	menu = document.getElementById('card_menu');
	if(!menu) return;
	menu.dragStartX = event.clientX;
	menu.dragStartY = event.clientY;
	menu.dragging = true;
}
function cardmenu_dragUp(event){
	menu = document.getElementById('card_menu');
	if(!menu) return;
	menu.dragging = false;
}
function cardmenu_dragMove(event){
	menu = document.getElementById('card_menu');
	if(!menu) return;
	
	dx = event.clientX - menu.dragStartX;
	menu.dragStartX = event.clientX;
	menu.dragStartY = event.clientY;
	if(!menu.dragging) return;
	cards = menu.getElementsByTagName('div');
	card = cards[menu.CurrentCard];
	card.style.left = (card.offsetLeft + dx) + "px";
	dir = dx/Math.abs(dx);
	
	if(Math.abs(card.offsetLeft) > 10){
		cardmenu_flip(dir);
		menu.dragging = false;
		setTimeout("document.getElementById('card_menu').dragging = true;", 400);
	}
}
