// Доступные темы оформления
var Themes = ['yellow','green','blue','violet','white']



window.onload = function()
{
	// контeйнер со стикерами
	self.stick_container = document.createElement('div')
	stick_container.id = 'stick-container' //css
	document.body.appendChild(stick_container)
	stick_container.style.zIndex = /*@cc_on '0' || @*/'auto'
	
	req = function(){}
	
	var page = document.getElementById('login-page'), page_l = page.offsetLeft - sticks.w - 30, page_t = page.offsetTop
	
	if (page_t < 0)
		page_t = 0
	
	
	
	/* «Контекстное меню» */
	self.cmenu = new ContextMenu(document.getElementById('context-stick'))

	cmenu.show = function()
	{
		if (!cmenu.currentTarget)
		{
			Drag.clear();
			return false
		}
		
		var ary = Drag.ary, i = ary.length, theme = cmenu.lastTarget.theme,
			one_theme = true, last_theme = ary[0].stick.theme, l = cmenu.show.item_list
		
		while (i--)
		{
			if (last_theme != ary[i].stick.theme)
			{
				one_theme = false
				break
			}
			
			last_theme = ary[i].stick.theme
		}
		
		if (!one_theme)
		{
			cmenu.last_theme = null
			l[cmenu.show.node_last].style.display = 'block'
			if (l[1].className != 'green')
				l[1].className = 'green'
		}
		else if (cmenu.last_theme != theme) // очень важное услови — неправильно определяет offset в ff2, safari 3.1
		{
			cmenu.last_theme = theme
			l[cmenu.show.node_last].style.display = 'block'
			// класс для верстки
			if (theme == 'yellow')
			{
				l[0].style.display = 'none'
				l[1].className = 'first green'
				l[1].style.display = 'block'
			}
			else
			{
				if (l[1].className != 'green')
					l[1].className = 'green'
				l[0].style.display = 'block'
				
				for (var i = l.length - 1; i >= 0; i--)
				{
					if (l[i].className == theme)
					{
						l[i].style.display = 'none'
						cmenu.show.node_last = i
						break
					}
				}
			}
		}
		
		ContextMenu.prototype.show.apply(this)
		return true
	}
	
	cmenu.show.item_list	= cmenu.node.getElementsByTagName('li')
	cmenu.show.node_last	= 0
	
	cmenu.changeTheme = function(theme)
	{
		if (!theme)
		{
			theme = Themes[Math.floor(Math.random() * Themes.length)]
			while(theme == cmenu.last_theme)
				theme = Themes[Math.floor(Math.random() * Themes.length)]
		}
		
		var ary = Drag.ary, i = ary.length
		
		while (i--)
		{
			ary[i].stick.changeTheme(theme, true)
		}
		
		this.hide()
		return false
	}
	
	cmenu.del_stick = function()
	{
		var i, ary = Drag.ary, save_data = [], left = cmenu.lastTarget.node.offsetLeft, top = cmenu.lastTarget.node.offsetTop
		
		if ((i = ary.length) && i != 1)
		{
			var a = new Animator(), j = i
			while (i--)
			{
				a.addSubject(new NumericalStyleSubject(ary[i].stick.node, 'left', ary[i].stick.node.offsetLeft, left))
				 .addSubject(new NumericalStyleSubject(ary[i].stick.node, 'top', ary[i].stick.node.offsetTop, top))
			}
			a.play()
			
			this.remove_ok =
			{
				remove: function()
				{
					while (j--)
					{
						ary[j].stick.remove()
					}
				}
			}
		}
		else if (!cmenu.lastTarget.text)
		{
			cmenu.lastTarget.remove()
			return this.hide()
		}
		else
		{
			this.remove_ok = cmenu.lastTarget
		}
		
		var dialog	= document.getElementById('dialog-delete')
		var as		= dialog.getElementsByTagName('a')
		
		Events.pause('Mode')
		
		Events.add('esc', 'dialog Delete', function()
		{
			if (ary.length > 1)
			{
				Mode.generate()
			}
			
			ContextMenu.forbid = false
			dialog.parentNode.style.display = 'none'
			Events.del('esc', 'dialog Delete')
			Events.del('left', 'dialog Delete')
			Events.del('right', 'dialog Delete')
			Events.play('Mode')
			return false
		}, true)
		Events.add('left', 'dialog Delete', function(){ as[0].focus() })
		Events.add('right', 'dialog Delete', function(){ as[1].focus() })
		
		dialog.style.top	= top + 'px'
		dialog.style.left	= left +'px'
		dialog.parentNode.style.display = 'block'
		
		as[0].focus()
		
		ContextMenu.forbid = true
		
		return this.hide()
	}
	
	
	
	/* «Delete sticker» */
	document.getElementById('w-dialog-delete').onclick = function(e)
	{
		var dialog = document.getElementById('dialog-delete')
		
		var a = new Animator({
			duration: 500
		})
		
		this.onclick = function(e)
		{
			var target = eTarget(e)
			if (target != this || (a.state != 1 && a.state != 0))
				return
			
			var l = cmenu.lastTarget.node.offsetLeft
			
			a.addSubject(
				function(p){
						var r = Math.round(l+20 * Math.exp(-4*p) * Math.sin(6*Math.PI*p))
						cmenu.lastTarget.node.style.left = r+'px'
						dialog.style.left = r+'px'
				})
			
			a.toggle()
		}
		
		this.unselectable = true
		
		this.onclick(e)
	}
	
	
	
	if (/*@cc_on !@*/0) //ie
	{
		window.onresize = function()
		{
			if (document.body.offsetHeight>279)
			{
				var n = document.getElementById('login-txt'), login_h = n.offsetTop, n
				while (n = n.offsetParent)
				{
					login_h += n.offsetTop
				}
				
				if (document.body.offsetHeight - 279 > login_h - stick_container.offsetTop)
					stick_container.style.height = login_h - stick_container.offsetTop + 'px'
				else
					stick_container.style.height = document.body.offsetHeight - 279 + 'px'
			}
			else
				stick_container.style.height = 1 + 'px'
			
			if (/*@cc_on @_jscript_version < 5.7 && !@*/0)
				stick_container.style.width = (document.body.offsetWidth > 252 ? document.body.offsetWidth-264 : 1) + 'px'
		}
		window.onresize()
	}
	
	
	
	var a = window.sticks.create({text:'',note_id:1,date:1206964875000,x:-10000,y:-10000,z:10,theme:'yellow'})
	a.node.style.top = page_t+1 + 'px'
	a.node.style.left = page_l+23 + 'px'
	a.percantage()
	
	a = window.sticks.create({text:'',note_id:1,date:1206964875000,x:-10000,y:-10000,z:11,theme:'yellow'})
	a.node.style.top = page_t-18 + 'px'
	a.node.style.left = page_l-7 + 'px'
	a.percantage()
	
	a = window.sticks.create({text:';-)',note_id:1,date:1206964875000,x:-10000,y:-10000,z:12,theme:'yellow'})
	a.node.style.top = page_t+31 + 'px'
	a.node.style.left = page_l+12 + 'px'
	a.percantage()
	
	
	
	document.onkeyup	= function(e)
	{
		switch ((e || event).keyCode)
		{
			case 27: Events.start('esc');	break //Esc
			case 37: Events.start('left');	break
			case 39: Events.start('right');	break
			default: break
		}
	}

	document.onkeydown = window.onkeypress = function(e)
	{
		if (e && e.type == 'keypress' && document.onkeydown) //onkeypress - not work in Safari
			return document.onkeydown = null
		
		// use ContextMenu
		switch ((e || event).keyCode)
		{
			case 38: Events.start('press_top');	break
			case 40: Events.start('press_bottom');break
			default: break
		}
	}
}

document.onmousedown = function(e)
{
	e = e || event
	var target = eTarget(e)
	
	cmenu.hide()
	
	if ((e.button === /*@cc_on 1 || e.button === @*/0) &&
		!~target.className.indexOf('mark-out') &&
		!(target.parentNode && target.parentNode.className && ~target.parentNode.className.indexOf('mark-out')) &&
		!(target.parentNode.parentNode && target.parentNode.parentNode.className && !~target.parentNode.parentNode.className.indexOf('mark-out')) // for link
	)
		Drag.clear()
	
}
