function showWaitDialModal(headerText){
	showWaitDial(headerText,true);
}

function showWaitDial(headerText, isModal){
	isModal = isModal || false;
	
	var dHeader=headerText || "Processing, please wait...";
	if (!YAHOO.wait) {
	      // Initialize the temporary Panel to display while waiting for external content to load
		YAHOO.wait = new YAHOO.widget.Panel("wait",  
	                                                    { width: "250px", 
	                                                      fixedcenter: true, 
	                                                      close: false, 
	                                                      draggable: false, 
	                                                      modal: isModal,
							      						  zindex:10,
	                                                      visible: false
	                                                    } 
	                                                );
	    
	    YAHOO.wait.setHeader(dHeader);
	     YAHOO.wait.setBody("<img src=\"/vco/images/loading.gif\"/>");
	     YAHOO.wait.render(document.body);
	
	}
	YAHOO.wait.show();
}

function hideWaitDial(){
	if(YAHOO.wait){
		YAHOO.wait.hide();
	}

} 



/*
ALARM=YAHOO.widget.SimpleDialog.ICON_ALARM;
BLOCK=YAHOO.widget.SimpleDialog.ICON_BLOCK;
HELP=YAHOO.widget.SimpleDialog.ICON_HELP;
TIP=YAHOO.widget.SimpleDialog.ICON_TIP;
WARN=YAHOO.widget.SimpleDialog.ICON_WARN;
*/
VCO_SIMPLE_DIAG_WIDTH="350px";

function createButton(buttonText, handlerFunction, isDefaultButton){
	isDefaultButton=isDefaultButton | false;
	return {text:buttonText, handler:handlerFunction, isDefault:isDefaultButton};
}

var defaultDialogCloseHanlder=function(){
	YAHOO.vcoSimpledialog.hide();

}

function showInfoDial(dBodyText, dheader, event){
	showInfoDialog(dBodyText, dheader, event);
}

function showInfoDialog(dBodyText, dheader, event){
	var dialogHeader=dheader || "Info";
	showSimpleDialog(VCO_SIMPLE_DIAG_WIDTH, dialogHeader,dBodyText,true,true,YAHOO.widget.SimpleDialog.ICON_INFO,null,false);
	
}


function showErrorDialog(dBodyText, dheader){
	var dialogHeader=dheader || "Error";
	showSimpleDialog(VCO_SIMPLE_DIAG_WIDTH, dialogHeader,dBodyText,true,true,YAHOO.widget.SimpleDialog.ICON_ALARM,null,true);
}

function showYesNoDialog(dheader, dBodyText, yesHandler, noHandler, modal){
	var yesButton=createButton("Yes", yesHandler);
	noHandler=noHandler||defaultDialogCloseHanlder;
	var noButton=createButton("No", noHandler,true);
	var buttons=[yesButton,noButton];
	showSimpleDialog(VCO_SIMPLE_DIAG_WIDTH, dheader,dBodyText,true,true,YAHOO.widget.SimpleDialog.ICON_INFO,buttons,modal);
}

function showWarningDialog(dBodyText, okHanlder){
	var dialogButton=okHanlder&&[createButton("Ok", okHanlder,true)];
	showSimpleDialog(VCO_SIMPLE_DIAG_WIDTH, "Warning",dBodyText,true,true,YAHOO.widget.SimpleDialog.ICON_WARN,dialogButton,false);
}

function showSimpleDialog(dWidth, dHeader,dBodyText, dPlaceToCenter, dAllowDrag, dType, dButtons, dModal){
	var dialogWidth=dWidth || VCO_SIMPLE_DIAG_WIDTH;
	var placeToCenter=dPlaceToCenter || true;
	var allowDrag=dAllowDrag || false;
	var bodyText=dBodyText || "";
	var dialogButton=dButtons || [createButton("Ok", defaultDialogCloseHanlder,true)];
	var header=dHeader || "";
	if(header==""){
		header="Popup";
	}
	var type=dType || YAHOO.widget.SimpleDialog.ICON_INFO;
	var isModal=dModal || false;
	var vcoSimpledialogConfig={ width: dialogWidth,
								 fixedcenter: placeToCenter,
								 visible: false,
								 draggable: allowDrag,
								 close: true,
								 text: bodyText,
								 icon: type,
								 modal:isModal,
								 underlay:"shadow",
								 constraintoviewport: true,
								 buttons: dialogButton,
								 zindex: 9999};
	if(!YAHOO.vcoSimpledialog){
		YAHOO.vcoSimpledialog = new YAHOO.widget.SimpleDialog("ppSimpleDialog", 
																		vcoSimpledialogConfig);
																		 
	  	YAHOO.vcoSimpledialog.setHeader(header);												
	  	YAHOO.vcoSimpledialog.render(document.body);
	  }else{
	
	  	YAHOO.vcoSimpledialog.init("ppSimpleDialog",vcoSimpledialogConfig);
	  	YAHOO.vcoSimpledialog.setHeader(header);	
	  	YAHOO.vcoSimpledialog.render(document.body);
	  
	  }
	  YAHOO.vcoSimpledialog.bringToTop();
	  YAHOO.vcoSimpledialog.show();
}

function hideSimpleDialog(){
	if(YAHOO.vcoSimpledialog){
		YAHOO.vcoSimpledialog.hide();
	}
}

function hideAllDialog(){
	hideSimpleDialog();
	hideWaitDial();
}

function createYUIButtonFromId(buttonId, hanlderFunction){
	var button=document.getElementById(buttonId);
	return createYUIButton(button,hanlderFunction);
}

function createYUIButtonFromName(buttonName){
	var buttons=document.getElementsByName(buttonName);


	if(buttons){
		if(buttons.length){
			while(buttons.length>0){
				createYUIButton(buttons[0]);
			}
		}
	}

}

function createYUIButton(button,hanlderFunction){
	if(button){
		var yuiButton = new YAHOO.widget.Button(button);
		if(hanlderFunction){
	
			yuiButton.on("click",hanlderFunction);
		}
		return yuiButton; 
	}else{   
		return; //undefined
	}

}

  function updateCal(calendar, selectedDate) { 
 
	    if (selectedDate && selectedDate!= "") { 
	        calendar.select(selectedDate); 
	        var selectedDates = calendar.getSelectedDates(); 
	        if (selectedDates.length > 0) { 
	            var firstDate = selectedDates[0]; 
	            calendar.cfg.setProperty("pagedate", (firstDate.getMonth()+1) + "/" + firstDate.getFullYear()); 
	            calendar.render(); 
	        }  
         
	    } 
	} 
	
   
	
  
	function initCalendar(htmlElement, title, selectedDate,toBeUpdatedElement, minimumDate, useNavigator, onSelectFunction){
		if(!YAHOO.calendars){
			YAHOO.calendars={};
		}
		if(!htmlElement || htmlElement==''){
			return;
		}
		var navConfig = null;
		
		if(useNavigator==undefined || useNavigator == true){
			navConfig={
			
			strings : { 
	         	 month: "Choose Month", 
	          	year: "Enter Year", 
	          	submit: "OK", 
	          	cancel: "Cancel", 
	          	invalidYear: "Please enter a valid year" 
	      	}, 
	      	initialFocus: "year" 
			}; 
		}
		
		
		YAHOO.calendars[htmlElement] = new YAHOO.widget.Calendar("Calendar",htmlElement, {navigator: navConfig, title:title, close:true, mindate: minimumDate} ); 
		YAHOO.calendars[htmlElement].render(); 

		YAHOO.calendars[htmlElement].selectEvent.subscribe(handleCalendarSelectDefault, {selectFunction: onSelectFunction, calendar:YAHOO.calendars[htmlElement],updateElement:toBeUpdatedElement} , true); 
		updateCal(YAHOO.calendars[htmlElement],selectedDate);

	
	}
	
	
	function handleCalendarSelectDefault(type,args,obj){
		if(obj){
			var updateObj=document.getElementById(obj.updateElement);
			if(updateObj){
				var dates = args[0]; 
	   	 		var date = dates[0]; 
	  	  		var year = date[0], month = date[1], day = date[2]; 

	
	    		var monthString=(month<10?"0"+month:""+month);
	    		var dayString=(day<10?"0"+day:""+day);
	    		updateObj.value = monthString + "/" + dayString + "/" + year; 
	  	  }
	  	  var selectFunction=obj.selectFunction;
	  	  if(selectFunction){
	  	  	selectFunction();
	  	  }
	    }
	    obj.calendar.hide();
	}
	
	function getCalendar(htmlElement){
	
		if(YAHOO.calendars){
			return YAHOO.calendars[htmlElement];
		}
	}
	
	function showCalendar(htmlElement, show){
		var calendar=getCalendar(htmlElement);
		if(calendar){
			if(show){
				calendar.show();
			}else{
				calendar.hide();
			}
		}
	}
	
		function fixCaret(panel){
				if (YAHOO.env.ua.gecko) {
                	YAHOO.util.Dom.addClass(panel.form, "caretfix");

                	panel.showEvent.subscribe(function() {
                    	YAHOO.util.Dom.setStyle(panel.form, "display", "none");
						var fixDisplay = function() {
                        YAHOO.util.Dom.setStyle(panel.form, "display", "block");
                        try {
                            panel.firstFormElement.focus();
                        } catch (e) {
                            // Not related to the workaround, I just try/catch focus calls
                            // do avoid testing for the various conditions in which they could
                            // fail.
                        }
                    }
                    setTimeout(fixDisplay, 0);
               	 	});
           	  }
		}
		
		var DEFAULT_TIME_OUT=50000;
		function getCallBackObj(successHandler, failureHandler, maxTimeout){
			maxTimeout=maxTimeout || DEFAULT_TIME_OUT;
			
			 function defaultSubmitFailHandler(){
 				hideWaitDial();
 				var defaultMsg="We are unable to process your request right now. Please try again later.\nIf the problem persists, please re-login.";
 				alert(defaultMsg);
 			}
			failureHandler=failureHandler||defaultSubmitFailHandler;
			return {success:successHandler, failure:failureHandler, timeout:maxTimeout};
			
		}
		
		function parseResponse(o, keepWait){
			if(!keepWait) hideWaitDial();
			var defaultMsg="We are unable to process your request. Please try again.\nIf the problem persists, please re-login.";
			var defaultErrorJson= {"ERROR_MSG":defaultMsg};
			if(!o){
				return defaultErrorJson;
			}else{
				var parseText="";
				try{
					parseText=o.responseText || o;
					var rtObc=JSON.parse(parseText);
					return rtObc;
				}catch(e){
					
					return defaultErrorJson;
				}
			}
			
		}
		
		function showErrorMsg(rtObj){
			if(!rtObj){
				return true;
			}
			if(rtObj && rtObj.ERROR_MSG){
				top.showErrorDialog(rtObj.ERROR_MSG);
				return true;
			}
			
			return false;
		
		}
		
		var DEFAULT_ROW_PER_PAGE=10;
		
		function getDefaultPaginator(containerId){
			var myPaginator = new YAHOO.widget.Paginator({ 
    		containers         : [containerId], 
		    pageLinks          : 8, 
			rowsPerPage        : DEFAULT_ROW_PER_PAGE, 
			rowsPerPageOptions : [DEFAULT_ROW_PER_PAGE,DEFAULT_ROW_PER_PAGE*2,DEFAULT_ROW_PER_PAGE*3], 
			template           : "<strong>{CurrentPageReport}</strong> {PreviousPageLink} {PageLinks} {NextPageLink} {RowsPerPageDropdown}" 
			}); 
			
			return myPaginator;
		
		}
		
		
		function getJsonDataSourceObj(action, fieldsArray){
			   var actionString=action;
			   var hadQuery=true;
			   if(action.indexOf('?')<0){
			   		actionString=action+"?";
			   		hadQuery=false;
			   }
			   
			   if(window.synaTabId && window.synaTabId!=null && window.synaTabId!=undefined){
				   actionString+=(hadQuery?"&":"")+"synaTabId="+window.synaTabId+"&";
			   }
			  
			   var myDataSource = new YAHOO.util.DataSource(actionString);
		       myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
		       myDataSource.connXhrMode = "allowAll";
		       myDataSource.responseSchema = {
		            resultsList: "result",
		            fields: fieldsArray,
					metaFields:{
						totalRecords:'totalRecords'
					}
		        };
		        
		        return myDataSource;
				
		
		}
		
		function initTextEditor(textAreaId, heightStr){
			var configObj={ 
	    			dompath: true, //Turns on the bar at the bottom 
	    			animate: true //Animates the opening, closing and moving of Editor windows 
				} 
				heightStr=heightStr || "200px";
				if(heightStr){
					configObj.height=heightStr;
				}
				var myEditor = new YAHOO.widget.Editor(textAreaId, configObj);
				myEditor._defaultToolbar.titlebar=false;
				myEditor.render(); 
				return myEditor;
		}

	   
		function ajaxFetch(container,form, config){ 
			var url;
			if(typeof form=='string'){
				url=form;
			}else{
				var formQuery=getFormDataQuery(form);
				var url=form.action+"?"+formQuery;
				url+="&ajaxSubmit=true";
			}
			YAHOO.plugin.Dispatcher.fetch(container,url,config);
		}
		function getFormDataQuery(form, isUpload, secureUri){
			return getFormDataQueryData(form,isUpload,secureUri,"query");
		}
		
		function getFormData(form){
			return getFormDataQueryData(form,null,null,"object");
		}
		
		function getFormDataQueryData(form, isUpload, secureUri, returnFormat){
					
		
				
			        var oForm, oElement, oName, oValue, oDisabled,
			            hasSubmit = false,
			            data = [], item = 0,
			            i,len,j,jlen,opt;

					if(typeof form == 'string'){
						// Determine if the argument is a form id or a form name.
						// Note form name usage is deprecated by supported
						// here for legacy reasons.
						oForm = (document.getElementById(form) || document.forms[form]);
					}
					else if(typeof form == 'object'){
						// Treat argument as an HTML form object.
						oForm = form;
					}
					else{
						YAHOO.log('Unable to create form object ' + form, 'warn', 'Connection');
						return;
					}

			

					// Iterate over the form elements collection to construct the
					// label-value pairs.
					for (i=0,len=oForm.elements.length; i<len; ++i){
						oElement  = oForm.elements[i];
						oDisabled = oElement.disabled;
			            oName     = oElement.name;

						// Do not submit fields that are disabled or
						// do not have a name attribute value.
						if(!oDisabled && oName)
						{
			                oName  = encodeURIComponent(oName)+'=';
			                if(returnFormat=="object"){
			                	oValue = oElement.value;
			                }else{
			                	oValue = encodeURIComponent(oElement.value);
			                }

							switch(oElement.type)
							{
			                    // Safari, Opera, FF all default opt.value from .text if
			                    // value attribute not specified in markup
								case 'select-one':
			                        if (oElement.selectedIndex > -1) {
			                            opt = oElement.options[oElement.selectedIndex];
			                            data[item++] = oName + encodeURIComponent(
			                                (opt.attributes.value && opt.attributes.value.specified) ? opt.value : opt.text);
			                        }
			                        break;
								case 'select-multiple':
			                        if (oElement.selectedIndex > -1) {
			                            for(j=oElement.selectedIndex, jlen=oElement.options.length; j<jlen; ++j){
			                                opt = oElement.options[j];
			                                if (opt.selected) {
			                                    data[item++] = oName + encodeURIComponent(
			                                        (opt.attributes.value && opt.attributes.value.specified) ? opt.value : opt.text);
			                                }
			                            }
			                        }
									break;
								case 'radio':
								case 'checkbox':
									if(oElement.checked){
			                            data[item++] = oName + oValue;
									}
									break;
								case 'file':
									// stub case as XMLHttpRequest will only send the file path as a string.
								case undefined:
									// stub case for fieldset element which returns undefined.
								case 'reset':
									// stub case for input type reset button.
								case 'button':
									// stub case for input type button elements.
									break;
								case 'submit':
									if(hasSubmit === false){
										if(this._hasSubmitListener && this._submitElementValue){
			                                data[item++] = this._submitElementValue;
										}
										else{
			                                data[item++] = oName + oValue;
										}

										hasSubmit = true;
									}
									break;
								default:
			                        data[item++] = oName + oValue;
							}
						}
					}
					var formData;
					if(returnFormat=="query"){
						formData = data.join('&');
					}else if(returnFormat=="object"){
						formData={};
						for(var d=0; d<data.length; d++){
							var splitData=data[d].split("=");
							if(splitData.length==2){
								formData[splitData[0]]=splitData[1];
							}
						}
						
					}
					return formData;
				

		}
		
		
