// page init
$(function() {
	initTabs();
	initPopups();
	//initInputs();
	initTooltips();
	browserDetect();
	initNavigation();
	initEditAccount();
	ieHover('input, div.details');
});

// clear inputs onfocus
function initInputs() {
	var _editClass = 'active-editing';
	var _inputs = $('input[type="text"],input[type="password"],textarea');
	_inputs.each(function(){
		var _input = $(this);
		var _val = _input.val();
		if(_val.length) {
			_input.focus(function(){
				if(_input.val() == _val) {
					_input.addClass(_editClass);
					_input.val('');
				}
			});
			_input.blur(function(){
				if(!_input.val().length) {
					_input.removeClass(_editClass);
					_input.val(_val);
				}
			});
		}
	});
}

// fade dropdown function
function initNavigation() {
	var _stayTime = 250;
	var _fadeSpeed = ($.browser.msie ? 0 : 250);
	var _hoverClass = 'hover';
	var _items = $('ul.main-nav li');
	_items.each(function(){
		var _item = $(this);
		var _drop = _item.find('>div').hide();
		var _timer;
		_item.hover(function(){
			if(_timer) clearTimeout(_timer);
			_item.parent().children().not(_item).removeClass(_hoverClass).find('>div').hide();
			_item.addClass(_hoverClass);
			_timer = setTimeout(function(){
				_drop.fadeIn(_fadeSpeed);
			},_stayTime);
		},function(){
			if(_timer) clearTimeout(_timer);
			if(_drop.is(':visible')) {
				_timer = setTimeout(function(){
					_drop.fadeOut(_fadeSpeed,function(){
						_item.removeClass(_hoverClass);
					});
				},_stayTime);
			} else {
				_item.removeClass(_hoverClass);
			}
		});
	});
}

// tooltips function
function initTooltips() {
	var _fadeSpeed = 250;
	var _stayTime = 250;
	var _tips = $('div.details');
	_tips.each(function(){
		var _timer;
		var _opener = $(this);
		var _popup = _opener.find('.details-box').hide();
		_opener.hover(function(){
			if(_timer) clearTimeout(_timer);
			_tips.not(_opener).find('.details-box').hide();
			_popup.fadeIn(_fadeSpeed);
		},function(){
			_timer = setTimeout(function(){
				_popup.fadeOut(_fadeSpeed);
			},_stayTime);
		});
	});
}

// hover for IE
function ieHover(_list) {
	if ($.browser.msie && $.browser.version < 7) {
		$(_list).hover(function() {
			$(this).addClass('hover');
		}, function() {
			$(this).removeClass('hover');
		});
	}
}

// tabs function
function initTabs() {
	$('ul.tabset').each(function(){
		var _list = $(this);
		var _links = _list.find('a.tab');
		_links.each(function() {
			var _link = $(this);
			var _href = _link.attr('href');
			var _tab = $(_href);
			if(_link.hasClass('active')) _tab.show();
			else _tab.hide();
			_link.click(function(){
				_links.filter('.active').each(function(){
					$($(this).removeClass('active').attr('href')).hide();
				});
				_link.addClass('active');
				_tab.show();
				return false;
			});
		});
	});
}

// browser detect
function browserDetect() {
	var cssFix = function(){
		var u = navigator.userAgent.toLowerCase(),
		addClass = function(el,val){
		if(!el.className) {
			el.className = val;
		} else {
			var newCl = el.className;
			newCl+=(" "+val);
			el.className = newCl;
		}
	},
	is = function(t){return (u.indexOf(t)!=-1)};
	addClass(document.getElementsByTagName('html')[0],[
		(!(/opera|webtv/i.test(u))&&/msie (\d)/.test(u))?('ie ie'+RegExp.$1)
		:is('firefox/2')?'gecko ff2'
		:is('firefox/3')?'gecko ff3'
		:is('gecko/')?'gecko'
		:is('chrome/')?'chrome'
		:is('opera/9')?'opera opera9':/opera (\d)/.test(u)?'opera opera'+RegExp.$1
		:is('konqueror')?'konqueror'
		:is('applewebkit/')?'webkit safari'
		:is('mozilla/')?'gecko':'',
		(is('x11')||is('linux'))?' linux'
		:is('mac')?' mac'
		:is('win')?' win':''
	].join(" "));
}();
}

// edit account function
function initEditAccount() {
	$('div.preferences-box').each(function(){
		var _holder = $(this);
		var _btnEdit = _holder.find('.btn-edit').show();
		var _btnSave = _holder.find('.btn-save').hide();
		var _btnUndo = _holder.find('.btn-undo').hide();
        var _new_pass = _holder.find('#new_pass').hide();
        var _not_new_pass = _holder.find('#not_new_pass').show();
		var _previewItems = _holder.find('.preview-item');
		var _editItems = _holder.find('.edit-item');
		_editItems.unbind('focus');
		_editItems.unbind('blur');

		_btnEdit.click(function(){
			_btnEdit.hide();
			_btnSave.show();
			_btnUndo.show();
			_previewItems.hide();
			_editItems.show();
            _new_pass.show();
            _holder.find('input[name=password]').attr('value', '');
            _not_new_pass.hide();
			return false;
		});

		_btnSave.click(function(){
			/*saveChanges();
			return false;*/
		});

		_btnUndo.click(function(){
			reloadDefault();
			return false;
		});

		function saveChanges() {
			_editItems.each(function(){
				var _input = $(this);
				var _parent = _input.parent();
				var _preview = _parent.find('.preview-item');
				if(_input.get(0).type == 'password') {
					_preview.empty();
					for(var i=0;i<_input.val().length; i++) _preview.html(_preview.html()+'*')
				} else {
					_preview.html(_input.val());
				}
			});
			_btnEdit.show();
			_btnSave.hide();
			_btnUndo.hide();
			_editItems.hide();
			_previewItems.show();
		}
		function reloadDefault() {
			_editItems.each(function(){
				var _input = $(this);
				var _parent = _input.parent();
				var _preview = _parent.find('.preview-item');
				_input.val(_preview.text());
			});
			_btnEdit.show();
			_btnSave.hide();
			_btnUndo.hide();
			_editItems.hide();
			_previewItems.show();
            _new_pass.hide();
            _not_new_pass.show();
		}
		reloadDefault();
	});
}

// popups function
function initPopups() {
	var _zIndex = 1000;
	var _fadeSpeed = 350;
	var _faderOpacity = 0.45;
	var _faderBackground = '#000';
	var _faderId = 'lightbox-overlay';
	var _closeLink = 'a.close, a.cancel, a.btn-close';
	var _fader;
	var _lightbox = null;
	var _openers = $('a.open-popup');
	var _page = $('body > div:eq(0)');
	var _minWidth = _page.outerWidth();

	// init popup fader
	_fader = $('#'+_faderId);
	if(!_fader.length) {
		_fader = $('<div />');
		_fader.attr('id',_faderId);
		$('body').append(_fader);
	}
	_fader.css({
		opacity:_faderOpacity,
		backgroundColor:_faderBackground,
		position:'absolute',
		overflow:'hidden',
		display:'none',
		top:0,
		left:0,
		zIndex:_zIndex
	});

	// IE6 iframe fix
	if(jQuery.browser.msie && jQuery.browser.version < 7) {
		if(!_fader.children().length) {
			var _frame = jQuery('<iframe src="javascript:false" frameborder="0" scrolling="no" />');
			_frame.css({
				opacity:0,
				width:'100%',
				height:'100%'
			})
			_fader.empty().append(_frame);
		}
	}

	// modal window function
	function showModal() {
		toggleState(true);
		positionLightbox();
	}

	// lightbox positioning function
	function positionLightbox() {
		if(_lightbox) {
			var _windowHeight = $(window).height();
			var _windowWidth = $(window).width();
			var _lightboxWidth = _lightbox.outerWidth();
			var _lightboxHeight = _lightbox.outerHeight();
			var _pageHeight = _page.outerHeight(true);

			if (_windowWidth < _minWidth) _fader.css('width',_minWidth);
				else _fader.css('width','100%');
			if (_windowHeight < _pageHeight) _fader.css('height',_pageHeight);
				else _fader.css('height',_windowHeight);

			_lightbox.css({
				position:'absolute',
				zIndex:(_zIndex+1),
				top: 0,
				left:0
			});

			// vertical position
			if (_windowHeight > _lightboxHeight) {
				if ($.browser.msie && $.browser.version < 7) {
					_lightbox.css({
						position:'absolute',
						top: document.documentElement.scrollTop + (_windowHeight - _lightboxHeight) / 2
					});
				} else {
					_lightbox.css({
						position:'fixed',
						top: (_windowHeight - _lightboxHeight) / 2
					});
				}
			} else {
				_lightbox.css({
					position:'absolute',
					top: 0
				});
				if(_fader.height() < _lightboxHeight) _fader.css('height',_lightboxHeight);
			}

			// horizontal position
			if (_fader.width() > _lightbox.outerWidth()) _lightbox.css({left:(_fader.width() - _lightbox.outerWidth()) / 2});
			else _lightbox.css({left: 0});
		}
	}

	// show/hide lightbox
	function toggleState(_state) {
		if(!_lightbox) return;
		if(_state) {
			_fader.fadeIn(_fadeSpeed,function(){
				_lightbox.fadeIn(_fadeSpeed);
			});
		} else {
			_lightbox.fadeOut(_fadeSpeed,function(){
				_fader.fadeOut(_fadeSpeed);
			});
		}
	}

	// popup actions
	function initPopupActions(_obj) {
		if(!_obj.get(0).jsInit) {
			_obj.get(0).jsInit = true;
			// close link
			_obj.find(_closeLink).click(function(){
				_lightbox = _obj;
				toggleState(false);
				return false;
			});
		}
	}

	// lightbox openers
	_openers.each(function(){
		var _opener = $(this);
		var _target = _opener.attr('href');

		if($(_target).length) {
			// init actions for popup
			var _popup = $(_target);
			initPopupActions(_popup);

			// open popup
			_opener.click(function(){
				if(_lightbox) {
					_lightbox.fadeOut(_fadeSpeed,function(){
						_lightbox = _popup.hide();
						showModal();
					})
				} else {
					_lightbox = _popup.hide();
					showModal();
				}
				return false;
			});
		}
	});

	// event handlers
	$(window).resize(function(){
		positionLightbox();
	})
	$(window).scroll(function(){
		positionLightbox();
	})
	$(document).keydown(function (e) {
		if (!e) evt = window.event;
		if (e.keyCode == 27) {
			toggleState(false);
		}
	})
	_fader.click(function(){
		toggleState(false);
		return false;
	})
}
