/* ********************************************
 *  Göktaşı teması için simge döndürme scripti.
 *  atasoyweb.net anasayfası için yazıldı.
 *  Hüseyin Atasoy
 *  www.atasoyweb.net
 *  03/10/2011
 ********************************************** */

// Ayarlar --------------
var aciAdimi=5; // 360'a bölünebilen bir sayı olsa iyi olur.
var simgeSayisi=8; // 360/aciAdimi sayısını kalansız bölebilen bir sayı olsa iyi olur.
var merkezX=173; // Oluşturulacak çemberin merkezinin X koordinatı,
var merkezY=175; // Y koordinatı
var yaricap=100; // ve yarıçapı.
var simgeGenisligi=48; // Çember üzerine serpiştirilecek simgelerin her birinin genişliği
var simgeYuksekligi=48; // ve yüksekliği
var yenilemePeriyodu=40; // Milisaniye cinsinden haraket yenileme periyodu.
//-----------------------

var piBoluYuzseksen=3.1415/180;
var adimSayisi=360/aciAdimi;
var simgeBasinaAdim=adimSayisi/simgeSayisi;

var katmanlar;
var soldan;
var ustten;
var cevrim;
var suAnkiDondurme;
var simdiSuKadarDondur;
var yon;
var mesgul;

window.onload=function()
{
	katmanlar=new Array();
	for(i=0; i<simgeSayisi; i++)
		katmanlar[i]=document.getElementById('simge'+i).style;
	degerleriHazirla();
	
	var katman=document.getElementById('aciklamaK');
	katman.innerHTML='İlgili açıklamaları okumak için simgelere, sayfalara yönlendirilmek için yeşil başlıklara tıklayınız.';
	katman.style.color='#777777';
}

function degerleriHazirla()
{
	simgeGenisligi=simgeGenisligi/2;
	simgeYuksekligi=simgeYuksekligi/2;
	cevrim=0;
	suAnkiDondurme=0;
	mesgul=false;
	
	soldan=new Array();
	ustten=new Array();

	var aci;
	for(i=0,j=0; i<360; i+=aciAdimi,j++)
	{
		aci=i*piBoluYuzseksen;
		// Yarıçap, bir dik üçgenin hipotenüsü olarak düşünülürse:
		soldan[j]=merkezX+yaricap*Math.cos(aci)-simgeGenisligi;
		ustten[j]=merkezY+yaricap*Math.sin(aci)-simgeYuksekligi;
	}
	
	for(i=0; i<simgeSayisi; i++)
	{
		var indis=Math.floor(i*simgeBasinaAdim);
		katmanlar[i].left=soldan[indis]+'px';
		katmanlar[i].top=ustten[indis]+'px';
	}
}

// Gönderilen değeri verilen [altsinir,ustsinir) aralığında, alt sınırın bir
// altında üst sınır, üst sınırın bir üstünde alt sınır olacak şekilde kaydırmak için.
function halka(deger,altsinir,ustsinir)
{
	if(deger<altsinir) return ustsinir+deger;
	else if(deger>=ustsinir) return deger-ustsinir;
	else return deger;
}

function zamanla()
{
	setTimeout(function()
	{
		cevrim=cevrim+yon;
		cevrim=halka(cevrim,0,adimSayisi);

		var indis;
		for(i=0; i<simgeSayisi; i++)
		{
			indis=cevrim+i*simgeBasinaAdim;
			indis=Math.floor(halka(indis,0,adimSayisi));

			katmanlar[i].left=soldan[indis]+'px';
			katmanlar[i].top=ustten[indis]+'px';
		}
		suAnkiDondurme++;
		if(suAnkiDondurme<kacAdimDondureyim) zamanla();
		else
		{
			suAnkiDondurme=0;
			mesgul=false;
		}
	},yenilemePeriyodu);
}

var kayma=0;
function dondur(kimi)
{	
	if(mesgul || mesgul2) return;
	mesgul=true;

	var neKadar=kimi;

	neKadar-=kayma;
	neKadar=halka(neKadar,0,simgeSayisi);
	
	if(neKadar==0) { mesgul=false; return; }
	
	kayma+=neKadar;
	kayma=halka(kayma,0,simgeSayisi);
	
	// Hangi yön daha yakınsa o yönde dönsün.
	if(neKadar<simgeSayisi/2)
	{
		yon=-1; // Saat yönünün tersine
		kaydirmayiBaslat(kimi,neKadar,true); // Yukarı
	}
	else
	{
		yon=1; // Saat yönünde
		neKadar=simgeSayisi-neKadar;
		kaydirmayiBaslat(kimi,neKadar,false); // Aşağı
	}

	kacAdimDondureyim=neKadar*simgeBasinaAdim;
	zamanla();
}
