YAHOO.namespace("ps"); 
YAHOO.namespace("ps.container");

/////////////////////////
// Browsercheck (needed)
/////////////////////////
YAHOO.ps.UserAgent = function () { 
	this.agent = navigator.userAgent.toLowerCase();
	// Define browsers
	this.isOpera    = (this.agent.indexOf("opera")>-1 && window.opera) ? true : false;
  	this.isIE6 	    = (this.agent.indexOf("msie 6")>-1 && !this.op) ? true : false;
  	this.isIE7 	    = (this.agent.indexOf("msie 7")>-1 && !this.op) ? true : false;
  	this.isIE8 	    = (this.agent.indexOf("msie 8")>-1 && !this.op) ? true : false;
	this.isSafari   = (this.agent.indexOf("safari")>-1) ? true : false;
	this.isChrome   = (this.agent.indexOf("chrome")>-1) ? true : false;
	this.isFirefox  = (this.agent.indexOf("firefox")>-1) ? true : false;
	return this;
}
YAHOO.ps.ua = new YAHOO.ps.UserAgent();
YAHOO.ps.UserAgent = {
	printValue:function(el) {
		var agent = YAHOO.ps.ua.agent;	
		var value;
		if(YAHOO.ps.ua.isIE6) {
			  value = 'IE 6';
		} else if(YAHOO.ps.ua.isIE7) {
			  value = 'IE 7';
		} else if(YAHOO.ps.ua.isIE8) {
			  value = 'IE 8';
		} else if(YAHOO.ps.ua.isFirefox) {
			  value = 'Firefox';
		} else if(YAHOO.ps.ua.isSafari) {
			  value = 'Safari';
		} else if(YAHOO.ps.ua.isChrome) {
			  value = 'Chrome';
		} else {
			  value = 'Other';
		}
		var obj = document.getElementById(el);
		for (var x=0;x<obj.options.length;x++) { 
	        if (obj.options[x].value == value) { 
	            obj.selectedIndex = x; 
	            break; 
	        } 
	    } 
	}
}

YAHOO.ps.Form = function() { };
YAHOO.ps.Form = {
	// @function returns a 0 or 1 boolean value
	// @param {String} The name of the checkbox to collect
	// @param {String} The parent id if any
	// @returns {Integer} A 0 or 1 is returned based on the input being checked
	getCheckboxBool:function(name, parent) {	
		// IE can't tell the difference between checkbox and input elements. Look 
		// for specific class first and if the matching name element is checked.
		var elements = YAHOO.util.Dom.getElementsByClassName('check', 'input', parent);
		var val = 0;
		for (var x=0;x<elements.length;x++) { 
			if (elements[x].checked && elements[x].name == name) { 
				val = elements[x].value;
			}
		}
		return val;
	},
	// @function checks only when value equals 1 for true
	// @param {String} The name of the checkbox to mark
	// @param {Integer} 0 = false, 1 = true
	// @param {String} The parent id if any
	setCheckboxBool:function(name, value, parent) {
		var elements = YAHOO.util.Dom.getElementsByClassName('check', 'input', parent);
		for (var x=0;x<elements.length;x++) { 
			if (elements[x].name == name) { 
				if (value === 1) {
					elements[x].checked = true;
				} else {
					elements[x].checked = false;
				}
			}
		}
	},
	// @function returns a comma seperated string of selected values from the checkbox
	// @param {String} The name of the checkbox to collect
	// @param {Integer} The number of values that make the string full
	// @param {String} The parent id if any
	// @returns {Array} An array of selected values or an empty string if full
	getCheckboxCsv:function(name, full, parent) {
		// Get all checkbox elements by classname 'check'
		var elements = YAHOO.util.Dom.getElementsByClassName('check', 'input', parent); 

		var txt = "";
		var i   = 0;
		for (var x=0;x<elements.length;x++) { 
	        if (elements[x].checked && elements[x].name == name) { 
	        	i++;
	            txt += elements[x].value + ",";
	        } 
	    } 
		// If total values equal full return value is empty
	    if (i == full) {
	    	txt = "";
	    }
	    // Remove last comma
	    if (txt.length > 0) {
	    	txt = txt.substring(0,(txt.length-1));
	    }
	    return txt;
	},
	// @function checks only the boxes value is in the value string
	// @param {String} The name of the checkbox group to mark
	// @param {String} A comma separated string of checked values
	// @param {String} The parent id if any
	setCheckboxCsv:function(name, value, parent) {
		// Get all checkbox elements by classname 'check'
		var elements = YAHOO.util.Dom.getElementsByClassName('check', 'input', parent); 
		// If value is empty check all boxes
		// Otherwise check each value on its own
		if (value == "") {
			for (var x=0;x<elements.length;x++) { 
				if (elements[x].name == name) {
		        	elements[x].checked = true;
		        }
		    }
		} else {
			// First uncheck all
			for (var x=0;x<elements.length;x++) { 
				if (elements[x].name == name) {
		        	elements[x].checked = false;
		        }
		    }
		    // Check values only
		    for (var x=0;x<elements.length;x++) { 
		    	if (elements[x].name == name && value.indexOf(elements[x].value) >= 0) {
		    		elements[x].checked = true;
		    	}
		    }
		}
	},
	// @function a comma seperated list of checked values
	// @param {String} The name of the checkboxes
	// @returns {String} A comma separated list of items that are checked
	getMultiSelectCsv:function(name) {
		var element = document.getElementById(name);
		var txt = "";
		
		for (var x=0;x<element.options.length;x++) { 
		    if (element.options[x].selected) {
		    	txt += element.options[x].value + ",";
	    	}
	    }
	    // Remove last comma
	    if (txt.length > 0) {
	    	txt = txt.substring(0,(txt.length-1));
	    }
	    return txt;
	},
	// @function selects the value(s) of the named drop down menu
	// @param {String} The name of the drop down menu
	// @param {String} The value of the selected items separated by comma
	setMultiSelectCsv:function(name, values) {
		var element = document.getElementById(name);
		
		for (var x=0;x<element.options.length;x++) { 
			element.options[x].selected = false; 
	    }
	    if (!YAHOO.lang.isUndefined(values)) {
			values = values.replace('+', ' ');
			for (var x=0;x<element.options.length;x++) { 
	        	if (values.indexOf(element.options[x].value) >= 0 && element.options[x].value != '') { 
	        		element.options[x].selected = true; 
	        	} 
	    	} 
	    }
	},
	// @function selects the value of the named drop down menu
	// @param {String} The name of the drop down menu
	// @param {String} The value of the select
	setDropDown:function(name, value) {
		var obj = document.getElementById(name);
		for (var x=0;x<obj.options.length;x++) { 
	        if (obj.options[x].value == value) { 
	            obj.selectedIndex = x; 
	            break; 
	        } 
	    } 
	}
};

YAHOO.ps.Viewport = function() { };
YAHOO.ps.Viewport.captchaIndex = 0;
YAHOO.ps.Viewport = {
	expandMap:function(el,pad) {	
		var vpHgt = YAHOO.util.Dom.getViewportHeight(); 
		var ftHgt = document.getElementById('ft').offsetHeight;
		var mapEl = document.getElementById(el);
        mapEl.style.height = (vpHgt - (YAHOO.util.Dom.getY(el) + ftHgt + pad)) + 'px';
	},
	menuAction:function(el) {
		if (YAHOO.util.Dom.hasClass(el,'menuOpen')) {
			YAHOO.util.Dom.replaceClass(el,'menuOpen','menuClose');		
		} else {
			YAHOO.util.Dom.replaceClass(el,'menuClose','menuOpen');
		}
		//YAHOO.ps.Viewport.setFooter();
	},
	resetCaptchaImage:function() {
	    var captchaImage = document.getElementById('captchaImage');
	    YAHOO.ps.Viewport.captchaIndex++;
	        	
	    captchaImage.innerHTML = '';
	    captchaImage.innerHTML = '<img src="/server/image/captcha/w/80/h/22/c/6/' + YAHOO.ps.Viewport.captchaIndex + '" />';
	}
};


    
function initContainers () {
	YAHOO.ps.container.wait = new YAHOO.widget.Panel("wait",  
													 { width:"160px", 
													   fixedcenter:true, 
													   close:false, 
													   draggable:false, 
													   modal:true,
													   visible:false,
													   effect:{effect:YAHOO.widget.ContainerEffect.FADE, duration:0.25}
													 } 
													);
	YAHOO.ps.container.wait.setBody("<span class=\"wait\"><img src=\"/resources/images/busy.gif\"/>Please wait...</span>");
	YAHOO.ps.container.wait.render(document.body);

	// Define various event handlers for logout Dialog
	var handleLogoutYes = function() {
		window.location='/account/logout';
	};
	var handleLogoutNo = function() {
		this.hide();
	};
	YAHOO.ps.container.logout = new YAHOO.widget.SimpleDialog("confirm",  
															   { width:"300px", 
															   	 fixedcenter:true, 
															   	 close:false, 
															     draggable:false, 
																 icon:YAHOO.widget.SimpleDialog.ICON_WARN,
															     modal:true,
															     visible:false,
													     		 effect:{effect:YAHOO.widget.ContainerEffect.FADE, duration:0.25},
															     buttons: [ { text:"Logout", handler:handleLogoutYes, isDefault:true },
																			{ text:"Cancel", handler:handleLogoutNo } ]
															   } 
															 );
	YAHOO.ps.container.logout.setHeader("Are you sure?");
	YAHOO.ps.container.logout.setBody("This will clear your current session and redirect you to the login page.");
	YAHOO.ps.container.logout.render(document.body);
	
	// Define various event handlers for delete Dialog
	var handleDeleteYes = function() {
		YAHOO.ps.deleteItem.startRequest();
	};
	var handleDeleteNo = function() {
		this.hide();
	};

	YAHOO.ps.container.deleteItem = new YAHOO.widget.SimpleDialog("delete",  
															   { width:"300px", 
															   	 fixedcenter:true, 
															   	 close:false, 
															     draggable:false, 
																 icon:YAHOO.widget.SimpleDialog.ICON_WARN,
															     modal:true,
															     visible:false,
													     		 effect:{effect:YAHOO.widget.ContainerEffect.FADE, duration:0.25},
															     buttons: [ { text:"Delete", handler:handleDeleteYes, id:"deleteButton", isDefault:true },
																			{ text:"Cancel", handler:handleDeleteNo } ]
															   } 
															 );
	YAHOO.ps.container.deleteItem.setHeader("Are you sure?");
	YAHOO.ps.container.deleteItem.setBody("This will permanently delete this item from the records.");
	YAHOO.ps.container.deleteItem.render(document.body);
	
	YAHOO.ps.container.upload = new YAHOO.widget.Panel("upload",  
													 { width:"300px", 
													   fixedcenter:true, 
													   close:false, 
													   draggable:false, 
													   modal:true,
													   visible:false,
													   effect:{effect:YAHOO.widget.ContainerEffect.FADE, duration:0.25}
													 } 
													);
	YAHOO.ps.container.upload.setBody('<div id="pBody"><div id="pBar">&nbsp;</div> </div><div class="pContent"><span id="pPct">0%</span><span id="pTxt">0 of 0 bytes</span></div>');
	YAHOO.ps.container.upload.render(document.body);
}

YAHOO.util.Event.addListener(window, "load", initContainers);

