You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by je...@apache.org on 2012/06/21 21:14:26 UTC

git commit: (1) CS-15057: Remove jquery.timer.js from source code. Replace it with native JavaScript functions.

Updated Branches:
  refs/heads/master e7995d09d -> a00c21686


(1) CS-15057: Remove jquery.timer.js from source code. Replace it with native JavaScript functions.

(2) CS-14604: cloudstack 3.0 UI - Add Zone Wizard - skip Guest Traffic step if OVS tunnel manager is enabled.
(3) CS-15311: cloudstack 3.0 UI - Add Zone Wizard - add physical network step - no isolation method dropdown if network type is Basic.
(4) CS-14769:  Don't pass subdomainaccess param when scope=project.
(5) CS-15157: cloudstack 3.0 UI - infrastructure page - physical network - network service providers - reset nspMap before populating listNetworkServiceProviders response to nspMap.


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/a00c2168
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/a00c2168
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/a00c2168

Branch: refs/heads/master
Commit: a00c21686f36fa23ec4a2bb2097d806020af64b0
Parents: e7995d0
Author: Jessica Wang <je...@citrix.com>
Authored: Thu Jun 21 12:13:41 2012 -0700
Committer: Jessica Wang <je...@citrix.com>
Committed: Thu Jun 21 12:13:41 2012 -0700

----------------------------------------------------------------------
 ui/index.jsp                              |    1 -
 ui/lib/jquery.timers.js                   |  138 ----------
 ui/scripts/system.js                      |  101 ++++----
 ui/scripts/ui-custom/physicalResources.js |    7 +-
 ui/scripts/zoneWizard.js                  |  327 +++++++++++++-----------
 5 files changed, 229 insertions(+), 345 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/a00c2168/ui/index.jsp
----------------------------------------------------------------------
diff --git a/ui/index.jsp b/ui/index.jsp
index bf02640..3c377ea 100644
--- a/ui/index.jsp
+++ b/ui/index.jsp
@@ -1584,7 +1584,6 @@
     <script src="lib/jquery-ui/js/jquery-ui.js" type="text/javascript"></script>		
     <script src="lib/date.js" type="text/javascript"></script>
     <script src="lib/jquery.cookies.js" type="text/javascript"></script>
-    <script src="lib/jquery.timers.js" type="text/javascript"></script>
     <script src="lib/jquery.md5.js" type="text/javascript" ></script>
 		
     <script src="lib/excanvas.js"></script>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/a00c2168/ui/lib/jquery.timers.js
----------------------------------------------------------------------
diff --git a/ui/lib/jquery.timers.js b/ui/lib/jquery.timers.js
deleted file mode 100644
index bb51157..0000000
--- a/ui/lib/jquery.timers.js
+++ /dev/null
@@ -1,138 +0,0 @@
-/**
- * jQuery.timers - Timer abstractions for jQuery
- * Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com)
- * Licensed under the WTFPL (http://sam.zoy.org/wtfpl/).
- * Date: 2009/10/16
- *
- * @author Blair Mitchelmore
- * @version 1.2
- *
- **/
-
-jQuery.fn.extend({
-	everyTime: function(interval, label, fn, times) {
-		return this.each(function() {
-			jQuery.timer.add(this, interval, label, fn, times);
-		});
-	},
-	oneTime: function(interval, label, fn) {
-		return this.each(function() {
-			jQuery.timer.add(this, interval, label, fn, 1);
-		});
-	},
-	stopTime: function(label, fn) {
-		return this.each(function() {
-			jQuery.timer.remove(this, label, fn);
-		});
-	}
-});
-
-jQuery.extend({
-	timer: {
-		global: [],
-		guid: 1,
-		dataKey: "jQuery.timer",
-		regex: /^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/,
-		powers: {
-			// Yeah this is major overkill...
-			'ms': 1,
-			'cs': 10,
-			'ds': 100,
-			's': 1000,
-			'das': 10000,
-			'hs': 100000,
-			'ks': 1000000
-		},
-		timeParse: function(value) {
-			if (value == undefined || value == null)
-				return null;
-			var result = this.regex.exec(jQuery.trim(value.toString()));
-			if (result[2]) {
-				var num = parseFloat(result[1]);
-				var mult = this.powers[result[2]] || 1;
-				return num * mult;
-			} else {
-				return value;
-			}
-		},
-		add: function(element, interval, label, fn, times) {
-			var counter = 0;
-			
-			if (jQuery.isFunction(label)) {
-				if (!times) 
-					times = fn;
-				fn = label;
-				label = interval;
-			}
-			
-			interval = jQuery.timer.timeParse(interval);
-
-			if (typeof interval != 'number' || isNaN(interval) || interval < 0)
-				return;
-
-			if (typeof times != 'number' || isNaN(times) || times < 0) 
-				times = 0;
-			
-			times = times || 0;
-			
-			var timers = jQuery.data(element, this.dataKey) || jQuery.data(element, this.dataKey, {});
-			
-			if (!timers[label])
-				timers[label] = {};
-			
-			fn.timerID = fn.timerID || this.guid++;
-			
-			var handler = function() {
-				if ((++counter > times && times !== 0) || fn.call(element, counter) === false)
-					jQuery.timer.remove(element, label, fn);
-			};
-			
-			handler.timerID = fn.timerID;
-			
-			if (!timers[label][fn.timerID])
-				timers[label][fn.timerID] = window.setInterval(handler,interval);
-			
-			this.global.push( element );
-			
-		},
-		remove: function(element, label, fn) {
-			var timers = jQuery.data(element, this.dataKey), ret;
-			
-			if ( timers ) {
-				
-				if (!label) {
-					for ( label in timers )
-						this.remove(element, label, fn);
-				} else if ( timers[label] ) {
-					if ( fn ) {
-						if ( fn.timerID ) {
-							window.clearInterval(timers[label][fn.timerID]);
-							delete timers[label][fn.timerID];
-						}
-					} else {
-						for ( var fn in timers[label] ) {
-							window.clearInterval(timers[label][fn]);
-							delete timers[label][fn];
-						}
-					}
-					
-					for ( ret in timers[label] ) break;
-					if ( !ret ) {
-						ret = null;
-						delete timers[label];
-					}
-				}
-				
-				for ( ret in timers ) break;
-				if ( !ret ) 
-					jQuery.removeData(element, this.dataKey);
-			}
-		}
-	}
-});
-
-jQuery(window).bind("unload", function() {
-	jQuery.each(jQuery.timer.global, function(index, item) {
-		jQuery.timer.remove(item);
-	});
-});

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/a00c2168/ui/scripts/system.js
----------------------------------------------------------------------
diff --git a/ui/scripts/system.js b/ui/scripts/system.js
index 33b541d..3e022d2 100644
--- a/ui/scripts/system.js
+++ b/ui/scripts/system.js
@@ -1349,7 +1349,7 @@
 													}
 													else if($form.find('.form-item[rel=projectId]').css("display") != "none") {  //project-specific
 														array1.push("&projectid=" + args.data.projectId);
-														array1.push("&acltype=account");
+														array1.push("&acltype=account");														
 													}
 													else {  //domain-specific
 														array1.push("&acltype=domain");
@@ -1822,7 +1822,7 @@
 							notification: {
 								poll: pollAsyncJobResult
 							}
-						}
+						}						
 					}
         },
         dataProvider: function(args) {
@@ -2484,9 +2484,8 @@
                       dataType: "json",
                       async: true,
                       success: function(json) {
-                        var jobId = json.addnetworkserviceproviderresponse.jobid;
-                        var timerKey = "addNetworkServiceProviderJob_"+jobId;
-                        $("body").everyTime(2000, timerKey, function() {
+                        var jobId = json.addnetworkserviceproviderresponse.jobid;                       
+												var addNetscalerProviderIntervalID = setInterval(function() { 	
                           $.ajax({
                             url: createURL("queryAsyncJobResult&jobId="+jobId),
                             dataType: "json",
@@ -2496,7 +2495,7 @@
                                 return; //Job has not completed
                               }
                               else {
-                                $("body").stopTime(timerKey);
+                                clearInterval(addNetscalerProviderIntervalID); 
                                 if (result.jobstatus == 1) {
                                   nspMap["netscaler"] = result.jobresult.networkserviceprovider;
                                   addExternalLoadBalancer(args, selectedPhysicalNetworkObj, "addNetscalerLoadBalancer", "addnetscalerloadbalancerresponse", "netscalerloadbalancer");
@@ -2511,7 +2510,7 @@
                               alert("addNetworkServiceProvider&name=Netscaler failed. Error: " + errorMsg);
                             }
                           });
-                        });
+                        }, 3000); 		
                       }
                     });
                   }
@@ -2713,9 +2712,8 @@
                       dataType: "json",
                       async: true,
                       success: function(json) {
-                        var jobId = json.addnetworkserviceproviderresponse.jobid;
-                        var timerKey = "addNetworkServiceProviderJob_"+jobId;
-                        $("body").everyTime(2000, timerKey, function() {
+                        var jobId = json.addnetworkserviceproviderresponse.jobid;                        
+												var addF5ProviderIntervalID = setInterval(function() { 	
                           $.ajax({
                             url: createURL("queryAsyncJobResult&jobId="+jobId),
                             dataType: "json",
@@ -2725,7 +2723,7 @@
                                 return; //Job has not completed
                               }
                               else {
-                                $("body").stopTime(timerKey);
+                                clearInterval(addF5ProviderIntervalID); 
                                 if (result.jobstatus == 1) {
                                   nspMap["f5"] = json.queryasyncjobresultresponse.jobresult.networkserviceprovider;
                                   addExternalLoadBalancer(args, selectedPhysicalNetworkObj, "addF5LoadBalancer", "addf5bigiploadbalancerresponse");
@@ -2740,7 +2738,7 @@
                               alert("addNetworkServiceProvider&name=F5BigIpfailed. Error: " + errorMsg);
                             }
                           });
-                        });
+                        }, 3000); 		
                       }
                     });
                   }
@@ -2962,8 +2960,7 @@
                       async: true,
                       success: function(json) {
                         var jobId = json.addnetworkserviceproviderresponse.jobid;
-                        var timerKey = "addNetworkServiceProviderJob_"+jobId;
-                        $("body").everyTime(2000, timerKey, function() {
+                        var addJuniperSRXProviderIntervalID = setInterval(function() { 	
                           $.ajax({
                             url: createURL("queryAsyncJobResult&jobId="+jobId),
                             dataType: "json",
@@ -2973,7 +2970,7 @@
                                 return; //Job has not completed
                               }
                               else {
-                                $("body").stopTime(timerKey);
+                                clearInterval(addJuniperSRXProviderIntervalID); 
                                 if (result.jobstatus == 1) {
                                   nspMap["srx"] = json.queryasyncjobresultresponse.jobresult.networkserviceprovider;
                                   addExternalFirewall(args, selectedPhysicalNetworkObj, "addSrxFirewall", "addsrxfirewallresponse", "srxfirewall");
@@ -2988,7 +2985,7 @@
                               alert("addNetworkServiceProvider&name=JuniperSRX failed. Error: " + errorMsg);
                             }
                           });
-                        });
+                        }, 3000); 		
                       }
                     });
                   }
@@ -5120,9 +5117,8 @@
                     dataType: "json",
                     async: true,
                     success: function(json) {
-                      var jobId = json.addnetworkserviceproviderresponse.jobid;
-                      var timerKey = "addNetworkServiceProviderJob_"+jobId;
-                      $("body").everyTime(2000, timerKey, function() {
+                      var jobId = json.addnetworkserviceproviderresponse.jobid;                      
+											var addNetscalerProviderIntervalID = setInterval(function() { 	
                         $.ajax({
                           url: createURL("queryAsyncJobResult&jobId="+jobId),
                           dataType: "json",
@@ -5132,7 +5128,7 @@
                               return; //Job has not completed
                             }
                             else {
-                              $("body").stopTime(timerKey);
+                              clearInterval(addNetscalerProviderIntervalID); 
                               if (result.jobstatus == 1) {
                                 nspMap["netscaler"] = result.jobresult.networkserviceprovider;
                                 addExternalLoadBalancer(args, selectedPhysicalNetworkObj, "addNetscalerLoadBalancer", "addnetscalerloadbalancerresponse", "netscalerloadbalancer");
@@ -5147,7 +5143,7 @@
                             alert("addNetworkServiceProvider&name=Netscaler failed. Error: " + errorMsg);
                           }
                         });
-                      });
+                      }, 3000); 		
                     }
                   });
                 }
@@ -5314,8 +5310,7 @@
                     async: true,
                     success: function(json) {
                       var jobId = json.addnetworkserviceproviderresponse.jobid;
-                      var timerKey = "addNetworkServiceProviderJob_"+jobId;
-                      $("body").everyTime(2000, timerKey, function() {
+                      var addF5ProviderIntervalID = setInterval(function() { 	
                         $.ajax({
                           url: createURL("queryAsyncJobResult&jobId="+jobId),
                           dataType: "json",
@@ -5325,7 +5320,7 @@
                               return; //Job has not completed
                             }
                             else {
-                              $("body").stopTime(timerKey);
+                              clearInterval(addF5ProviderIntervalID); 
                               if (result.jobstatus == 1) {
                                 nspMap["f5"] = json.queryasyncjobresultresponse.jobresult.networkserviceprovider;
                                 addExternalLoadBalancer(args, selectedPhysicalNetworkObj, "addF5LoadBalancer", "addf5bigiploadbalancerresponse", "f5loadbalancer");
@@ -5340,7 +5335,7 @@
                             alert("addNetworkServiceProvider&name=F5BigIpfailed. Error: " + errorMsg);
                           }
                         });
-                      });
+                      }, 3000); 		
                     }
                   });
                 }
@@ -5524,8 +5519,7 @@
                     async: true,
                     success: function(json) {
                       var jobId = json.addnetworkserviceproviderresponse.jobid;
-                      var timerKey = "addNetworkServiceProviderJob_"+jobId;
-                      $("body").everyTime(2000, timerKey, function() {
+                      var addJuniperSRXProviderIntervalID = setInterval(function() { 	
                         $.ajax({
                           url: createURL("queryAsyncJobResult&jobId="+jobId),
                           dataType: "json",
@@ -5535,7 +5529,7 @@
                               return; //Job has not completed
                             }
                             else {
-                              $("body").stopTime(timerKey);
+                              clearInterval(addJuniperSRXProviderIntervalID); 
                               if (result.jobstatus == 1) {
                                 nspMap["srx"] = json.queryasyncjobresultresponse.jobresult.networkserviceprovider;
                                 addExternalFirewall(args, selectedPhysicalNetworkObj, "addSrxFirewall", "addsrxfirewallresponse", "srxfirewall");
@@ -5550,7 +5544,7 @@
                             alert("addNetworkServiceProvider&name=JuniperSRX failed. Error: " + errorMsg);
                           }
                         });
-                      });
+                      }, 3000); 		
                     }
                   });
                 }
@@ -6227,9 +6221,11 @@
                   array1.push("&username=" + todb(args.data.vCenterUsername));
                   array1.push("&password=" + todb(args.data.vCenterPassword));
 
-                  array1.push('&vsmipaddress=' + args.data.vsmipaddress);
-                  array1.push('&vsmusername=' + args.data.vsmusername);
-                  array1.push('&vsmpassword=' + args.data.vsmpassword);
+                  if (args.data.vsmipaddress) {
+                    array1.push('&vsmipaddress=' + args.data.vsmipaddress);
+                    array1.push('&vsmusername=' + args.data.vsmusername);
+                    array1.push('&vsmpassword=' + args.data.vsmpassword);
+                  }
 
                   var hostname = args.data.vCenterHost;
                   var dcName = args.data.vCenterDatacenter;
@@ -6491,7 +6487,7 @@
                   id: 'vSwitches',
                   fields: {
                     vsmdeviceid: { label: 'label.name' },
-                    vsmdevicestate: { label: 'label.state' }
+                    vsmdevicestate: { label: 'label.state',indicator:{ 'Enabled': 'on' } }
                   },
                   detailView: {
                     actions: {
@@ -6517,6 +6513,8 @@
                                   {jobId: jid}
                                 }
                               );
+                              //args.context.vSwitches[0].vsmdevicestate = item.allocationstate;
+                              //addExtraPropertiesToClusterObject(item);
                               args.response.success({
                                 actionFilter: nexusActionfilter,
                                 data:item
@@ -6553,6 +6551,8 @@
                                   {jobId: jid}
                                 }
                               );
+                              //args.context.vSwitches[0].vsmdevicestate = item.allocationstate;
+                              //addExtraPropertiesToClusterObject(item);
                               args.response.success({
                                 actionFilter: nexusActionfilter,
                                 data:item
@@ -6602,7 +6602,7 @@
                           vsmctrlvlanid: { label: 'label.vsmctrlvlanid' },
                           vsmpktvlanid: { label: 'label.vsmpktvlanid' },
                           vsmstoragevlanid: { label: 'label.vsmstoragevlanid' },
-                          vsmdevicestate: { label: 'label.state' }
+                          vsmdevicestate: { label: 'label.state', indicator: { 'Enabled': 'on' } }
                         },
                         
                         dataProvider: function(args) {
@@ -6631,10 +6631,11 @@
                       url: createURL("listCiscoNexusVSMs&clusterid=" + args.context.clusters[0].id),
                       dataType: "json",
                       success: function(json) {
-                        var item = json.listcisconexusvsmscmdresponse.cisconexusvsm;  
+                        var item = json.listcisconexusvsmscmdresponse.cisconexusvsm;
                         args.response.success({
                           actionFilter: nexusActionfilter,
                           data: item
+                         
                         });
                       },
                       error: function(json) {
@@ -8596,8 +8597,7 @@
 			dataType: "json",
 			success: function(json) {
 				var jobId = json.updatephysicalnetworkresponse.jobid;
-				var timerKey = "updatePhysicalNetworkJob_"+jobId;
-				$("body").everyTime(2000, timerKey, function() {
+				var enablePhysicalNetworkIntervalID = setInterval(function() { 	
 					$.ajax({
 						url: createURL("queryAsyncJobResult&jobId="+jobId),
 						dataType: "json",
@@ -8607,7 +8607,7 @@
 								return; //Job has not completed
 							}
 							else {
-								$("body").stopTime(timerKey);
+								clearInterval(enablePhysicalNetworkIntervalID); 
 								if (result.jobstatus == 1) {
 									//alert("updatePhysicalNetwork succeeded.");
 
@@ -8652,8 +8652,7 @@
 										async: false,
 										success: function(json) {
 											var jobId = json.configurevirtualrouterelementresponse.jobid;
-											var timerKey = "configureVirtualRouterElementJob_"+jobId;
-											$("body").everyTime(2000, timerKey, function() {
+											var enableVirtualRouterElementIntervalID = setInterval(function() { 	
 												$.ajax({
 													url: createURL("queryAsyncJobResult&jobId="+jobId),
 													dataType: "json",
@@ -8663,7 +8662,7 @@
 															return; //Job has not completed
 														}
 														else {
-															$("body").stopTime(timerKey);
+															clearInterval(enableVirtualRouterElementIntervalID); 
 															if (result.jobstatus == 1) {
 																//alert("configureVirtualRouterElement succeeded.");
 
@@ -8673,8 +8672,7 @@
 																	async: false,
 																	success: function(json) {
 																		var jobId = json.updatenetworkserviceproviderresponse.jobid;
-																		var timerKey = "updateNetworkServiceProviderJob_"+jobId;
-																		$("body").everyTime(2000, timerKey, function() {
+																		var enableVirtualRouterProviderIntervalID = setInterval(function() { 	
 																			$.ajax({
 																				url: createURL("queryAsyncJobResult&jobId="+jobId),
 																				dataType: "json",
@@ -8684,7 +8682,7 @@
 																						return; //Job has not completed
 																					}
 																					else {
-																						$("body").stopTime(timerKey);
+																						clearInterval(enableVirtualRouterProviderIntervalID); 
 																						if (result.jobstatus == 1) {
 																							//alert("Virtual Router Provider is enabled");
 
@@ -8714,8 +8712,7 @@
 																										async: false,
 																										success: function(json) {
 																											var jobId = json.updatenetworkserviceproviderresponse.jobid;
-																											var timerKey = "updateNetworkServiceProviderJob_"+jobId;
-																											$("body").everyTime(2000, timerKey, function() {
+																											var enableSecurityGroupProviderIntervalID = setInterval(function() { 	
 																												$.ajax({
 																													url: createURL("queryAsyncJobResult&jobId="+jobId),
 																													dataType: "json",
@@ -8725,7 +8722,7 @@
 																															return; //Job has not completed
 																														}
 																														else {
-																															$("body").stopTime(timerKey);
+																															clearInterval(enableSecurityGroupProviderIntervalID); 
 																															if (result.jobstatus == 1) {
 																																//alert("Security group provider is enabled");
 
@@ -8777,7 +8774,7 @@
 																														alert("updateNetworkServiceProvider failed. Error: " + errorMsg);
 																													}
 																												});
-																											});
+																											}, 3000); 		
 																										}
 																									});
 																								}
@@ -8858,7 +8855,7 @@
 																					alert("updateNetworkServiceProvider failed. Error: " + errorMsg);
 																				}
 																			});
-																		});
+																		}, 3000); 		
 																	}
 																});
 															}
@@ -8872,7 +8869,7 @@
 														alert("configureVirtualRouterElement failed. Error: " + errorMsg);
 													}
 												});
-											});
+											}, 3000); 		
 										}
 									});
 								}
@@ -8886,7 +8883,7 @@
 							alert("updatePhysicalNetwork failed. Error: " + errorMsg);
 						}
 					});
-				});
+				}, 3000); 		
 			}
 		});
 	};
@@ -9163,6 +9160,8 @@
 			dataType: "json",
 			async: false,
 			success: function(json) {
+			  nspMap = {}; //reset 
+			
 				var items = json.listnetworkserviceprovidersresponse.networkserviceprovider;	        
         if(items != null) {				
 					for(var i = 0; i < items.length; i++) {

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/a00c2168/ui/scripts/ui-custom/physicalResources.js
----------------------------------------------------------------------
diff --git a/ui/scripts/ui-custom/physicalResources.js b/ui/scripts/ui-custom/physicalResources.js
index 8acdec6..e531c7b 100644
--- a/ui/scripts/ui-custom/physicalResources.js
+++ b/ui/scripts/ui-custom/physicalResources.js
@@ -82,8 +82,7 @@
               dataType: 'json',
               success: function(json) {
                 var jid = json.uploadcustomcertificateresponse.jobid;
-                var timerKey = "uploadcustomcertificatejob_" + jid;
-                $("body").everyTime(2000, timerKey, function() {
+                var uploadCustomCertificateIntervalID = setInterval(function() { 	
                   $.ajax({
                     url: createURL("queryAsyncJobResult&jobId=" + jid),
                     dataType: "json",
@@ -93,7 +92,7 @@
                         return; //Job has not completed
                       }
                       else {
-                        $("body").stopTime(timerKey);
+                        clearInterval(uploadCustomCertificateIntervalID); 
                         if (result.jobstatus == 1) {
                           cloudStack.dialog.notice({ message: 'Update SSL Certiciate succeeded' });
                         }
@@ -108,7 +107,7 @@
                       $loading.remove();
                     }
                   });
-                });
+                }, 3000); 		
               },
               error: function(XMLHttpResponse) {
                 cloudStack.dialog.notice({ message: 'Failed to update SSL Certificate. ' + parseXMLHttpResponse(XMLHttpResponse) });

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/a00c2168/ui/scripts/zoneWizard.js
----------------------------------------------------------------------
diff --git a/ui/scripts/zoneWizard.js b/ui/scripts/zoneWizard.js
index d6d1d9f..5843001 100644
--- a/ui/scripts/zoneWizard.js
+++ b/ui/scripts/zoneWizard.js
@@ -17,6 +17,7 @@
 	var selectedNetworkOfferingHavingNetscaler = false;
   var returnedPublicVlanIpRanges = []; //public VlanIpRanges returned by API
   var configurationUseLocalStorage = false;
+	var skipGuestTrafficStep = false;
 
   // Makes URL string for traffic label
   var trafficLabelParam = function(trafficTypeID, data, physicalNetworkID) {
@@ -241,15 +242,35 @@
         if (args.data['network-model'] == 'Basic') {
           $('.setup-guest-traffic').addClass('basic');
           $('.setup-guest-traffic').removeClass('advanced');
-        } else {
+					skipGuestTrafficStep = false; //set value
+        } 
+				else {
           $('.setup-guest-traffic').removeClass('basic');
           $('.setup-guest-traffic').addClass('advanced');
+					
+					//skip the step if OVS tunnel manager is enabled	
+          skipGuestTrafficStep = false; //reset it before ajax call
+					$.ajax({
+						url: createURL('listConfigurations'),
+						data: {
+							name: 'sdn.ovs.controller'
+						},
+						dataType: "json",
+						async: false,
+						success: function(json) {					 
+							var items = json.listconfigurationsresponse.configuration; //2 entries returned: 'sdn.ovs.controller', 'sdn.ovs.controller.default.label'
+							$(items).each(function(){						  
+								if(this.name == 'sdn.ovs.controller') {
+									if(this.value == 'true' || this.value == true) {
+										skipGuestTrafficStep = true;
+									}
+									return false; //break each loop
+								}
+							});						
+						}
+					});	
         }
-
-        return args.data['network-model'] == 'Basic' ||
-          $.grep(args.groupedData.physicalNetworks, function(network) {
-            return $.inArray('guest', network.trafficTypes) > -1;
-          }).length;
+				return !skipGuestTrafficStep;
       },
 
       configureStorageTraffic: function(args) {
@@ -339,17 +360,19 @@
                 url: createURL('listHypervisors'),
                 async: false,
                 data: { listAll: true },
-                success: function(json) {
+                success: function(json) {								 
+									var items = json.listhypervisorsresponse.hypervisor;
+									var array1 = [];
+									if(items != null) {
+									  for(var i = 0; i < items.length; i++) {
+										  if(items[i].name == "XenServer")
+											  array1.unshift({id: items[i].name, description: items[i].name});
+											else
+											  array1.push({id: items[i].name, description: items[i].name});
+										}
+									}								  
                   args.response.success({
-                    data: $.map(
-                      json.listhypervisorsresponse.hypervisor,
-                      function(hypervisor) {
-                        return {
-                          id: hypervisor.name,
-                          description: hypervisor.name
-                        };
-                      }
-                    )
+                    data: array1
                   });
                 }
               });
@@ -1269,7 +1292,7 @@
 
           var returnedPhysicalNetworks = [];
 
-          if(args.data.zone.networkType == "Basic") {
+          if(args.data.zone.networkType == "Basic") { //Basic zone ***
             var requestedTrafficTypeCount = 2; //request guest traffic type, management traffic type
             if(selectedNetworkOfferingHavingSG == true && selectedNetworkOfferingHavingEIP == true && selectedNetworkOfferingHavingELB == true)
               requestedTrafficTypeCount++; //request public traffic type
@@ -1277,9 +1300,7 @@
 						//Basic zone has only one physical network
 						var array1 = [];	            
 						if("physicalNetworks" in args.data) {	//from add-zone-wizard		
-							array1.push("&name=" + todb(args.data.physicalNetworks[0].name));
-							if(args.data.physicalNetworks[0].isolationMethod != null && args.data.physicalNetworks[0].isolationMethod.length > 0)
-								array1.push("&isolationmethods=" + todb(args.data.physicalNetworks[0].isolationMethod));	
+							array1.push("&name=" + todb(args.data.physicalNetworks[0].name));							
 						}
 						else { //from quick-install-wizard
 						  array1.push("&name=PhysicalNetworkInBasicZone");
@@ -1289,9 +1310,8 @@
               url: createURL("createPhysicalNetwork&zoneid=" + args.data.returnedZone.id + array1.join("")),
               dataType: "json",
               success: function(json) {
-                var jobId = json.createphysicalnetworkresponse.jobid;
-                var timerKey = "createPhysicalNetworkJob_" + jobId;
-                $("body").everyTime(2000, timerKey, function(){
+                var jobId = json.createphysicalnetworkresponse.jobid; 
+								var createPhysicalNetworkIntervalID = setInterval(function() { 	
                   $.ajax({
                     url: createURL("queryAsyncJobResult&jobid=" + jobId),
                     dataType: "json",
@@ -1300,8 +1320,9 @@
                       if (result.jobstatus == 0) {
                         return; //Job has not completed
                       }
-                      else {
-                        $("body").stopTime(timerKey);
+                      else {                        
+												clearInterval(createPhysicalNetworkIntervalID); 
+												
                         if (result.jobstatus == 1) {
                           var returnedBasicPhysicalNetwork = result.jobresult.physicalnetwork;
                           var label = returnedBasicPhysicalNetwork.id + trafficLabelParam('guest', data);
@@ -1311,9 +1332,8 @@
                             url: createURL("addTrafficType&trafficType=Guest&physicalnetworkid=" + label),
                             dataType: "json",
                             success: function(json) {
-                              var jobId = json.addtraffictyperesponse.jobid;
-                              var timerKey = "addTrafficTypeJob_" + jobId;
-                              $("body").everyTime(2000, timerKey, function() {
+                              var jobId = json.addtraffictyperesponse.jobid;                              
+															var addGuestTrafficTypeIntervalID = setInterval(function() { 																
                                 $.ajax({
                                   url: createURL("queryAsyncJobResult&jobid=" + jobId),
                                   dataType: "json",
@@ -1322,8 +1342,9 @@
                                     if (result.jobstatus == 0) {
                                       return; //Job has not completed
                                     }
-                                    else {
-                                      $("body").stopTime(timerKey);
+                                    else {                                      
+																			clearInterval(addGuestTrafficTypeIntervalID); 
+																			
                                       if (result.jobstatus == 1) {
                                         returnedTrafficTypes.push(result.jobresult.traffictype);
 
@@ -1346,8 +1367,8 @@
                                     var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
                                     alert("Failed to add Guest traffic type to basic zone. Error: " + errorMsg);
                                   }
-                                });
-                              });
+                                });                              
+															}, 3000); 																
                             }
                           });
 
@@ -1357,9 +1378,8 @@
                             url: createURL("addTrafficType&trafficType=Management&physicalnetworkid=" + returnedBasicPhysicalNetwork.id + label),
                             dataType: "json",
                             success: function(json) {
-                              var jobId = json.addtraffictyperesponse.jobid;
-                              var timerKey = "addTrafficTypeJob_" + jobId;
-                              $("body").everyTime(2000, timerKey, function() {
+                              var jobId = json.addtraffictyperesponse.jobid;                             
+															var addManagementTrafficTypeIntervalID = setInterval(function() { 	
                                 $.ajax({
                                   url: createURL("queryAsyncJobResult&jobid=" + jobId),
                                   dataType: "json",
@@ -1368,8 +1388,9 @@
                                     if (result.jobstatus == 0) {
                                       return; //Job has not completed
                                     }
-                                    else {
-                                      $("body").stopTime(timerKey);
+                                    else {                                      
+																			clearInterval(addManagementTrafficTypeIntervalID); 
+																			
                                       if (result.jobstatus == 1) {
                                         returnedTrafficTypes.push(result.jobresult.traffictype);
 
@@ -1392,8 +1413,8 @@
                                     var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
                                     alert("Failed to add Management traffic type to basic zone. Error: " + errorMsg);
                                   }
-                                });
-                              });
+                                });                              
+															}, 3000); 	
                             }
                           });
 
@@ -1405,9 +1426,8 @@
                               url: createURL('addTrafficType&physicalnetworkid=' + returnedBasicPhysicalNetwork.id + '&trafficType=Storage' + label),
                               dataType: "json",
                               success: function(json) {
-                                var jobId = json.addtraffictyperesponse.jobid;
-                                var timerKey = "addTrafficTypeJob_" + jobId;
-                                $("body").everyTime(2000, timerKey, function() {
+                                var jobId = json.addtraffictyperesponse.jobid;                                
+																var addStorageTrafficTypeIntervalID = setInterval(function() { 	
                                   $.ajax({
                                     url: createURL("queryAsyncJobResult&jobid=" + jobId),
                                     dataType: "json",
@@ -1416,8 +1436,9 @@
                                       if (result.jobstatus == 0) {
                                         return; //Job has not completed
                                       }
-                                      else {
-                                        $("body").stopTime(timerKey);
+                                      else {                                        
+																				clearInterval(addStorageTrafficTypeIntervalID); 
+																				
                                         if (result.jobstatus == 1) {
                                           returnedTrafficTypes.push(result.jobresult.traffictype);
 
@@ -1440,8 +1461,8 @@
                                       var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
                                       alert("Failed to add Management traffic type to basic zone. Error: " + errorMsg);
                                     }
-                                  });
-                                });
+                                  });                                
+																}, 3000); 	
                               }
                             });
                           }
@@ -1452,9 +1473,8 @@
                               url: createURL("addTrafficType&trafficType=Public&physicalnetworkid=" + returnedBasicPhysicalNetwork.id + label),
                               dataType: "json",
                               success: function(json) {
-                                var jobId = json.addtraffictyperesponse.jobid;
-                                var timerKey = "addTrafficTypeJob_" + jobId;
-                                $("body").everyTime(2000, timerKey, function() {
+                                var jobId = json.addtraffictyperesponse.jobid;                               
+																var addPublicTrafficTypeIntervalID = setInterval(function() { 	
                                   $.ajax({
                                     url: createURL("queryAsyncJobResult&jobid=" + jobId),
                                     dataType: "json",
@@ -1463,8 +1483,9 @@
                                       if (result.jobstatus == 0) {
                                         return; //Job has not completed
                                       }
-                                      else {
-                                        $("body").stopTime(timerKey);
+                                      else {                                       
+																				clearInterval(addPublicTrafficTypeIntervalID); 
+																				
                                         if (result.jobstatus == 1) {
                                           returnedTrafficTypes.push(result.jobresult.traffictype);
 
@@ -1487,8 +1508,8 @@
                                       var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
                                       alert("Failed to add Public traffic type to basic zone. Error: " + errorMsg);
                                     }
-                                  });
-                                });
+                                  });                                
+																}, 3000); 	
                               }
                             });
                           }
@@ -1502,8 +1523,9 @@
                       var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
                       alert("createPhysicalNetwork failed. Error: " + errorMsg);
                     }
-                  });
-                });
+                  });                
+								}, 3000); 	
+								
               }
             });
           }
@@ -1518,9 +1540,8 @@
                 url: createURL("createPhysicalNetwork&zoneid=" + args.data.returnedZone.id + array1.join("")),
                 dataType: "json",
                 success: function(json) {
-                  var jobId = json.createphysicalnetworkresponse.jobid;
-                  var timerKey = "createPhysicalNetworkJob_" + jobId;
-                  $("body").everyTime(2000, timerKey, function(){
+                  var jobId = json.createphysicalnetworkresponse.jobid;                  
+									var createPhysicalNetworkIntervalID = setInterval(function() { 	
                     $.ajax({
                       url: createURL("queryAsyncJobResult&jobid=" + jobId),
                       dataType: "json",
@@ -1529,8 +1550,9 @@
                         if (result.jobstatus == 0) {
                           return; //Job has not completed
                         }
-                        else {
-                          $("body").stopTime(timerKey);
+                        else {                          
+													clearInterval(createPhysicalNetworkIntervalID); 
+													
                           if (result.jobstatus == 1) {
                             var returnedPhysicalNetwork = result.jobresult.physicalnetwork;
                             returnedPhysicalNetwork.originalId = thisPhysicalNetwork.id;
@@ -1561,9 +1583,8 @@
                                 url: createURL(apiCmd + label),
                                 dataType: "json",
                                 success: function(json) {
-                                  var jobId = json.addtraffictyperesponse.jobid;
-                                  var timerKey = "addTrafficTypeJob_" + jobId;
-                                  $("body").everyTime(2000, timerKey, function() {
+                                  var jobId = json.addtraffictyperesponse.jobid;                                 
+																	var addTrafficTypeIntervalID = setInterval(function() { 	
                                     $.ajax({
                                       url: createURL("queryAsyncJobResult&jobid=" + jobId),
                                       dataType: "json",
@@ -1572,8 +1593,9 @@
                                         if (result.jobstatus == 0) {
                                           return; //Job has not completed
                                         }
-                                        else {
-                                          $("body").stopTime(timerKey);
+                                        else {                                         
+																					clearInterval(addTrafficTypeIntervalID); 
+																					
                                           if (result.jobstatus == 1) {
                                             returnedTrafficTypes.push(result.jobresult.traffictype);
 
@@ -1599,8 +1621,8 @@
                                         var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
                                         alert(apiCmd + " failed. Error: " + errorMsg);
                                       }
-                                    });
-                                  });
+                                    });                                  
+																	}, 3000); 																		
                                 }
                               });
                             });
@@ -1614,8 +1636,8 @@
                         var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
                         alert("createPhysicalNetwork failed. Error: " + errorMsg);
                       }
-                    });
-                  });
+                    });                  
+									}, 3000); 	
                 }
               });
             });
@@ -1630,10 +1652,8 @@
             $.ajax({
               url: createURL("updatePhysicalNetwork&state=Enabled&id=" + args.data.returnedBasicPhysicalNetwork.id),
               dataType: "json",
-              success: function(json) {
-                //var jobId = json.updatephysicalnetworkresponse.jobid;
-                var updatePhysicalNetworkTimer = "updatePhysicalNetworkJob_" + json.updatephysicalnetworkresponse.jobid;
-                $("body").everyTime(2000, updatePhysicalNetworkTimer, function() {
+              success: function(json) { 
+								var enablePhysicalNetworkIntervalID = setInterval(function() { 	
                   $.ajax({
                     url: createURL("queryAsyncJobResult&jobId=" + json.updatephysicalnetworkresponse.jobid),
                     dataType: "json",
@@ -1642,8 +1662,9 @@
                       if (result.jobstatus == 0) {
                         return; //Job has not completed
                       }
-                      else {
-                        $("body").stopTime(updatePhysicalNetworkTimer);
+                      else {                        
+												clearInterval(enablePhysicalNetworkIntervalID); 
+												
                         if (result.jobstatus == 1) {
                           //alert("updatePhysicalNetwork succeeded.");
 
@@ -1686,10 +1707,8 @@
                             url: createURL("configureVirtualRouterElement&enabled=true&id=" + virtualRouterElementId),
                             dataType: "json",
                             async: false,
-                            success: function(json) {
-                              //var jobId = json.configurevirtualrouterelementresponse.jobid;
-                              var configureVirtualRouterElementTimer = "configureVirtualRouterElementJob_" + json.configurevirtualrouterelementresponse.jobid;
-                              $("body").everyTime(2000, configureVirtualRouterElementTimer, function() {
+                            success: function(json) {  
+															var enableVirtualRouterElementIntervalID = setInterval(function() { 	
                                 $.ajax({
                                   url: createURL("queryAsyncJobResult&jobId=" + json.configurevirtualrouterelementresponse.jobid),
                                   dataType: "json",
@@ -1698,8 +1717,9 @@
                                     if (result.jobstatus == 0) {
                                       return; //Job has not completed
                                     }
-                                    else {
-                                      $("body").stopTime(configureVirtualRouterElementTimer);
+                                    else {                                     
+																			clearInterval(enableVirtualRouterElementIntervalID); 
+																			
                                       if (result.jobstatus == 1) {
                                         //alert("configureVirtualRouterElement succeeded.");
 
@@ -1707,10 +1727,8 @@
                                           url: createURL("updateNetworkServiceProvider&state=Enabled&id=" + virtualRouterProviderId),
                                           dataType: "json",
                                           async: false,
-                                          success: function(json) {
-                                            //var jobId = json.updatenetworkserviceproviderresponse.jobid;
-                                            var updateNetworkServiceProviderTimer = "updateNetworkServiceProviderJob_" + json.updatenetworkserviceproviderresponse.jobid;
-                                            $("body").everyTime(2000, updateNetworkServiceProviderTimer, function() {
+                                          success: function(json) {    
+																						var enableVirtualRouterProviderIntervalID = setInterval(function() { 	
                                               $.ajax({
                                                 url: createURL("queryAsyncJobResult&jobId=" + json.updatenetworkserviceproviderresponse.jobid),
                                                 dataType: "json",
@@ -1719,8 +1737,9 @@
                                                   if (result.jobstatus == 0) {
                                                     return; //Job has not completed
                                                   }
-                                                  else {
-                                                    $("body").stopTime(updateNetworkServiceProviderTimer);
+                                                  else {                                                    
+																										clearInterval(enableVirtualRouterProviderIntervalID); 
+																										
                                                     if (result.jobstatus == 1) {
                                                       //alert("Virtual Router Provider is enabled");
 																											
@@ -1752,9 +1771,8 @@
                                                           url: createURL("updateNetworkServiceProvider&state=Enabled&id=" + securityGroupProviderId),
                                                           dataType: "json",
                                                           async: false,
-                                                          success: function(json) {
-                                                            var updateNetworkServiceProviderTimer = "asyncJob_" + json.updatenetworkserviceproviderresponse.jobid;
-                                                            $("body").everyTime(2000, updateNetworkServiceProviderTimer, function() {
+                                                          success: function(json) {                                                            
+																														var enableSecurityGroupProviderIntervalID = setInterval(function() { 	
                                                               $.ajax({
                                                                 url: createURL("queryAsyncJobResult&jobId=" + json.updatenetworkserviceproviderresponse.jobid),
                                                                 dataType: "json",
@@ -1763,8 +1781,9 @@
                                                                   if (result.jobstatus == 0) {
                                                                     return; //Job has not completed
                                                                   }
-                                                                  else {
-                                                                    $("body").stopTime(updateNetworkServiceProviderTimer);
+                                                                  else {                                                                   
+																																		clearInterval(enableSecurityGroupProviderIntervalID); 
+																																		
                                                                     if (result.jobstatus == 1) { //Security group provider has been enabled successfully      
 																																			stepFns.addNetscalerProvider({
 																																				data: args.data
@@ -1779,8 +1798,8 @@
                                                                   var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
                                                                   alert("failed to enable security group provider. Error: " + errorMsg);
                                                                 }
-                                                              });
-                                                            });
+                                                              });                                                            
+																														}, 3000); 	
                                                           }
                                                         });
                                                       }
@@ -1799,8 +1818,8 @@
                                                   var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
                                                   alert("failed to enable Virtual Router Provider. Error: " + errorMsg);
                                                 }
-                                              });
-                                            });
+                                              });                                            
+																						}, 3000); 	
                                           }
                                         });
                                       }
@@ -1813,8 +1832,8 @@
                                     var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
                                     alert("configureVirtualRouterElement failed. Error: " + errorMsg);
                                   }
-                                });
-                              });
+                                });                              
+															}, 3000); 	
                             }
                           });
                         }
@@ -1827,8 +1846,8 @@
                       var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
                       alert("updatePhysicalNetwork failed. Error: " + errorMsg);
                     }
-                  });
-                });
+                  });                
+								}, 3000); 	
               }
             });
           }
@@ -1839,9 +1858,8 @@
                 url: createURL("updatePhysicalNetwork&state=Enabled&id=" + thisPhysicalNetwork.id),
                 dataType: "json",
                 success: function(json) {
-                  var jobId = json.updatephysicalnetworkresponse.jobid;
-                  var timerKey = "updatePhysicalNetworkJob_"+jobId;
-                  $("body").everyTime(2000, timerKey, function() {
+                  var jobId = json.updatephysicalnetworkresponse.jobid;                  						
+									var enablePhysicalNetworkIntervalID = setInterval(function() { 									  
                     $.ajax({
                       url: createURL("queryAsyncJobResult&jobId="+jobId),
                       dataType: "json",
@@ -1850,8 +1868,9 @@
                         if (result.jobstatus == 0) {
                           return; //Job has not completed
                         }
-                        else {
-                          $("body").stopTime(timerKey);
+                        else {		
+													clearInterval(enablePhysicalNetworkIntervalID); 
+													
                           if (result.jobstatus == 1) {
                             //alert("updatePhysicalNetwork succeeded.");
 
@@ -1895,9 +1914,8 @@
                               dataType: "json",
                               async: false,
                               success: function(json) {
-                                var jobId = json.configurevirtualrouterelementresponse.jobid;
-                                var timerKey = "configureVirtualRouterElementJob_"+jobId;
-                                $("body").everyTime(2000, timerKey, function() {
+                                var jobId = json.configurevirtualrouterelementresponse.jobid;                                
+																var enableVirtualRouterElementIntervalID = setInterval(function() { 	
                                   $.ajax({
                                     url: createURL("queryAsyncJobResult&jobId="+jobId),
                                     dataType: "json",
@@ -1906,17 +1924,17 @@
                                       if (result.jobstatus == 0) {
                                         return; //Job has not completed
                                       }
-                                      else {
-                                        $("body").stopTime(timerKey);
+                                      else {                                        
+																				clearInterval(enableVirtualRouterElementIntervalID); 
+																				
                                         if (result.jobstatus == 1) { //configureVirtualRouterElement succeeded
                                           $.ajax({
                                             url: createURL("updateNetworkServiceProvider&state=Enabled&id=" + virtualRouterProviderId),
                                             dataType: "json",
                                             async: false,
                                             success: function(json) {
-                                              var jobId = json.updatenetworkserviceproviderresponse.jobid;
-                                              var timerKey = "updateNetworkServiceProviderJob_"+jobId;
-                                              $("body").everyTime(2000, timerKey, function() {
+                                              var jobId = json.updatenetworkserviceproviderresponse.jobid;                                             
+																							var enableVirtualRouterProviderIntervalID = setInterval(function() { 	
                                                 $.ajax({
                                                   url: createURL("queryAsyncJobResult&jobId="+jobId),
                                                   dataType: "json",
@@ -1925,8 +1943,9 @@
                                                     if (result.jobstatus == 0) {
                                                       return; //Job has not completed
                                                     }
-                                                    else {
-                                                      $("body").stopTime(timerKey);
+                                                    else {                                                      
+																											clearInterval(enableVirtualRouterProviderIntervalID); 
+																											
                                                       if (result.jobstatus == 1) { //Virtual Router Provider has been enabled successfully
                                                         advZoneConfiguredPhysicalNetworkCount++;
                                                         if(advZoneConfiguredPhysicalNetworkCount == args.data.returnedPhysicalNetworks.length) { //not call addPod() until all physical networks get configured
@@ -1944,8 +1963,8 @@
                                                     var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
                                                     alert("updateNetworkServiceProvider failed. Error: " + errorMsg);
                                                   }
-                                                });
-                                              });
+                                                });                                              
+																							}, 3000); 	
                                             }
                                           });
                                         }
@@ -1958,8 +1977,8 @@
                                       var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
                                       alert("configureVirtualRouterElement failed. Error: " + errorMsg);
                                     }
-                                  });
-                                });
+                                  });                                
+																}, 3000); 	
                               }
                             });
                           }
@@ -1972,8 +1991,8 @@
                         var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
                         alert("updatePhysicalNetwork failed. Error: " + errorMsg);
                       }
-                    });
-                  });
+                    });                  
+									}, 3000); 		
                 }
               });
             });
@@ -1988,9 +2007,8 @@
 							url: createURL("addNetworkServiceProvider&name=Netscaler&physicalnetworkid=" + args.data.returnedBasicPhysicalNetwork.id),
 							dataType: "json",
 							async: false,
-							success: function(json) {
-								var addNetworkServiceProviderTimer = "asyncJob_" + json.addnetworkserviceproviderresponse.jobid;
-								$("body").everyTime(2000, addNetworkServiceProviderTimer, function() {
+							success: function(json) {								
+								var addNetscalerProviderIntervalID = setInterval(function() { 	                  						
 									$.ajax({
 										url: createURL("queryAsyncJobResult&jobId=" + json.addnetworkserviceproviderresponse.jobid),
 										dataType: "json",
@@ -1999,8 +2017,9 @@
 											if (result.jobstatus == 0) {
 												return; //Job has not completed
 											}
-											else {
-												$("body").stopTime(addNetworkServiceProviderTimer);
+											else {												
+												clearInterval(addNetscalerProviderIntervalID); 
+												
 												if (result.jobstatus == 1) {
 													args.data.returnedNetscalerProvider = result.jobresult.networkserviceprovider;                       
 													stepFns.addNetscalerDevice({
@@ -2018,8 +2037,8 @@
 										}
 									});
 								});
-							}
-						});
+							}						
+						}, 3000); 								
 						//add netscaler provider (end)
 					}
 					else { //selectedNetworkOfferingHavingNetscaler == false
@@ -2125,9 +2144,8 @@
           $.ajax({
             url: createURL("addNetscalerLoadBalancer" + array1.join("")),
             dataType: "json",
-            success: function(json) {
-              var addNetscalerLoadBalancerTimer = "asyncJob_" + json.addnetscalerloadbalancerresponse.jobid;
-              $("body").everyTime(2000, addNetscalerLoadBalancerTimer, function() {
+            success: function(json) {             
+							var addNetscalerLoadBalancerIntervalID = setInterval(function() { 								
                 $.ajax({
                   url: createURL("queryAsyncJobResult&jobid=" + json.addnetscalerloadbalancerresponse.jobid),
                   dataType: "json",
@@ -2136,18 +2154,17 @@
                     if(result.jobstatus == 0) {
                       return;
                     }
-                    else {
-                      $("body").stopTime(addNetscalerLoadBalancerTimer);
+                    else {                      
+											clearInterval(addNetscalerLoadBalancerIntervalID); 
+											
                       if(result.jobstatus == 1) {
                         args.data.returnedNetscalerProvider.returnedNetscalerloadbalancer = result.jobresult.netscalerloadbalancer;
 
                         $.ajax({
                           url: createURL("updateNetworkServiceProvider&state=Enabled&id=" + args.data.returnedNetscalerProvider.id),
                           dataType: "json",
-                          success: function(json) {
-                            var updateNetworkServiceProviderTimer = "asyncJob_" + json.updatenetworkserviceproviderresponse.jobid;
-
-                            $("body").everyTime(2000, updateNetworkServiceProviderTimer, function() {
+                          success: function(json) {                            
+														var enableNetscalerProviderIntervalID = setInterval(function() { 	
                               $.ajax({
                                 url: createURL("queryAsyncJobResult&jobid=" + json.updatenetworkserviceproviderresponse.jobid),
                                 dataType: "json",
@@ -2156,8 +2173,9 @@
                                   if(result.jobstatus == 0) {
                                     return;
                                   }
-                                  else {
-                                    $("body").stopTime(updateNetworkServiceProviderTimer);
+                                  else {                                    
+																		clearInterval(enableNetscalerProviderIntervalID); 
+																		
                                     if(result.jobstatus == 1) {																		 
 																			stepFns.addGuestNetwork({
 																				data: args.data
@@ -2168,8 +2186,8 @@
                                     }
                                   }
                                 }
-                              });
-                            });
+                              });                            
+														}, 3000); 															
                           },
                           error: function(XMLHttpResponse) {
                             var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
@@ -2182,8 +2200,8 @@
                       }
                     }
                   }
-                });
-              });
+                });              
+							}, 3000); 								
             },
             error: function(XMLHttpResponse) {
               var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
@@ -2424,7 +2442,14 @@
           return true;
         },
 
-        configureGuestTraffic: function(args) {
+        configureGuestTraffic: function(args) {		
+					if(skipGuestTrafficStep == true) {
+					  stepFns.addCluster({
+							data: args.data
+						});		
+            return;			
+					}					
+									
           message(dictionary['message.configuring.guest.traffic']);  
 
           if(args.data.returnedZone.networktype == "Basic") {		//create an VlanIpRange for guest network in basic zone
@@ -2488,9 +2513,8 @@
                   url: createURL("updatePhysicalNetwork&id=" + returnedId  + "&vlan=" + todb(vlan)),
                   dataType: "json",
                   success: function(json) {
-                    var jobId = json.updatephysicalnetworkresponse.jobid;
-                    var timerKey = "asyncJob_" + jobId;
-                    $("body").everyTime(2000, timerKey, function(){
+                    var jobId = json.updatephysicalnetworkresponse.jobid;                    
+										var updatePhysicalNetworkVlanIntervalID = setInterval(function() { 											
                       $.ajax({
                         url: createURL("queryAsyncJobResult&jobid=" + jobId),
                         dataType: "json",
@@ -2499,8 +2523,9 @@
                           if(result.jobstatus == 0) {
                             return;
                           }
-                          else {
-                            $("body").stopTime(timerKey);
+                          else {                            
+														clearInterval(updatePhysicalNetworkVlanIntervalID); 
+														
                             if(result.jobstatus == 1) {
                               updatedCount++;
                               if(updatedCount == physicalNetworksHavingGuestIncludingVlan.length) {
@@ -2518,8 +2543,8 @@
                           var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
                           error('configureGuestTraffic', errorMsg, { fn: 'configureGuestTraffic', args: args });
                         }
-                      });
-                    });
+                      });                    
+										}, 3000); 	
                   }
                 });
               });