/*
 * DOL 0.1 
 * Designer Oriented Library.
 * Copyright (c) 2008-2011 Shao S.Q. Chen
 * Licensed under the MIT License
 * Author: Laurie Z. Gao and Shao S.Q. Chen
*/

window.DOL = window.DOL || {};


DOL.SearchBox = function() {
	var settings = {};
	var view = {};
	
	function initilize(options) {
		settings = $.extend({}, settings, options);
		setView();
		setEventListeners();
	}
	
	function setView() {
		view.searchField = $('#search_field');
		view.label = $(view.searchField).find('label');
		view.input = $(view.searchField).find('#search_input');
		if ($.trim($(view.input).val()).length == 0) $(view.label).show();
	};
	
	function setEventListeners() {
		$(view.input).focus(function () {
			$(view.label).hide();
		});
		$(view.input).blur(function () {
			if ($.trim($(this).val()).length == 0)$(view.label).show();
		});
		$(view.input).keyup(function () {
			$(view.label).hide();
		});
	};
	
	return {
		init: function(options) {
			initilize(options);
		}
	}
}()


/* Begin: lightbox */
DOL.PopupContainer = {
		
	create: function () {
	
		var view = {};
		var options;

		function initialize(opts) {
			options = opts || {};
			setView();
		}

		function setView() {
			view.wrapper = (options.view.wrapper.clone().removeClass('popupContainer'));
			view.wrapper.appendTo($("body"));
			view.wrapper.find('.content').append(options.view.content);
			view.wrapper.addClass(options.view.className);
			view.lbtClose = view.wrapper.find('.lbtClose');
			
            view.lbtClose.click(function() {
                view.wrapper.hide();
                if (options.onClose != undefined) options.onClose();
            });
		}

		return {

			open: function() {
				view.wrapper.show();
			},
			
			close: function() {
                view.wrapper.hide();
			},
			
			reset: function() {
				$.extend(options, opts);
			},
			
			init: function(opts) {
				initialize(opts);
				return this;
			}
		
		}
	}
	
}

DOL.Confirmation = function () {

	var view = {};
	var options;

	function initialize(opts) {
		options = opts || {};
		setView();
		setEventListeners();
	}

	function setView() {
		view.wrapper = $('#confirmation');
		view.title = view.wrapper.find('.title');
		view.details = view.wrapper.find('.details');
		view.btnYes = view.wrapper.find('.btnYes');
		view.btnNo = view.wrapper.find('.btnNo');

		view.popup = DOL.PopupContainer.create().init({
			'view' : {
				'wrapper': $('.popupContainer'),
				'className': 'confirmationWindow',
				'content': view.wrapper 
			}
		});
		view.wrapper.show();
	}

	function setEventListeners() {
		view.btnYes.click(function() {
			close();
			options.onYes();
		});
		view.btnNo.click(function() {
			close();
			options.onNo();
		});
	}

	function open() {
		view.popup.open();
		view.btnYes.focus();
	}

	function close() {
		view.popup.close();
	}

	return {

		confirm: function(opts) {
			view.title.text(opts.title);
			view.details.html(opts.details);
			view.btnYes.text(opts.yes);
			view.btnNo.text(opts.no);
			options.onYes = opts.onYes;
			options.onNo = opts.onNo;
			open();
		},

		init: function(opts) {
			initialize(opts);
			return this;
		}
	}
}();


DOL.Alert = function () {

	var view = {};
	var options;

	function initialize(opts) {
		options = opts || {};
		setView();
		setEventListeners();
	}

	function setView() {
		view.wrapper = $('#alert');
		view.title = view.wrapper.find('.title');
		view.details = view.wrapper.find('.details');
		view.btnOK = view.wrapper.find('.btnOK');

		view.popup = DOL.PopupContainer.create().init({
			'view': {
				'wrapper': $('.popupContainer'),
				'className': 'alertWindow',
				'content': view.wrapper
			}
		});
		view.wrapper.show();
	}

	function setEventListeners() {

		view.btnOK.click(function() {
			close();
			options.onOK();
		});
		
	} 

	function open() {
		view.popup.open();
		view.btnOK.focus();
	}

	function close() {
		view.popup.close();
	}

	return {
		
		alert: function(opts) {
			view.title.text(opts.title);
			view.details.html(opts.details);
			view.btnOK.text(opts.ok);
			options.onOK = opts.onOK;
			open();
		},

		init: function(opts) {
			initialize(opts);
			return this;
		} 
	}
}();


DOL.Notification = function () {

    var view = {};
    var options;

    function initialize(opts) {
        options = opts || {};
        setView();
    }

    function setView() {
        view.wrapper = $('#notification');
        view.title = view.wrapper.find('.title');
        view.details = view.wrapper.find('.details');

        view.popup = DOL.PopupContainer.create().init({
            'view': {
                'wrapper': $('.popupContainer'),
                'className': 'notificationWindow',
                'content': view.wrapper
            },
            'onClose': function() {
				options.onClose();
		    }
        });
        view.wrapper.show();
    }

    return {

        open: function(opts) {
            view.title.text(opts.title);
            view.details.html(opts.details);
            options.onClose = opts.onClose;
            view.popup.open();
        },

        close: function() {
            view.popup.close();
        },

        init: function(opts) {
            initialize(opts);
            return this;
        }
    }
}();

/* End: lightbox */

$(function() {
	DOL.SearchBox.init();
})
