WebWindow

My modal library

by Felipe Alfaro

JavaScript

function WebWindow(id) {}

function WebWindowState() {}

var WebWindowEngine = (function () {

	var engine = {},
  		handlers = {},
  		collection = [],
      instances = {
      	used: [],
        loaded: []
      };
  
  function sendError(description) {
  	throw new Error(description);
  }
  
  function setEngineToWindow(windowInstance) {
  	return Object.defineProperties(windowInstance, (function () {
    	var properties = {};
      Object.keys(handlers).forEach(function (propertyName) {
      	properties[propertyName] = {
        	value: handlers[propertyName],
          writable: false
        }
      });
      return properties;
    })());
  }
  
  function isInCollection(windowInstance) {
  	var currentWindow;
  	for (var i = 0; i < collection.length; i++) {
      if (windowInstance === collection[i]) {
      	return true;
      }
    }
    return false;
  }
  
  function validationResponse(defaultValue, debugMessage) {
  	return debugMessage ? sendError(debugMessage) : Boolean(defaultValue);
  }
  
  function debugMessage() {}
  
  function isNewInstance(windowInstance, debugIfTrue, debugIfFalse) {
  	for (var i = 0; i < collection.length; i++) {
      if (windowInstance === collection[i]) {
      	return validationResponse(false, debugIfFalse ? windowInstance + ' is already added' : false);
      }
      else if (windowInstance.id === collection[i].id) {
      	return validationResponse(false, debugIfFalse ? windowInstance + ' taken id' : false);
      }
    }
    return validationResponse(true, debugIfFalse ? windowInstance + ' has not beed added' : false);
  }
  
  function isInstance(windowInstance) {
  	return (
    	windowInstance instanceof WebWindow || sendError('Is not instance of WebWindow')
    )
  }
  
  function isValidReference(windowInstanceOrId) {
  	if (isInstance(windowInstanceOrId)){}
  }

	function addWindow(windowInstance) {
  	if (isInstance(windowInstance) && isNewInstance(windowInstance)) {
   ...