﻿// Call this just like the built-in alert function, only now you'll be using a yui panel
// NOTE that unlike the built-in alert, this version returns immediately
//      (so don't use it to trace exection).
(function () {
    YAHOO.namespace('widget.alert');

    alert_old = window.alert;
    window.alert = function(str, onOK) {
        if (onOK) YAHOO.widget.alert.dlg.onOK = onOK;
        YAHOO.widget.alert.dlg.setBody(str);
        YAHOO.widget.alert.dlg.cfg.queueProperty('icon', YAHOO.widget.SimpleDialog.ICON_WARN);
        YAHOO.widget.alert.dlg.cfg.queueProperty('zIndex', 9999);

        YAHOO.widget.alert.dlg.render(document.body);
        if (YAHOO.widget.alert.dlg.bringToTop) {
            YAHOO.widget.alert.dlg.bringToTop();
        }
        YAHOO.widget.alert.dlg.show();
    };


    YAHOO.widget.registerAlert = function () {

        var handleOK = function() {
            this.hide();
            if (this.onOK) this.onOK(true);
        };

        YAHOO.widget.alert.dlg = new YAHOO.widget.SimpleDialog('widget_alert', {
            visible:false,
            width: '20em',
            zIndex: 9999,
            close: false,
            fixedcenter: true,
            modal: false,
            draggable: true,
            constraintoviewport: true, 
            icon: YAHOO.widget.SimpleDialog.ICON_WARN,
            buttons: [
                { text: 'OK', handler: handleOK, isDefault: true }
                ]
        });
        YAHOO.widget.alert.dlg.setHeader("Alert!");
        YAHOO.widget.alert.dlg.setBody('Alert body passed to window.alert'); // Bug in panel, must have a body when rendered
        
        // Add keyListener so that escape and return will dismiss the alert
	    var kl1 = new YAHOO.util.KeyListener(document, { keys: [27, 13] },  							
					  { fn:handleOK,
						scope:YAHOO.widget.alert.dlg,
						correctScope:true }, "keyup" ); 
						// keyup is used here because Safari won't recognize the ESC
						// keydown event, which would normally be used by default
	    YAHOO.widget.alert.dlg.cfg.queueProperty("keylisteners", kl1);
	    
        YAHOO.widget.alert.dlg.render(document.body);
    }
    YAHOO.util.Event.on(window, 'load', YAHOO.widget.registerAlert);
})();

(function() {
    YAHOO.namespace('widget.ghConfirm');

    window.ghConfirm = function(str, onOK, onCancel) {
        YAHOO.widget.ghConfirm.dlg.onOK = onOK;
        YAHOO.widget.ghConfirm.dlg.onCancel = onCancel;
        YAHOO.widget.ghConfirm.dlg.setBody(str + "<br>");
        YAHOO.widget.ghConfirm.dlg.cfg.queueProperty('icon', YAHOO.widget.SimpleDialog.ICON_INFO);
        YAHOO.widget.ghConfirm.dlg.cfg.queueProperty('zIndex', 9999);
        YAHOO.widget.ghConfirm.dlg.render(document.body);
        if (YAHOO.widget.ghConfirm.dlg.bringToTop) {
            YAHOO.widget.ghConfirm.dlg.bringToTop();
        }
        YAHOO.widget.ghConfirm.dlg.show();
    };


    YAHOO.util.Event.on(window, 'load', function() {

        var handleOK = function() {
            this.hide();
            if (this.onOK) this.onOK(true);
        }
        var handleCancel = function() {
            this.hide();
            if (this.onCancel) this.onCancel(false);
        }
        
        YAHOO.widget.ghConfirm.dlg = new YAHOO.widget.SimpleDialog("widget_ghConfirm", { 
            visible:false,
            width: "20em",
            zIndex: 9999,
            close: false,
            fixedcenter:true,
            modal:true,
            draggable:true,
            constraintoviewport: true, 
            icon: YAHOO.widget.SimpleDialog.ICON_INFO,
            buttons: [
                { text: 'OK', handler: handleOK },
                { text: "Cancel", handler: handleCancel, isDefault: true }
                ]
        });
        YAHOO.widget.ghConfirm.dlg.setHeader("Info Needed");
        YAHOO.widget.ghConfirm.dlg.setBody('Confirm body passed to window.ghConfirm'); // Bug in panel, must have a body when rendered
        
        // Create key handlers
        // Escape key...
	    var kl1 = new YAHOO.util.KeyListener(document, { keys:27 },  							
			  { fn: handleCancel,
				scope: YAHOO.widget.ghConfirm.dlg,
				correctScope: true }, "keyup" ); 
				// keyup is used here because Safari won't recognize the ESC
				// keydown event, which would normally be used by default
        // Return key...
	    var kl2 = new YAHOO.util.KeyListener(document, { keys:13 },  							
			  { fn: handleOK,
				scope: YAHOO.widget.ghConfirm.dlg,
				correctScope: true }, "keyup" ); 
		YAHOO.widget.ghConfirm.dlg.cfg.queueProperty("keylisteners", [kl1, kl2]);
        
        YAHOO.widget.ghConfirm.dlg.render(document.body);
    });
})();

(function() {
    YAHOO.namespace('widget.ghYNCancel');

    window.ghYNCancel = function(str, onYes, onNo, onCancel) {
        YAHOO.widget.ghYNCancel.dlg.onYes = onYes;
        YAHOO.widget.ghYNCancel.dlg.onNo = onNo;
        YAHOO.widget.ghYNCancel.dlg.onCancel = onCancel;
        YAHOO.widget.ghYNCancel.dlg.setBody(str + "<br>");
        YAHOO.widget.ghYNCancel.dlg.cfg.queueProperty('icon', YAHOO.widget.SimpleDialog.ICON_INFO);
        YAHOO.widget.ghYNCancel.dlg.cfg.queueProperty('zIndex', 9999);
        YAHOO.widget.ghYNCancel.dlg.render(document.body);
        if (YAHOO.widget.ghYNCancel.dlg.bringToTop) {
            YAHOO.widget.ghYNCancel.dlg.bringToTop();
        }
        YAHOO.widget.ghYNCancel.dlg.show();
    };


    YAHOO.util.Event.on(window, 'load', function() {

        var handleYes = function() {
            this.hide();
            if (this.onYes) this.onYes(true);
        }
        var handleNo = function() {
            this.hide();
            if (this.onNo) this.onNo(false);
        }
        var handleCancel = function() {
            this.hide();
            if (this.onCancel) this.onCancel(null);
        }
        
        YAHOO.widget.ghYNCancel.dlg = new YAHOO.widget.SimpleDialog("widget_ghYNCancel", { 
            visible:false,
            width: "20em",
            zIndex: 9999,
            close: false,
            fixedcenter:true,
            modal:true,
            draggable:true,
            constraintoviewport: true, 
            icon: YAHOO.widget.SimpleDialog.ICON_INFO,
            buttons: [
                { text: 'Yes', handler: handleYes, isDefault: true },
                { text: 'No', handler: handleNo },
                { text: "Cancel", handler: handleCancel }
                ]
        });
        YAHOO.widget.ghYNCancel.dlg.setHeader("Info Needed");
        YAHOO.widget.ghYNCancel.dlg.setBody('YNCancel body passed to window.ghYNCancel'); // Bug in panel, must have a body when rendered
        
        // Create key handlers
        // Escape key...
	    var kl1 = new YAHOO.util.KeyListener(document, { keys:27 },  							
			  { fn: handleCancel,
				scope: YAHOO.widget.ghYNCancel.dlg,
				correctScope: true }, "keyup" ); 
				// keyup is used here because Safari won't recognize the ESC
				// keydown event, which would normally be used by default
        // Return key, Y and y...
	    var kl2 = new YAHOO.util.KeyListener(document, { keys: [13, 89, 121] },  							
			  { fn: handleYes,
				scope: YAHOO.widget.ghYNCancel.dlg,
				correctScope: true }, "keyup" ); 
        // N and n...
	    var kl3 = new YAHOO.util.KeyListener(document, { keys: [78, 110] },  							
			  { fn: handleNo,
				scope: YAHOO.widget.ghYNCancel.dlg,
				correctScope: true }, "keyup" ); 
		YAHOO.widget.ghYNCancel.dlg.cfg.queueProperty("keylisteners", [kl1, kl2, kl3]);
        
        YAHOO.widget.ghYNCancel.dlg.render(document.body);
    });
})();


(function() {
    YAHOO.namespace('widget.ghPrompt');

    window.ghPrompt = function(promptText, initialValue, onOK, onCancel, width) {
        YAHOO.widget.ghPrompt.dlg.onOK = onOK;
        YAHOO.widget.ghPrompt.dlg.onCancel = onCancel;
        //YAHOO.widget.ghPrompt.dlg.setBody("<table><tr><td><span style='background-position:0pt -1200px;background:transparent url(../../yui/assets/skins/sam/sprite.png) no-repeat scroll 0pt 50%;float:left;height:16px;margin-right:10px;width:16px;'/>&nbsp;</td><td>" + promptText + "<br><input type='text' id='widget_ghPrompt_input' value='" + initialValue + "'/></td></tr></table><br><br>");
        YAHOO.widget.ghPrompt.dlg.setBody("<table><tr><td>" + promptText + "<br><input type='text' id='widget_ghPrompt_input' value='" + initialValue + "'/></td></tr></table><br><br>");
        YAHOO.widget.ghPrompt.dlg.cfg.queueProperty('icon', YAHOO.widget.SimpleDialog.ICON_INFO);
        YAHOO.widget.ghPrompt.dlg.cfg.queueProperty('zIndex', 9999);
        YAHOO.widget.ghPrompt.dlg.render(document.body);
        if (YAHOO.widget.ghPrompt.dlg.bringToTop) {
            YAHOO.widget.ghPrompt.dlg.bringToTop();
        }
        if (width) {
            YAHOO.widget.ghPrompt.dlg.cfg.setProperty("width", width);
        } else {
            YAHOO.widget.ghPrompt.dlg.cfg.setProperty("width", "30em");
        }
        YAHOO.widget.ghPrompt.dlg.show();
      
        var inEl = YAHOO.util.Dom.get("widget_ghPrompt_input");
        inEl.focus();

        return inEl;
    };


    YAHOO.util.Event.on(window, 'load', function() {

        var handleOK = function() {
            this.hide();
            if (this.onOK) {
                var inEl = YAHOO.util.Dom.get("widget_ghPrompt_input");
                this.onOK(inEl.value);
            }
        }
        var handleCancel = function() {
            this.hide();
            if (this.onCancel) this.onCancel(false);
        }
        
	    YAHOO.widget.ghPrompt.dlg = new YAHOO.widget.SimpleDialog("widget_ghPrompt", {
							  visible: false, 
							  width: "1em",
                              zIndex: 9999,
                              close: false,
							  fixedcenter : true,
                              modal:true,
                              draggable:true,
							  constraintoviewport : true,
                              icon: YAHOO.widget.SimpleDialog.ICON_WARN,
							  buttons : [
							      { text: "OK", handler: handleOK, isDefault: true },
								  { text: "Cancel", handler: handleCancel } ]
							});
        YAHOO.widget.ghPrompt.dlg.setHeader("Info Needed");
        YAHOO.widget.ghPrompt.dlg.setBody('Prompt body passed to window.ghPrompt'); // Bug in panel, must have a body when rendered
        
        // Create key handlers
        // Escape key...
	    var kl1 = new YAHOO.util.KeyListener(document, { keys:27 },  							
			  { fn: handleCancel,
				scope: YAHOO.widget.ghPrompt.dlg,
				correctScope: true }, "keyup" ); 
				// keyup is used here because Safari won't recognize the ESC
				// keydown event, which would normally be used by default
        // Return key...
	    var kl2 = new YAHOO.util.KeyListener(document, { keys:13 },  							
			  { fn: handleOK,
				scope: YAHOO.widget.ghPrompt.dlg,
				correctScope: true }, "keyup" ); 
		YAHOO.widget.ghPrompt.dlg.cfg.queueProperty("keylisteners", [kl1, kl2]);
        
        YAHOO.widget.ghPrompt.dlg.render(document.body);
    });
})();

