/**
 * jQuery Easy Confirm Dialog plugin 1.1
 *
 * Copyright (c) 2010 Emil Janitzek (http://projectshadowlight.org)
 * Based on Confirm 1.3 by Nadia Alramli (http://nadiana.com/)
 *
 * Samples and instructions at: 
 * http://projectshadowlight.org/jquery-easy-confirm-dialog/
 *
 * This script is free software: you can redistribute it and/or modify it 
 * under the terms of the GNU General Public License as published by the Free 
 * Software Foundation, either version 3 of the License, or (at your option)
 * any later version.
 */  
(function($) {
  $.easyconfirm = { };
  $.easyconfirm.locales = { };
  $.easyconfirm.locales.enUS = {
    title: 'Are you sure?',
    text: 'By clicking on this link, you are leaving the UMe Federal Credit Union website. You are linking to  an alternate website which is not operated by UMe Federal Credit Union.  UMe Federal Credit Union is not responsible for the content of the alternate website. The fact that there is a link from UMe Federal Credit Union website to an alternate website does not constitute endorsement of any product, service, or organization. UMe Federal Credit Union does not represent either you, or the website operator, if you enter into a transaction. Privacy and security policies may differ from those practiced by UMe Federal Credit Union, and you should review the alternate websites policies!',
    button: ['Cancel', 'Confirm'],
    closeText: 'close'
  };
  $.easyconfirm.locales.svSE = {
    title: 'Är du säker?',
    text: 'Är du säker på att du vill genomföra denna åtgärden?',
    button: ['Avbryt', 'Bekräfta'],
    closeText: 'stäng'
  };
  
	$.fn.easyconfirm = function(options) {
	  var options = jQuery.extend({
	    eventType: 'click',
	    icon: 'help'
	  }, options);
	  
	  var locale = jQuery.extend({}, $.easyconfirm.locales.enUS, options.locale);
  
	  // Shortcut to eventType.
	  var type = options.eventType;
  
	  return this.each(function() {
	    var target = this;
	    var $target = jQuery(target);
    
      // If no events present then and if there is a valid url, then trigger url change
	    var urlClick = function() {
	      if (target.href) {
	        var length = String(target.href).length;
	        if (target.href.substring(length-1,length) != '#')
	          document.location = target.href;
	      }
	    }
    
	    // If any handlers where bind before triggering, lets save them and add them later
	    var saveHandlers = function() {
	      var events = jQuery.data(target, 'events');
	      if (events) {        
	        target._handlers = new Array();
	        for (var i in events[type]) {
	          target._handlers.push(events[type][i]);
	        }
      
	        $target.unbind(type); 
	      }
	    }
	    // Re-bind old events
	    var rebindHandlers = function() {
	      if (target._handlers != undefined) {
	        jQuery.each(target._handlers, function() {
	          $target.bind(type, this);
	        });
	      }
	    }
      
	    if ($target.attr('title').length > 0)
        locale.text = $target.attr('title');
      
      var dialog = (options.dialog == undefined || typeof(options.dialog) != 'object') ? 
                     $('<div class="dialog confirm">'+ locale.text +'</div>'):
                     options.dialog;
      
      var buttons = { };
      buttons[locale.button[1]] = function() { 
        // Unbind overriding handler and let default actions pass through
        $target.unbind(type, handler);
      
        // Close dialog
        $(dialog).dialog("close");
      
        // Check if there is any events on the target
        if (jQuery.data(target, 'events')) {                           
          // Trigger click event.
          $target.click();                                      
        } else {
          // No event trigger new url
          urlClick();
        }
      
        init();

      };
      buttons[locale.button[0]] = function() { 
        $(dialog).dialog("close"); };
      
	    $(dialog).dialog({ autoOpen: false,
			               resizable: false,
	                       draggable: true,
	                       closeOnEscape: true,
	                       width: 500,
	                       height: 250,
	                       minHeight: 250,
	                       maxHeight: 250,
	                       buttons: buttons,
	                       title: locale.title,
	                       closeText: locale.closeText,
	                       modal: true,
	                       open: function() {
 	                         if (!$(this).parent("div").find("button:last").hasClass("cancel")) {
 	                           $(this).parent("div").find("button:last").addClass("cancel").wrapInner("<span />");
 	                           $(this).parent("div").find("button:first").addClass("go").addClass("default").wrapInner("<span />");
 	                         }
 	                       }});
    
	    // Handler that will override all other actions
	    var handler = function(event) {
	      $(dialog).dialog('open');
	      event.stopImmediatePropagation();
	      event.preventDefault();
	      return false;
	    }
    
	    var init = function() { 
	      saveHandlers();
	      $target.bind(type, handler);
	      rebindHandlers();
	    }
    
	    init();

	  });
  
	}
})(jQuery);
