/**
 * P O P U P
 */

(function($) {
	// static constructs
	$.youplanet = $.youplanet || {};
	
	$.youplanet.popup = {
		conf: {
			promptSelector: null,
			promptTrigger: null,
			buttons: null,
			obl: null,
			header: null,
			message: null,
			time: null
		},
		
		parentPopupClose: function(time) {
		  parentPopupClose(time);
    },
		
		message: function(message, time) {
			_message(message, time);
		},
	
		alert: function (message, time) {
			alert(message, time);
		},
	
		toAlert: function(id, message, time) {
			toAlert(id, message, time);
		},
		
		confirm: function(message, yaction) {
			confirm(message, yaction);
		},
	
		bind: function(conf) {
			conf = $.extend(true, {}, $.youplanet.popup.conf, conf || {});
			return bind(conf);
		}
	};
	
	function _message(message, time) {
		var conf = {
			time: time || -1,
			message: message
		};
			
		conf = $.extend(true, {}, $.youplanet.popup.conf, conf);
		
		var prompt = bind(conf);
		prompt.load();
	}
	
	function alert(message, time) {
		var conf = {
			time: time || -1,
			message: message,
			buttons: {
				button0: {
					find: 0,
					name: 'OK',
					bclass: 'ok',
					onClick: function(e, prompt) {
						prompt.getClosers().eq(0).click();
					}
				}
			}
		};
			
		conf = $.extend(true, {}, $.youplanet.popup.conf, conf);
		
		var prompt = bind(conf);
		prompt.load();
	}
	
	function parentPopupClose(time) {
	  $.timer(time || 3000, function (timer) {
	    parent.closeIframeOverlay();
	    timer.stop();
	  });	  
	}
	
	function toAlert(id, message, time) {
		var prompt = $(id).overlay({ api : true });
		
		if(prompt) {
			var w = prompt.getOverlay().width();
			prompt.getOverlay().attr('id', 'ypprompt');
			
			if(time && 0 < time) {
				$(prompt.getClosers()).hide();
			}
			
			prompt.getOverlay().find('.overlayContent').empty();
			prompt.getOverlay().find('.overlayContent').html('<p>' + (message?message:'') + '</p>');
			center(prompt, w);
			
			if(time && 0 < time) {
				$.timer(time || 3000, function (timer) {
					prompt.getClosers().eq(0).click();
					timer.stop();
				});
			}
		}
		else {
			prompt = $(id);
			prompt.find('.overlayContent').empty();
			prompt.find('.overlayContent').html('<p>' + (message?message:'') + '</p>');
		
			if(time && 0 < time) {
				$.timer(time || 3000, function (timer) {
					prompt.find('.close').click();
					timer.stop();
				});
			}
		}
	}
	
	function confirm(message, yaction) {
		var conf = {
			time: -1,
			message: message,
			buttons: {
				button0: {
					find: 0,
					name: 'YES',
					bclass: 'yes',
					onClick: function(e, prompt) {
						prompt.getClosers().eq(0).click();
					}
				},
				button1: {
					find: 1,
					name: 'NO',
					bclass: 'no',
					onClick: function(e, prompt) {
						prompt.getClosers().eq(0).click();
					}
				}
			}
		};
			
		conf = $.extend(true, {}, $.youplanet.popup.conf, conf);
			
		var prompt = bind(conf);
		prompt.load();
	}
	
	function bind(conf) { 
		var inside = $('<div class="close" style="display: ' + (conf.time && 0 < conf.time ? 'none' : 'block') + ';"> </div>' +
							'<div class="lightbox_container">' + 
								'<div class="promptContent"><p>' + (conf.message?conf.message:'') + '</p></div>' +
								'<div class="overlayButtons"></div>' +
								'<div class="forLoader"></div>' +
							'</div>');
			
		var oconf = {
		    target: '#ypprompt',
		    top: '40%',
			expose: {
		       	zIndex: 39999
		    },
		    obl: function(e) {
		    	$('#ypprompt').find('div.overlayContent').empty();
		    },
		    onLoad: function(e) {
		    	this.getOverlay().find('div.overlayContent').append(inside);
        		this.getOverlay().find('div.overlayButtons').show();
		    	
		    	var p = this;
		    	
	            $.each(conf.buttons || {}, function(b, c) {
	            	p.getOverlay().find('a.click' + c.find).remove();
	            	p.getOverlay().find('div.overlayButtons').append($('<a class="click' + c.find + (c.bclass?' ' + c.bclass:'') +' button_brown" href="' + (c.href?c.href:'#') + '"><span>' + c.name + '</span></a>').bind('click.prompt', function(e) {
	            		p.getOverlay().find('div.overlayButtons').hide();
	            		
	            		if(c.onClick) {
	            			c.onClick(e, p);
	            			return false;
	            		}
	            		else {
	            			return true;
	            		}
	            	})); 
	            });
	            
	            if(conf.time && 0 < conf.time) {
					$.timer(conf.time, function (timer) {
						p.getClosers().eq(0).click();
						timer.stop();
					});
	            }
		    },
        	api: true
		};
		
		var l = $((null != conf.promptTrigger)?conf.promptTrigger:'<div></div>');
		var p = null;
		
		l.each(function() { 
			p = $.youplanet.overlay.bind(this, oconf, {});
		});
		
		return p;
	}
	
	function center(popup, w) {
		var l = parseInt(popup.getOverlay().css('left').replace('px', ''));
		var c = ((w - popup.getOverlay().width()) / 2);
		popup.getOverlay().css('left', (l + c) + 'px');
	}
})(jQuery);

