  var Temp = [];
  var paramString = location.search;
  paramString = paramString.replace('?','');

  var Params = [];
  var urlParams = [];
  urlParams = paramString.split("&");

  for(var i=0;i<urlParams.length;i++){
    Temp = urlParams[i].split("=");
    Params[Temp[0]] = Temp[1];
  }

  var addcontract;
  var template = Params['template'];
  var productCode = Params['productCode'];
  var strategyType = Params['strategyType'];
  var leadMonth = Params['leadMonth'];
  var selectedProduct=Params['selectedProduct'];
  var category = Params['category']; 
  var contentTitle = Params['contentTitle']; 
  //var selectedTab = Params['selected_tab'];
  var pathName = location.pathname; 
  if (pathName =="/EFXweb/index.html"|| pathName=="/EFXweb/help.html" || pathName =="/EFXweb/contact.html"  ){
      var selectedTab = "fx_tab"}
  else{
     var selectedTab = Params['selected_tab'];
  } 
  var sortby = Params['sortby'];

  var refrshInterval = 5;
  var numOfAjaxCalls = 0;
  var timer = null;
  var timeStamp = "";
  var exchange = "";
  var returnContracts = "";
  var headerPath = "headers/newNav.html";
    
  var stopRefreshEnabled;
  var stopRefreshAfterMinutes;
  var stopRefreshTimerID;

  var THROTTLE_BACK_INTERVAL = 30000;
  var XSLT_TIMEOUT_INTERVAL = 60000;
  var MARKET_DATA_TIMEOUT_INTERVAL = 10000;
   
  function initialRequest(){
    var url = "md/dataSuite/template/UNKNOWN/productCode/UNKNOWN";
    if(productCode) {
      url = "md/dataSuite/template/" + template + "/productCode/" + productCode;
    } else if (category) {
      url = "md/dataSuite/template/" + template + "/category/" + category;
    }
    var separator='?';
    
    if (strategyType) { 
      url += separator+"strategyType="+strategyType; 
      separator='&';
    } 
    
    if (leadMonth) {
      url += separator+"leadMonth="+leadMonth;
      separator='&';
    }
    if (selectedProduct) {
      url += separator+"selectedProduct="+selectedProduct;
      separator='&';
    }

    if (contentTitle) {
      url += separator+"contentTitle="+contentTitle;
      separator='&';
    }
    
    if (sortby) {
        url += separator+"sort="+sortby;
        separator='&';
      }
    
    
    //alert('initialRequest (post-appendParams) url:'+url);
    
    //Use synchronous ajax call to fetch page
    try{
      $.ajax(
        {
          async: false,            
          type: "GET",
          url: url,
          dataType: "xml",
          success: function(response){
               var xmlString = getXmlFromResponse(response);
               handleResponse(response, xmlString);
             },
          error: function(xhr, status, error) {
              drawErrorPage(xhr,status);
              drawPageHeader(headerPath); 
            }
         }          
      );
    } catch(e){}
  }
  
  function handleResponse(response, xmlString){

    $(response).find('datasuite').each(function(){         
      var xslt                = $(this).find('xslt').text();      
      returnContracts         = $(this).find('return_back_contracts').text();
      exchange                = $(this).find('exchange').text();
      stopRefreshEnabled      = $(this).find('stop_refresh_enabled').text();
      stopRefreshAfterMinutes = $(this).find('stop_refresh_after_min').text();
      refrshInterval          = $(this).find('refrsh_interval').text();
      refrshInterval          = refrshInterval * 1000;
      pageTitle               = $(this).find('pageTitle').text();

      //Use synchronous ajax call to fetch page
      try{
        $.ajax(
          {
            url: "mvc/xsltTransformer.do",
            async: false,            
            type: "POST",
            data: ({ xsltUrl: xslt , XML: xmlString }),
            dataType: "html",
            timeout: XSLT_TIMEOUT_INTERVAL,
            success: function(data){ 
                       drawPage(data);
                       showAssetClassLink();
                     }          
           }          
        );
      } catch(e){}

      //OPTIONS PAGE SCROLL TO AT THE MONEY PRICE
      try{
        //Make sure we know ATM price, that we are on the Options page, and that we have scrollable 
        atTheMoneyStrikePriceCode = $(this).find('atTheMoneyStrikePriceCode').text(); 
        if (atTheMoneyStrikePriceCode) {
          if($("div.fix_options_table_header").length > 0 && $('.scrollable')){  
            //since ATM price contains '.' which is special to jQuery build escaped string
            var scrollTargetId = '#'+atTheMoneyStrikePriceCode.replace('.','\\\.')+'_strike_price';
            if($(scrollTargetId).length > 0){
              //$(scrollTargetId)[0].style.background = 'orange';
              $('.scrollable').scrollTo($(scrollTargetId), 0,{offset: {top:-199}}); //offset to center in window
            }
          }
        }
      } catch(e){}
 
      drawPageHeader(headerPath);

      //Set page title and make google analytics call
      try{
        if (pageTitle) {
          pageTitle = document.title+' - '+pageTitle;
          pageTracker._trackPageview(pageTitle);
          document.title=pageTitle;
        } 
      } catch(e){}
    });

    //catch empty contracts for ICS, and OPTIONS
    if (returnContracts != "$0" && returnContracts != "") {
      startUpdatingData();
    }
  }

  function showAssetClassLink(){
    if($('#assetClassLink') && document.getElementById('assetClassLink')){
      $('#assetClassLink').show();
      document.getElementById('assetClassLink').href = gup('assetClassURL');
    }
  }
    
  function sendRequest(){
    if(timeStamp=='null' || timeStamp==""){
      timeStamp=0;
    }
    
    var serverHandler;
	if(template == 'opt' || template == 'optd')
	  	serverHandler = 'OPT';
	else
	   	serverHandler = 'FUT';

	var dynamicRestfull = "md/dataSuite/marketdata/exchange/" + exchange + "/" + serverHandler;
 
    //Make sure don't queue up more data requests while wait on sync data call
    window.clearInterval(timer);
    
    //Use a synchronous ajax call to fetch json
    try{
      $.ajax(
        {
          url: dynamicRestfull,
          async: true,            
          type: "POST",
          data: ({ timeStamp: timeStamp , contracts: returnContracts }),
          dataType: "json",
          timeout: MARKET_DATA_TIMEOUT_INTERVAL,
          success: processResponse,
          error: throttleBack
         }          
      );
    } catch(e){}
    
    numOfAjaxCalls++;    
  }
      
  //Process the response that we extract from the server's RESTful call
  function processResponse(jsonObj){   
    timeStamp = jsonObj.dataSuiteResponse.timeStamp;

    var marketData = jsonObj.dataSuiteResponse.dynamicMarketData; 
    if(marketData){
      var count = marketData.entry.length;
      //var start = new Date();

      for(var i=0;i<count;i++){

        var key = marketData.entry[i].key;
        key = key.replace(/ /g, '_');

        var elementToUpdate=document.getElementById(key); 
        if(elementToUpdate){
          var value = marketData.entry[i].value;
          value = formatValue(key,value);
          elementToUpdate.innerHTML = value;
          elementToUpdate.style.color = getStyleColorForValue(key,value); 
          elementToUpdate.style.textAlign = getStyleAlignmentForValue(key,value); 
          //elementToUpdate.style.background = 'orange';
        }
      }
      //var end = new Date();
      //alert('elapsed:'+(end.getTime() - start.getTime()));
      DoTH();
    }

    var tradeDateElement=document.getElementById('tradeDate'); 
    if(tradeDateElement){
      if (jsonObj.dataSuiteResponse.tradeDate && jsonObj.dataSuiteResponse.tradeDate.length > 0) {
         tradeDateElement.innerHTML = jsonObj.dataSuiteResponse.tradeDate; 
      }
    }
    //must restore interval of sendRequest() calls
    throttleUp();
  }

  function NewPage(pc,st,lm,tplt,cat,sp){
    var url = "dataSuite.html?template="+tplt;
    if (pc && pc != '') { url += "&productCode="+pc; }
    if (lm && lm != '') { url += "&leadMonth="+lm; }

    if (st && st != '') { url += "&strategyType="+st; }
    if (cat && cat != '') { url += "&category="+ encodeURIComponent(cat); }
    if (sp && sp != '') { url += "&selectedProduct="+sp; }
    url += "&assetClassURL=" + gup('assetClassURL');
    window.location.href = url;
  }

  function NewPageForNewProduct(pc,selectedProd,st,lm,tplt){
    window.location.href = "dataSuite.html?template="+tplt+"&productCode="+
      pc+"&leadMonth="+ lm +"&strategyType="+ st+"&selectedProduct="+ selectedProd;
  }
  function NewProduct(url){
    window.location.href = url;
  }

  function formatValue(key,value){
    if (value == null || !value) return '-';

    //cast to string
    value = value+'';

    if (value == '' || value == '-') return value;
    if (value == '0') return value+'&nbsp;&nbsp;';

    var NUM_DISPLAY_DECIMALS=3;    
    //if fractional pricing
    if (value.indexOf('\'') > -1) {
      return formatPricingValue(key,value,'\'',NUM_DISPLAY_DECIMALS);
    } 
    //else default to decimal pricing
    return formatPricingValue(key,value,'.',NUM_DISPLAY_DECIMALS);
  }

  function formatPricingValue(key,value,radix_character,NUM_DISPLAY_DECIMALS){
    //.xx ():  prepend leading zero e.g 0.xx
    if (value.charAt(0) == radix_character ) {
      value = '0'+value;
    }
    //-.xx:  prepend leading zero e.g. -0.xx
    else if (value.charAt(0) == '-' &&  value.charAt(1) == radix_character) {
      value = '-0'+value.substring(1);
    }
    //+.xx:  prepend leading zero e.g. +0.xx
    else if (value.charAt(0) == '+' &&  value.charAt(1) == radix_character) {
      value = '+0'+value.substring(1);
    }

    if (key.indexOf('_size') > -1){
      return value;
    }
    
    var indicatorPadding = '&nbsp;&nbsp;';

    if (key.indexOf('_volume') > -1){
      return value+indicatorPadding;
    }

    var lastChar = value.charAt(value.length-1);

    //cheap test for whether last character (the indicator character) is an 
    // alphabet-character or not
    if (lastChar.toLowerCase() != lastChar.toUpperCase()) {
      //yes it was alpha - build new indicator padding string, and chop indicator 
      // off original value string
      indicatorPadding = '&nbsp;'+lastChar.toLowerCase();
      value = value.substring(0,value.length-1);
    }

    return value + indicatorPadding;
  }
    
  function getStyleColorForValue(key,value){
    
    if (value == '-' || value =='0' || value == '') 
      return 'black';

    if (key.indexOf('_net_change') > -1){ 
      if (value.charAt(0) == '-') 
        return 'red';
      else if (value.charAt(0) == '+') 
        return 'green';
    }
    if (key.indexOf('_bid_size') > -1 || key.indexOf('_bid_price') > -1){ 
      return 'blue';
    }
    if (key.indexOf('_ask_size') > -1 || key.indexOf('_ask_price') > -1){ 
      return 'red';
    }
    return 'black';
  }
  
  function getStyleAlignmentForValue(key,value){
    if (value == '-') {
      return 'center';
    }
    if (key.indexOf('_ask_size') > -1 || key.indexOf('_ask_price') > -1){ 
      return 'left';
    }
    return 'right';
  }

  //clear refreshing the screen
  function checkout(){
    //clearTable(dash); 
    clearInterval(timer);
    timer=null; 
  }
  
  function stopUpdatingData(){
    showPopWin('refreshIsOff.html', 350, 150, startUpdatingData);
    checkout();
  }
  
  function startUpdatingData(){
    if ( timer == null ){
      timer = window.setInterval('sendRequest()',refrshInterval);
    } 
    if (stopRefreshEnabled == '1'){
      clearInterval(stopRefreshTimerID);
      stopRefreshTimerID = window.setTimeout('stopUpdatingData()',stopRefreshAfterMinutes * 60 * 1000);
    }
  }
  
  function throttleBack(){
    window.clearInterval(timer);
    timer = window.setInterval('sendRequest()',THROTTLE_BACK_INTERVAL);
  }
  function throttleUp(){
    window.clearInterval(timer);
    timer = window.setInterval('sendRequest()',refrshInterval);
  }