$(function(){
	$('#wrapper').myPopup();
	initOc();
});

function initOc(){
	$('dl.questions-list').each(function(){
		var hold = $(this);
		var dt = hold.find('dt'); 
		var dd = hold.find('dd');
		var newP = $('<span>');
		var em = $('<em class="dots">...</em>');
		dd.hide();
		dt.each(function(){
			var opener = $(this).find('a.opener');
			var p = $(this).find('.text-holder span p');
			var str = p.text();
			
			var strNew = '';
			var strHide = '';
			var t = 0;
			for(var i=0;i<str.length;i++){
				if(str[i].indexOf(' ') != -1) t++;
				if(t <= 54) strNew += str[i];
				else strHide += str[i];
			}
			var p1 = newP.clone().text(strNew);
			var p2 = newP.clone().text(strHide).hide();
			var dots = em.clone();
			if(t > 54) p.empty().append(p1).append(dots).append(p2);

			opener.click(function(){
				if($(this).hasClass('open')){
					$(this).removeClass('open');
					p2.css('display', 'none');
					$(this).parents('dt').next().hide();
					dots.show();
				}
				else{
					dt.find('a.opener').removeClass('open');
					dt.find('.text-holder span p span:eq(1)').css('display', 'none');
					dt.find('em.dots').show();
					dd.hide();

					$(this).addClass('open');
					p2.css('display', 'inline');
					$(this).parents('dt').next().show();
					dots.hide();
				}
				return false;
			});
		});
	});
}

jQuery.fn.myPopup = function(_options){
	// defaults options	
	var _options = jQuery.extend({
		duration: 700,
		linkOpenName: '.link-popup',
		linkCloseName: 'a.close, a.btn-close',
		divFader: 'fader',
		wrapper: '#wrapper'
	},_options);

	return this.each(function(){
		var _hold = $(this);
		var _speed = _options.duration;
		var _IE = $.browser.msie;
		var links = _hold.find(_options.linkOpenName);
		var _fader = $('<div class="'+_options.divFader+'"></div>');
		var _select = $(_options.wrapper).find('select');
		var popup;
		$('body').append(_fader);
		_fader.css({
			position: 'absolute',
			top: '0px',
			left: '0px',
			zIndex: 999,
			background: 'black',
			opacity: 0.7
		});
		
		function init(_obj){
			popup = $(_obj);
			var btnClose = popup.find(_options.linkCloseName);
			var submitBtn = popup.find('.link-submit');
			
			if (_IE) _select.css({visibility: 'hidden'});
			var w = $('body').width();
			var _w = $(_options.wrapper).width();
			if (_w > w) w =_w;
			var h = $(window).height();
			var _offset = $(window).scrollTop();
			
			var ret = _offset+(h/2) - popup.outerHeight(true)/2;
			if (ret < 0) ret = 0;
			var te = $(_options.wrapper).height();
			if ($(window).height() > te) te = $(window).height();
			
			popup.css({
				top: ret,
				left: w/2 - popup.outerWidth(true)/2
			}).hide();
			_fader.css({
				width: w,
				height: te
			}).fadeIn(300, function(){
				popup.fadeIn(300);
			});
			$(window).resize(function(){
				w = $('body').width();
				_w = $(_options.wrapper).width();
				if (_w > w) w =_w;
				popup.animate({
					left: w/2 - popup.outerWidth(true)/2
				}, {queue:false, duration: 300});
				_fader.css({
					width: w
				});
			});
			function closedPopup(opt1){
				popup.fadeOut(300, function(){
					popup.css({left: '-9999px'}).show();
					if (_IE) _select.css({visibility: 'visible'});
					submitBtn.unbind('click');
					$(window).unbind('resize');
					if (opt1) _fader.hide();
					else {
						if (submitBtn.attr('href')) init(submitBtn.attr('href'));
						else init(submitBtn.attr('title'));
					}
				});
			}
			btnClose.click(function(){
				closedPopup(true);
				return false;
			});
			submitBtn.click(function(){
				closedPopup();
				return false;
			})
			_fader.click(function(){
				closedPopup(true);
				return false;
			});
		}
		links.click(function(){
			if ($(this).attr('href')) init($(this).attr('href'));
			else init($(this).attr('title'));
			return false;
		});
	});
}
