var windowObjectReference;
var strWindowFeatures = "menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes";
var accountGroupsMap = new Map();

///////  HASH MAP //////////////////////

function Map() {    
  // Keys    
     this.keyArray = new Array(); 
  // Values  
     this.valArray = new Array(); 
  // methods    
     this.put = put;    
     this.get = get;    
     this.size = size;      
     this.clear = clear;    
     this.keySet = keySet;    
     this.valSet = valSet;    
     this.showMe = showMe;   
  // returns a string with all keys and values in map.    
     this.findIt = findIt;    
     this.remove = remove;
} 

function put( key, val ) {    
  var elementIndex = this.findIt( key );        
  if( elementIndex == (-1) ) {        
      this.keyArray.push( key );        
      this.valArray.push( val );    
  } else {        
      this.valArray[ elementIndex ] = val;    }
}

function get( key ) {    
   var result = null;    
   var elementIndex = this.findIt( key );    
   if( elementIndex != (-1) ) {           
       result = this.valArray[ elementIndex ];    
   }          
   return result;
}

function remove( key ) {    
   var result = null;    
   var elementIndex = this.findIt( key );    
   if( elementIndex != (-1) ) {        
       this.keyArray = this.keyArray.removeAt(elementIndex);
       this.valArray = this.valArray.removeAt(elementIndex);    
   }          
   return ;
}

function size() {    
   return (this.keyArray.length);  
}

function clear() {    
   for( var i = 0; i < this.keyArray.length; i++ ) {
        this.keyArray.pop(); this.valArray.pop();       
   }
}

function keySet() {
    return (this.keyArray);
}

function valSet() {
    return (this.valArray);   
}

function showMe(){    
    var result = "";        
    for( var i = 0; i < this.keyArray.length; i++ ) {  
         result += "Key: " + this.keyArray[ i ] + "\tValues: " + this.valArray[ i ] + "\n";
    }    
    return result;
}

function findIt( key ) {
    var result = (-1);    
    for( var i = 0; i < this.keyArray.length; i++ ) {
         if( this.keyArray[ i ] == key ) {
             result = i;            
             break;        
         }    
    }    
    return result;
}

function removeAt( index ) {  
   var part1 = this.slice( 0, index);  
   var part2 = this.slice( index+1 );  
   return( part1.concat( part2 ) );
}

Array.prototype.removeAt = removeAt;

/////END OF HASH MAP ///////////////

String.prototype.endsWith = function(str) {return (this.match(str+"$")==str)}

String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}


function getObject(name) {
  var pageElement;

  if (document.getElementById)  {
      pageElement = document.getElementById(name);
  } else if (document.all)  {
    pageElement = document.all[name];

  }
  else if (document.layers)  {
      pageElement = document.layers[name];
  }
  return pageElement;
}

function documentNameOnChange(documentNameSelect) {
    var submissionForm = document.getElementById("submissionForm");
    var editionIdLabel = document.getElementById("editionIdLabel");

    if (documentNameSelect.value != "standardPriceFile") {
        submissionForm.editionId.disabled = true;
        submissionForm.editionId.style.display = 'none';
        setElementContent(editionIdLabel, " ");

    } else {
        submissionForm.editionId.disabled = false;
        submissionForm.editionId.style.display = 'block';
        setElementContent(editionIdLabel, "Edition: ");
    }
}

function processUploadForm(form) {
   var filename = form.filename.value;
   var filename_extension = filename.substring(filename.lastIndexOf('.')+1, filename.length).toLowerCase();
   if (filename.length < 5) {
       alert('Invalid filename');
       return false;
   } else if (filename_extension != 'xls' && filename_extension != 'csv' && filename_extension != 'zip' && filename_extension != 'ppt') {
       alert('Invalid file extension. Please only upload csv, xls, zip or ppt files.');
       return false;
   }
   return true;
}

function logOut() {
    document.location.href = "dosignout";
}


function changeImage(imagePlaceHolder, image) {
   var placeHolder = getObject(imagePlaceHolder);
   placeHolder.setAttribute('src', image);
}

function changeAppButtonImage(buttonId, greyed_out, imageURL ) {
   var button = getObject(buttonId);

   if (greyed_out != '_greyed_out') {
       button.setAttribute('src', imageURL);
   }

}


function changeMenuState (ul_id, state) {
   var menuElement = getObject(ul_id);
   if (state == 'over') {
       menuElement.style.display = 'block';
   } else if (state == 'out') {
       menuElement.style.display = 'none';
   }

}

function menuItemMouseEvent(element, state, level) {
  if (level == 'top') {
      //element.style.color = (state == 'over' ? 'yellow' : 'white');
  } else {
      element.style.background = (state == 'over' ? '#8caed6' : '#42769B');
  }
}

function setActiveZoneLink(menuIndex) {
  try {
       var element = getObject('zonelink'+menuIndex);
       element.style.color = '#FFFF00';
 } catch(e) {
   //empty catch by design
 }
}


function redirect(url) {
  document.location.href = url;
}


function getDate() {
  var now= new Date();
  now.setTime(now.getTime() + 365 * 24 * 60 * 60 * 1000);

  return now;
}


function setNewUsernameCookie(form) {
    var username = getUsernameCookie();

    if (username == '' || username.length > 0) {
       if (form.remember_me.checked == true) {
             setCookie("deltapointUsername", form.username.value, getDate());
         }
      }
}

function setBookmarkCookie(url) {
  var bookmark = getBookmarkCookie();

  if (bookmark == '' || bookmark.length > 0) {
    setCookie("bookmarkCookie", url, getDate());
  }
}

function setUsernameField() {

  try {
       document.signin.username.value = getUsernameCookie();
  } catch (e) {
     //empty catch by design
  }
  if (document.signin != null) {
      if (document.signin.username.value.length > 0) {
          document.signin.unencryptedPassword.focus();
      } else {
          document.signin.username.focus();
      }
  }
}

function getUsernameCookie() {

  var username_cookie = '';
  try {
       username_cookie = getCookie("deltapointUsername");

  } catch (e) {
     //empty catch by design
  }
  return username_cookie;
}

function getBookmarkCookie() {

  var bookmark_cookie = '';
  try {
       bookmark_cookie = getCookie("bookmarkCookie");

  } catch (e) {
     //empty catch by design
  }
  return bookmark_cookie;
}


function getCookie(cookieName) {

  var cookieValue = '';
  var posName = document.cookie.indexOf(escape(cookieName) + '=');

  if (posName != -1) {
    var posValue = posName + (escape(cookieName) + '=').length;
    var endPos = document.cookie.indexOf(';', posValue);

    if (endPos != -1) cookieValue = unescape(document.cookie.substring(posValue, endPos));

    else cookieValue = unescape(document.cookie.substring(posValue));
  }

  return (cookieValue);
}


function setCookie(cookieName, cookieValue, expires, path, domain, secure) {

  document.cookie =

    escape(cookieName) + '=' + escape(cookieValue)

    + (expires ? '; expires=' + expires.toGMTString() : '')

    + (path ? '; path=' + path : '')

    + (domain ? '; domain=' + domain : '')

    + (secure ? '; secure' : '');

}

function setEmailAlertCheckBoxes(id) {
  var checkBox = document.getElementById(id);
  checkBox.checked = true;
}

function setBoldUploadDocumentTitle(index, cellId) {
  var radioGroupLength = document.forms["submissionForm"].submissionRadioButton.length;
  if (document.forms["submissionForm"].submissionRadioButton[index].checked == true) {
       document.getElementById('radioCell'+index).style.fontWeight  = 'bold';
       for (i = 0; i < radioGroupLength; i++) {
            if (document.forms["submissionForm"].submissionRadioButton[i].checked == false) {
                document.getElementById('radioCell'+i).style.fontWeight  = 'normal';
            }
       }
   }


}

function isFormEdtionSelectVisible(editionShown) {
  var editionSelectCell = document.getElementById('editionSelectCell');
  var editionIdLabel = document.getElementById('editionIdLabel'); 
  if (editionShown) {
      editionSelectCell.style.visibility = 'visible';
      editionIdLabel.style.visibility = 'visible';
  } else {
      editionSelectCell.style.visibility = 'hidden';
      editionIdLabel.style.visibility = 'hidden';
  }
}

function setCheckboxBoldTitle(checkbox, cellId) {
  if (checkbox.checked == true) {
      document.getElementById(cellId).style.fontWeight = 'bold';
  } else {
      document.getElementById(cellId).style.fontWeight = 'normal';
  }
}



function toolButtonMouseOver(/* ToolButton */ toolButton) {

    if(!menuing) {
        toolButton.className = "toolButton toolButtonMouseOver";
    }
    else {
      return false;
    }
}

function toolButtonOnMouseOut(/* ToolButton */ toolButton) {
    toolButton.className='toolButton toolButtonMouseOut';
}

function backButtonOnClick(/* ToolButton */ toolButton) {
   history.back();
}

function forwardButtonOnClick(/* ToolButton */ toolButton) {
    history.forward();
}


function changeImage(imagePlaceHolder, image) {
   var placeHolder = getObject(imagePlaceHolder);
   placeHolder.setAttribute('src', image);
}

function getObject(name) {
	var pageElement;

  	if (document.getElementById)  {
    	pageElement = document.getElementById(name);
  	} else if (document.all)  {
    	pageElement = document.all[name];
  	} else if (document.layers)  {
     	pageElement = document.layers[name];
  	}
  	return pageElement; 
}

function openNewTab(url, name, event) {
	if (event != null && event.ctrlKey) {
  		name = '_blank';
  	}

	window.open(url, name);

  	return false;
}

function enableCheckedBoxesOnRefresh(valuesMap) {
  var keySet = valuesMap.keySet();
  
  for (var i = 0; i < keySet.length; i++) { 
       prerequisiteId = keySet[i].substring(keySet[i].indexOf('_')+1, keySet[i].length);
       if (document.getElementById(keySet[i]).checked && prerequisiteId == 0) { 
           showPrerequisiteOnClick(valuesMap, valuesMap.get(keySet[i]), true);  
       }
  }
  
  return true;
   
}

function showPrerequisiteOnClick(valuesMap, groupId, isChecked) {
   var keySet = valuesMap.keySet();
   
   for (var i = 0; i < keySet.length; i++) {
        prerequisiteId = keySet[i].substring(keySet[i].indexOf('_')+1, keySet[i].length); 
        if (isChecked) {
            if (prerequisiteId == groupId) {
                document.getElementById(keySet[i]).disabled = false;
            }
        } else {
            if (prerequisiteId == groupId) {
                document.getElementById(keySet[i]).style.fontWeight = 'normal';
                document.getElementById(keySet[i]).disabled = true;
                document.getElementById(keySet[i]).checked = false;
                document.getElementById('checkboxCell'+i).style.fontWeight = 'normal';
            }
        }
   }
   return true;
}

function addAccountGroup(key, value) {
  accountGroupsMap.put(key, value);
}

function confirmAction(message , url) {
  var isTrue = confirm (unescape(message) + " ? ");
  if (isTrue) {
      document.location.href = url;
      return true;
  } else {
      return false;
  }
}

function landingpageFilterButtonOnClick(/* ToolButton */ toolButton) {
	showModifiers();
}

function showModifiers() {
    getObject("landingpage_modifier").className = "showModifiers";
}

function hideModifiers() {
    getObject("landingpage_modifier").className = "hideModifiers";
}

function setElementContent(element, value) {
	 if (document.all) {
		  element.innerText = value;
	  } else {
		  element.textContent = value;
	  }
}

function getElementContent(element) {
	  var result;
	  if (document.all) {
	     result = element.innerText;
	  } else {
	     result = element.textContent;
	  }
	  return result;
}


document.include = function (url) {
	 if ('undefined' == typeof(url)) return false;
	 var p,rnd;
	 if (document.all){
	   // For IE, create an ActiveX Object instance
	   p = new ActiveXObject("Microsoft.XMLHTTP");
	 }
	 else {
	   // For mozilla, create an instance of XMLHttpRequest.
	   p = new XMLHttpRequest();
	 }
	 // Prevent browsers from caching the included page
	 // by appending a random  number (optional)
	 rnd = Math.random().toString().substring(2);
	 url = url.indexOf('?')>-1 ? url+'&rnd='+rnd : url+'?rnd='+rnd;
	 // Open the url and write out the response
	 p.open("GET",url,false);
	 p.send(null);
	 document.write( p.responseText );
}


