/* ********** NEW FUNCTIONS BEGIN ******************** */

/***** SIMPLE BROWSER DETECTION *****/
nua=navigator.userAgent;
op=(nua.indexOf('Opera')!=-1);
ie=((nua.indexOf('MSIE')!=-1)&&!op);

var dhtmlTableRowParam = 'table-row';
var dhtmlTableCellParam = 'table-cell';
if (ie) {
  dhtmlTableRowParam = 'block';
  dhtmlTableCellParam = 'block';
}


/* ******  POLICY MODULE FUNCTIONS BEGIN ********* */
function showDefaultTab() {
  switch(defaultTab) {
    case 1:
     //show Notes tab
     policyModuleShowNotes();
     break;
    case 2:
     //show Info tab
     policyModuleShowInfo();
     break;
    default:policyModuleHideAll();
   }
}


function tokenize(csvIn)
{
        var tokArray = Array();
        var csvTmp = csvIn + ",";
        var tokCount = 0;
        for(tokCount = 0; csvTmp.length>0; tokCount++){
                var token = csvTmp.substring(0, csvTmp.indexOf(","));
                tokArray[tokCount] = token;
                csvTmp = csvTmp.substring(csvTmp.indexOf(",") + 1, csvTmp.length); 
        }        
        return tokArray;
}


function preSelectEntries(csvString) {
    if (document.forms[0].selectedItems == null) {
        return;
    }

    var tokens = tokenize(csvString);    
    var length = 0;
    if (document.forms[0].selectedItems.length) {
        // There are more than 1 items
        length = document.forms[0].selectedItems.length;
    } else {
        // There is only one item.
        length = 1;
    }

    for (var i=0; i<length; i++){
        var key;
        if (document.forms[0].selectedItems[i]) {
            key = document.forms[0].selectedItems[i].value;
        } else {
            key = document.forms[0].selectedItems.value;
        }
        for (var tokIndex=0; tokIndex<tokens.length; tokIndex++){
            if (key == tokens[tokIndex]){
                if (document.forms[0].selectedItems[i]) {
                    document.forms[0].selectedItems[i].checked =  true;
                } else {
                    document.forms[0].selectedItems.checked =  true;
                }
            }
        }
    }
}


function showDefaultListTab() {
  switch(defaultTab) {
    case 1:
     //show Notes tab
     policyModuleListShowNotes();
     break;
    case 2:
     //show Info tab
     policyModuleListShowInfo();
     break;
   }
}

function policyModuleListShowNotes(isTags) {
  //Change style of selected tab
  var dom = findDOM('infoHeader',0);
  dom.className = 'listelement-taboff';
  
  var dom = findDOM('notesHeader',0);
  dom.className = 'listelement-tabon';
  
  //Hide subheaders
  var dom = findDOM('infoSubHeader',1);
  dom.display='none';
  
  //Show relevant tab values
  var notesID;
  var infoaID;
  var infobID;

  if (document.forms[0].selectedItems == null) {
    return;
  }

  if (document.forms[0].selectedItems.length == null) {

    // there is only one item in the list
    var dom = findDOM("notes1",1);
    dom.display = dhtmlTableCellParam;

    var dom = findDOM("infoa1",1);
    dom.display = 'none';

    var dom = findDOM("infob1",1);
    dom.display = 'none';

  } else {

    // there are more than one items in the list
    for (var i=1; i<=(document.forms[0].selectedItems.length); i++) {
      notesID = "notes" + i;
      infoaID = "infoa" + i;
      infobID = "infob" + i;

      var dom = findDOM(notesID,1);
      dom.display = dhtmlTableCellParam;

      var dom = findDOM(infoaID,1);
      dom.display = 'none';

      var dom = findDOM(infobID,1);
      dom.display = 'none';

    }
  }
}

function policyModuleListShowInfo(isTags) {
  //Change style of selected tab
  
  var dom = findDOM('notesHeader',0);
  dom.className = 'listelement-taboff'; 
  
  var dom = findDOM('infoHeader',0);
  dom.className = 'listelement-tabon';
  
  //Show Info subtab
  var dom = findDOM('infoSubHeader',1);
  dom.display = dhtmlTableRowParam; 

  //Show relevant tab values
  var notesID;
  var infoaID;
  var infobID;

  if (document.forms[0].selectedItems == null) {
    return;
  }

  if (document.forms[0].selectedItems.length == null) {

    // there is only one item in the list
    var dom = findDOM("notes1",1);
    dom.display = 'none'

    var dom = findDOM("infoa1",1);
    dom.display = dhtmlTableCellParam;

    var dom = findDOM("infob1",1);
    dom.display = dhtmlTableCellParam;

  } else {

    // there are more than one items in the list
    for (var i=1; i<=(document.forms[0].selectedItems.length); i++) {
      notesID = "notes" + i;
      infoaID = "infoa" + i;
      infobID = "infob" + i;

      var dom = findDOM(notesID,1);
      dom.display = 'none'

      var dom = findDOM(infoaID,1);
      dom.display = dhtmlTableCellParam;

      var dom = findDOM(infobID,1);
      dom.display = dhtmlTableCellParam;
    }

  }

}

function policyModuleHideAll() {
  //Change style of selected tab
  var dom = findDOM('infoHeader',0);
  dom.className = 'listelement-taboff';
  
  var dom = findDOM('notesHeader',0);
  dom.className = 'listelement-taboff';
        
  var dom = findDOM('alltabs',1);
  dom.display = 'none'; 
  
}

function policyModuleShowNotes() {
  //Change style of selected tab
  var dom = findDOM('infoHeader',0);
  dom.className = 'listelement-taboff';
  
  var dom = findDOM('notesHeader',0);
  dom.className = 'listelement-tabon';
  
  //Show section
  var dom = findDOM('alltabs',1);
  dom.display = 'block'; 
        
  toggleOptionArray('notes',['info']); 
  
}

function policyModuleShowInfo() {
  //Change style of selected tab
  var dom = findDOM('notesHeader',0);
  dom.className = 'listelement-taboff'; 
  
  var dom = findDOM('infoHeader',0);
  dom.className = 'listelement-tabon';
  
  //Show section
  var dom = findDOM('alltabs',1);
  dom.display = 'block';

  toggleOptionArray('info',['notes']);
}

function showSpecialTypeSelectBox() {
    var newType = document.forms[0].new_type.selectedIndex;
    var dom = findDOM('newEntry');
    if (newType == 2) {
        document.getElementById('newEntry').style.display = 'none';
        document.getElementById('specialEntrySelect').style.display = 'block';
    } else {
        document.getElementById('specialEntrySelect').style.display = 'none';
        document.getElementById('newEntry').style.display = 'block';
    }
}

//Writes correctly formatted WordList Entries based on widget controls
function addEntry() {

    //Read values from form
    var currentEntry = document.forms[0].multipleEntries.value;
    var newEntry = document.forms[0].new_entry.value;
    var newType = document.forms[0].new_type.selectedIndex;
    var newWeight = document.forms[0].weight.value;
    var specialEntry = document.forms[0].specialEntrySelect.selectedIndex;
    var editedEntry = "";
    
    if (newWeight.length == 0) {
        newWeight = 1;
    }
    
    if (newType == 2) {
        alert("Special Type Selected");
        alert("Special Entry == " + specialEntry);
        if (specialEntry == 0) {
            editedEntry = '**<cc>,' + newWeight
        } else if (specialEntry == 1) {
            editedEntry = '**<cusip>,' + newWeight;
        } else {
            editedEntry = '**<ssn>,' + newWeight;
        }
    } else if (newEntry.length > 0) {
     
        editedEntry = "";
        if (newType == 1) {
            editedEntry = '**';
        }
        if (newEntry.search(',') != -1) {
            newEntry = '"' + newEntry + '"';
        }
        editedEntry = editedEntry + newEntry + "," + newWeight;
    }
    
    if (currentEntry.length > 0) {
        editedEntry = editedEntry + "\n" + currentEntry;
    }
    
    document.forms[0].multipleEntries.value = editedEntry; 
}

// This function submits the form to Add the entered keyword to the list
function addKeywordEntrySubmit() {
    document.forms[0].submitDynamic.value="Add";
    document.forms[0].submit();
}

// This function submits the form to Add the entered Address to the list
function addAddressEntrySubmit() {
    document.forms[0].submitDynamic.value="Add";
    document.forms[0].submit();
}

/* ******  POLICY MODULE FUNCTIONS END ********* */









/* ************* NEW FUNCTIONS END *********************** */




/* ************ POLICY SPECIFIC FUNCTIONS ************* */

function showAllPolicies(doSubmit) {
     var dom = findDOM('filterPolicies',1);
     dom.display = 'block';

     var dom = findDOM('deliveryPolicies',1);
     dom.display = 'block';

     var dom = findDOM('policySpacer',1);
     dom.display = 'block';

     if (doSubmit) {
       document.forms[0].submit();
     }
}


function showFilterPolicies(doSubmit) {
     var dom = findDOM('filterPolicies',1);
     dom.display = 'block';

     var dom = findDOM('deliveryPolicies',1);
     dom.display = 'none';

     var dom = findDOM('policySpacer',1);
     dom.display = 'none';

     if (doSubmit) {
       document.forms[0].submit();
     }
}


function showDeliveryPolicies(doSubmit) {
     var dom = findDOM('filterPolicies',1);
     dom.display = 'none';

     var dom = findDOM('deliveryPolicies',1);
     dom.display = 'block';

     var dom = findDOM('policySpacer',1);
     dom.display = 'none';

     if (doSubmit) {
       document.forms[0].submit();
     }
}


function duplicatePolicy(checkObj,policyType) {
  if (countChecks(checkObj) == 0) {
        alert("Please select the policy you would like to duplicate.");
        return false;
  } else if (countChecks(checkObj) > 1) {
        alert("You can only duplicate one policy at a time. \n\nPlease select the policy you would like to duplicate.");
        return false;
  }
  return true;
}


function deletePolicy(checkObj, policyType) {
    return (confirmMultiDelete(checkObj, "policies"));
}

function enablePolicy(checkObj, policyType) {
  if (countChecks(checkObj) == 0) {
        alert("Please select the policies you would like to enable.");
  }
}

function disablePolicy(checkObj, policyType) {
  if (countChecks(checkObj) == 0) {
        alert("Please select the policies you would like to disable.");
  }
}

function confirmMultiDelete(checkObj,itemToDelete) {
  //Check to see if any checkboxes are checked
  var hasChks = hasChecks(checkObj);
  
  var confirmStr = 'Please confirm that you would like to delete the selected ' + itemToDelete + ' by clicking OK below. Otherwise, click Cancel.';
  var alertStr = 'Please select the ' + itemToDelete + ' you would like to delete before clicking Delete.';  

   if (hasChks) {
    var confirmed = confirm(confirmStr);

    if (confirmed) {
     //Delete

     //Clear checked checkboxes
     //clearChecks(checkObj);
     return true;
    }
  } else {
    alert(alertStr);
  }
  return false;

}

function growWindowSize(policyType) {
  if (policyType == 0) {
    var winSizeObj = document.forms[0].filterWindowSize;
    var winframe = 'fpc';
  } else {
    var winSizeObj = document.forms[0].deliveryWindowSize;
    var winframe = 'dpc';
  }

  var origSize = parseInt(winSizeObj.value);

  var dom = findDOM(winframe, 1);
  dom.height = (origSize + 60) + "px";

  winSizeObj.value = origSize + 60;

  document.forms[0].submit();
}

function shrinkWindowSize(policyType) {
  if (policyType == 0) {
    var winSizeObj = document.forms[0].filterWindowSize;
    var winframe = 'fpc';
  } else {
    var winSizeObj = document.forms[0].deliveryWindowSize;
    var winframe = 'dpc';
  }

  var origSize = parseInt(winSizeObj.value);

  if (origSize > 60) {
    var dom = findDOM(winframe, 1);
    dom.height = (origSize - 60) + "px";
    winSizeObj.value = origSize - 60;
  }

  document.forms[0].submit();

}

function setNumRows(policyType,numRows) {
  var dom = findDOM('fpc',1);
  dom.height = numRows * 28 + "px";
}


/* ************* HELPER FUNCTIONS ************ */

function toggleOptionArray(idShow, idHideArray) {
  var dom = findDOM(idShow,1);
  dom.display = 'block';

  var numOptionsToHide = idHideArray.length;
  for (var i=0; i<numOptionsToHide; i++) {
    dom = findDOM(idHideArray[i],1);
    dom.display = 'none';
  }  
}


function selectAll(selCheckObj, value) {
  if (selCheckObj) {
    if (selCheckObj[0]) {
      for (var i=0; i < selCheckObj.length; i+=1){
        selCheckObj[i].checked = value;
      }
    } else {
      selCheckObj.checked = value;
    }
  }
}


function writit(text,id)
{
        if (document.getElementById)
        {
                x = document.getElementById(id);
                x.innerHTML = '';
                x.innerHTML = text;
        }
        else if (document.all)
        {
                x = document.all[id];
                x.innerHTML = text;
        }
        else if (document.layers)
        {
                x = document.layers[id];
                text2 = '<P CLASS="testclass">' + text + '</P>';
                x.document.open();
                x.document.write(text2);
                x.document.close();
        }
}

function hasChecks(selCheckObj) {
  if (selCheckObj == null) {
    // There are no checkboxes
    return false;
  } else if (selCheckObj.length == null) {
    // There is exactly one checkbox. See if it is checked.
    if (selCheckObj.checked) {
      return true;
    }
  } else {
    // There is more than one checkbox. See if any are checked.
    var numItems = selCheckObj.length;
    for (var i=0; i<numItems; i++) {
     if (selCheckObj[i].checked) {
       return true;
     }
    }
  }
  return false;
}

function countChecks(selCheckObj) {
  var numChecks = 0;
  if (selCheckObj == null) {
    // There are no checkboxes
    numChecks = 0;
  } else if (selCheckObj.length == null) {
    // There is exactly one checkbox. Count it if it is checked.
    if (selCheckObj.checked) {
      numChecks++;
    }
  } else {
    // There is more than one checkbox. Count the checked ones.
    var numItems = selCheckObj.length;
    for (var i=0; i<numItems; i++) {
      if (selCheckObj[i].checked) {
        numChecks++;
      }
    }
  }
  return numChecks;
}

//Helper function to auto check a default radio button option associated with a checkbox when checking checkbox
//and clear all radio buttons associated with checkbox when checkbox is unchecked
function toggleRadioControls(chkbxObj, radioObj,defaultIndex) {
  if (chkbxObj && radioObj) {
    if ((defaultIndex >= 0) && (defaultIndex < radioObj.length)) {
                if (chkbxObj.checked) {
                  radioObj[defaultIndex].checked=true;
                } else {
          //Clear all associated radio buttons
          for (var i=0; i<radioObj.length; i++) {
                          radioObj[i].checked=false;
                  }
                }
        }
  }
}

function toggleSelCheck(selCheckObj, pagesize) {
  var firstSelCheck = false;
  for(var i=0; i < pagesize; i+=1) {
    var checkObj = eval(selCheckObj + "_" + i);
    if(checkObj) {
      if(i == 0) { 
       firstSelCheck = checkObj.checked;
      }
      checkObj.checked = !firstSelCheck;
    }
  }
}

function changeDateFilter(selObj,checkHour) {
  if (selObj == null) {
  	return;
  }
  if (selObj.selectedIndex == 8) {
    var dom = findDOM('dateRange',1);
    dom.display = dhtmlTableCellParam;
    if ( checkHour == 1 ) {
      var dom = findDOM('hourRange',1);
      dom.display = dhtmlTableCellParam;
    }

  } else {
    var dom = findDOM('dateRange',1);
    dom.display = 'none';

    if ( checkHour == 1 ) {
      var dom = findDOM('hourRange',1);
      dom.display = 'none';
    }
  }
}

function changeDateFilter2(selObj) {
  if (selObj == null) {
  	return;
  }
  if (selObj.selectedIndex == 9) {
    var dom = findDOM('dateRange',1);
    dom.display = dhtmlTableCellParam;
  } else {
    var dom = findDOM('dateRange',1);
    dom.display = 'none';
  }
}

  
function IsEnterKey(theEvent)
{
    var is_netscape = window.Event ? true : false;
        if (is_netscape) {
                var which_char = theEvent.which;
        } else {
                var which_char = window.event.keyCode;
        }

        if (which_char == 13) {
                return true;
        }
        return false;
}

function gotoPage(gotoPageLink, pageNumberFieldName) {  
        window.location = gotoPageLink + "&" + pageNumberFieldName + "=" + eval("document.forms[0]." + pageNumberFieldName + "[0].value");
}
                                                                                            
function selectPageNumber(pageNumberFieldName, page ) {
        if (eval("document.forms[0]." + pageNumberFieldName + "[0].value") != page) {
                eval("document.forms[0]." + pageNumberFieldName + "[0].value='" + page + "'");
        } 
        if (eval("document.forms[0]." + pageNumberFieldName + "[1].value") != page) {
                eval("document.forms[0]." + pageNumberFieldName + "[1].value='" + page + "'");
        }                                                      
}                                                                                                                       

function intOnly(i) {
        if(i.value.length>0) {
            // remove the '-' character whenever it follows any character
                i.value = i.value.replace(/(.)(-)/g, '$1');
                // remove any character that is not a digit or '-'
                i.value = i.value.replace(/[^-\d]+/g, ''); 
        }
}

function popupHelp(topic, locale) {
    // From the given pathname like "admin/policy/notificationList.jsp", we want
    // to extract the topic "notificationList"
    // topic = pathname.substring(pathname.lastIndexOf("/") + 1, pathname.lastIndexOf("."));
    if (locale == "") {
        locale = "en_US"
    }
    helpUrl = "/enduser/help/index.jsp?locale=" + locale + "&topic=" + topic;
    windowprops = "height=550,width=850,location=no,scrollbars=yes,menubars=no,toolbars=no,resizable=yes";
    window.open(helpUrl, "Help", windowprops);
}

function tlsTest(selectList) {
    if (selectList == null){
        return;
    }
    var checksCount = countChecks(selectList);
	if (checksCount == 0 || (checksCount == 1 && selectList[0].checked == true)) {
        alert("Please select one TLS domain or host to test.");
        return false;
  	} else if ((checksCount == 2 && selectList[0].checked != true) || checksCount > 2 ) {
        alert("You can only test one TLS domain or host at a time. \n\nPlease select one TLS domain or host to test.");
        return false;
  	}
    var selIndex = -1;
    //start from 1 because 0 is the function checkbox to toggle all. 
    for (index = 1; index < selectList.length; index++){
        if (selectList[index].checked == true){
    	    if (selIndex == -1){
    		    selIndex = index;
    	    }else{
    	        selIndex = -1;
    	        break;
            }
        }
    }
    
    if (selIndex > 0){
        var testDomainId = selectList[selIndex].value;	    
    }else{
    	var testDomainId = -1;
    }
    //The second argument 'TlsTest' is the name of the window. It CANNOT contains space in for IE.
    window.open('testTLS.jsp?testDomainId=' + testDomainId, 'TlsTest', 'height=550,width=850,location=no,scrollbars=yes,menubars=no,toolbars=no,resizable=yes');        
}

function popupReplicationInfo(access) 
{
    url = "/admin/common/replicationInfo.jsp?access="+access;
    w = 550;
    h=450;
    LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;
	TopPosition = (screen.height) ? (screen.height-h)/2 : 0;
    windowprops = "height="+h+",width="+w+",top="+TopPosition+", left="+LeftPosition+", location=no,scrollbars=yes,menubars=no,toolbars=no,resizable=yes";
    window.open(url, "Replication", windowprops);
}

function navigatePage(startIndex) {
  document.forms[0].startIndex.value = startIndex;
  document.forms[0].action.value = null;
  document.forms[0].submit();
}

//@Cross-browser event handling
function addEvent(elm, evType, fn, useCapture) 
{
    if(elm.addEventListener) {
        elm.addEventListener(evType, fn, useCapture);
        return true;
    } else if(elm.attachEvent) {
        var r = elm.attachEvent("on" + evType, fn)
        return r;
    } else {
        elm["on" + evType] = fn;
    }
}

//@New popup window
function openWin(url, size)
{
  var newWin = window.open(url, "", "toolbar=no, location=no, menubar=no, resizable=yes, scrollbars=yes, status=yes," + size);
  newWin.focus();
}

//@Toggle div
function toggleDiv(e) 
{
	var t = window.event ? window.event.srcElement : e ? e.target : null;
	obj = t.parentNode.parentNode.nextSibling.nextSibling;
	if (obj == null || obj.nodeName != "DIV") {
		obj = t.parentNode.parentNode.nextSibling;
	}
	
	if(t.checked) {
		obj.style.display = "block";
	} else {
		obj.style.display = "none";
	}	
}

function toggleDivById(e, display) 
{
	var t = window.event ? window.event.srcElement : e ? e.target : null;
	
	if(!arguments[1]) {
		display = "block";
	}
	
	if(typeof(e) != "string") {
		obj = document.getElementById(t.id+"Div");
	} else {
		obj = document.getElementById(e);
		t = null;
	}
	
	if(obj.style.display == "none") {
		obj.style.display = display;
	} else {
		obj.style.display = "none";
	}
	
	if(t != null) {
        if (t.className == "btn" || t.className == "btn-on") {
    		if(t.className == "btn") {
    			t.className = "btn-on";
    			t.src = "../resources/images/common/btn_collapse.gif";
    		} else {
    			t.className = "btn";
    			t.src = "../resources/images/common/btn_expand.gif";
    		}
        } else if (t.className == "btn-long" || t.className == "btn-long-on") {
            if(t.className == "btn-long") {
    			t.className = "btn-long-on";
    			t.src = "../resources/images/common/btn_collapse.gif";
    		} else {
    			t.className = "btn-long";
    			t.src = "../resources/images/common/btn_expand.gif";
    		}
        }
	}
}

//@Toggle form
function toggleForm(t, name) 
{
	if(t.checked) {
		enableForm(name);
	} else {
		disableForm(name);
	}	
}

//@Disable form
function disableForm(name) 
{
	inputArr = document.getElementsByTagName("input");
	selectArr = document.getElementsByTagName("select");
	textArr = document.getElementsByTagName("textarea");
		
	for(i=0; i<inputArr.length; i++) {
		tempObj = inputArr[i];	
		if(tempObj.className == name || tempObj.className == name + " buttons") {
			tempObj.disabled = true;
		}
	}
	
	for(i=0; i<selectArr.length; i++) {
		tempObj = selectArr[i];	
		if(tempObj.className == name || tempObj.className == name + " buttons") {
			tempObj.disabled = true;
		}
	}
	
	for(i=0; i<textArr.length; i++) {
		tempObj = textArr[i];
		if(tempObj.className == name || tempObj.className == name + " buttons") {
			tempObj.disabled = true;
		}
	}
}

//@Enable form
function enableForm(name) 
{
	inputArr = document.getElementsByTagName("input");
	selectArr = document.getElementsByTagName("select");
	textArr = document.getElementsByTagName("textarea");
		
	for(i=0; i<inputArr.length; i++) {
		tempObj = inputArr[i];
		if(tempObj.className == name || tempObj.className == name + " buttons") {
			tempObj.disabled = false;
		}
	}
	
	for(i=0; i<selectArr.length; i++) {
		tempObj = selectArr[i];
		if(tempObj.className == name || tempObj.className == name + " buttons") {
			tempObj.disabled = false;
		}
	}
	
	for(i=0; i<textArr.length; i++) {
		tempObj = textArr[i];
		if(tempObj.className == name || tempObj.className == name + " buttons") {
			tempObj.disabled = false;
		}
	}
}

//@Select all by class name
function selectAllByClass(t, checkbox, name) 
{
	if(t.id == checkbox) {
		objArr = document.getElementsByTagName("input");
		for(i=0; i<objArr.length; i++) {
			tempObj = objArr[i];
			if(tempObj.type == "checkbox" && tempObj.className == name) {
				if(t.checked) {
					tempObj.checked = "true";
				} else {
					tempObj.checked = "";
				}
			}
		}
	}
}



//@Validation scripts

//#Validate delete

//#Validate Selection
function validateSelection(t, name) 
{
	objArr = document.getElementsByTagName("input");
	valid = false;
	
	for(i=0; i<objArr.length; i++) {
		tempObj = objArr[i];
		if (tempObj.checked && tempObj.className == name) {
			valid = true;
		}
	}
	
	return valid;
}

//#Validate domain
function validateDomain(field) 
{	
	domain = document.getElementById(field).value;
	reg = /^[a-zA-Z0-9._-]+\.[a-zA-Z.]{2,3}$/;
	valid = false;
	
	if(domain == "") {
		alert("Please enter search data");
	} else if(!domain.match(reg)) {
		alert("Please enter a valid domain name");
	} else {
		valid = true;
	}
	
	return valid;
}

//@Install script

//#Install aciton buttons
function installActions(e) 
{
	var t = window.event ? window.event.srcElement : e ? e.target : null;
	url = new String(window.location.href);
	url = url.match(/_+[0-9]+\.html/);
	
	if(url != null) {
		url = url.toString();
		num = url.match(/[0-9]/);
		url = "step_";
	}	
	
	if(window.location.href.match(/cluster_+[0-9]+\.html/)) {
		url += "cluster_";
	}
	
	switch(t.id) {
		case "next":
			num++;
			url += num +".html";
			window.open(url, "_top");
			break;
		case "back":
			num--;
			url += num +".html"
			window.open(url, "_top");
			break;
		case "exit":
			if(window.confirm("If you exit now, you will lose all configuration settings. Are you sure?")) {
				window.open("step_exit.html", "_top")
			}
			break;
	}
}

//#Install init
function installInit(e) 
{
	var t = window.event ? window.event.srcElement : e ? e.target : null;
	div = document.getElementById("installSteps");
	url = new String(window.location.href);
	
	if(window.location.href.match(/cluster_+[0-9]+\.html/)) {
		div = document.getElementById("installStepsCluster");
	}

	url = url.match(/_+[0-9]+\.html/);
	div.style.display = "block";
	linkArr = div.getElementsByTagName("img");
	
	if(url != null) {
		url = url.toString();
		num = url.match(/[0-9]/);
	}
	
	if(url == null) {
		div.style.display = "none";
	} else {
		linkArr[num-1].src = "../images/install/step_"+ num +"_ACTIVE.gif";
	}
}

//@CSS scripts

//#Fix IE button width
function cssFixButton() {
	objArr = document.getElementsByTagName("input");
	
	for(i=0; i<objArr.length; i++) {
		tempObj = objArr[i];
		if(tempObj.type == "button" && navigator.appVersion.indexOf("MSIE") != -1) {
			tempObj.style.width = "0px";
		}
	}
}

//#Fix checkbox margins
function cssFixInput() {
	objArr = document.getElementsByTagName("input");
	selArr = document.getElementsByTagName("select");

	for(i=0; i<objArr.length; i++) {
		tempObj = objArr[i];
		if(tempObj.type == "checkbox" || tempObj.type == "radio") {
			if(navigator.userAgent.indexOf("Opera") != -1) {
				tempObj.style.margin = "2px";
				tempObj.style.marginLeft = "-2px";
				tempObj.style.marginRight = "-5px";
			} else if(navigator.appVersion.indexOf("MSIE") != -1) {
				tempObj.style.marginTop = "0px";
				tempObj.style.marginBottom = "0px";
				tempObj.style.marginLeft = "-4px";
				tempObj.style.marginRight = "-3px";
			} else {
				tempObj.style.margin = "4px";
				tempObj.style.marginLeft = "0px";
				tempObj.style.marginRight = "-0px";
			}
		}
	}
	
	for(i=0; i<selArr.length; i++) {
		tempObj = selArr[i];
		if(navigator.userAgent.indexOf("Opera") != -1) {
			tempObj.style.height = "20px";
		}
	}
	
	objArr = null;
}

function cssFixSelect() {
	objArr = document.getElementsByTagName("select");

	for(i=0; i<objArr.length; i++) {
		tempObj = objArr[i];
		if(navigator.userAgent.indexOf("Opera") != -1) {
			if(tempObj.size != 0) {
				tempObj.style.height = tempObj.size*20-16+"px";
			} else {
				tempObj.style.height = "20px";
			}
		}
	}
	
	objArr = null;
}

//@Picker component scripts
function sortOptFn(a, b) {
	a = a.text;
	b = b.text;
	
	if(a > b) {
		return 1;
	}
	
	if(a < b) {
		return -1;
	}
	
	return 0;
}

function writeOpt(obj, arr) {
	for(i=0; i<arr.length; i++) {
		o = document.createElement("option");
		o.text = arr[i].text;
		o.value = arr[i].value;
		o.id = "pickBtnOpt";
		x = obj.options[i];
		
		if(navigator.appVersion.indexOf("MSIE") != -1) {
			obj.options.add(o);
			obj.options.remove(x);
		} else {
			obj.replaceChild(o, x);
		}
	}
}

function sortOpt() {
	optL = document.getElementById("pickL");
	optR = document.getElementById("pickR");
	lArr = new Array();
	rArr = new Array();
	
	for(i=0; i<optL.options.length; i++) {
		key = optL.options[i].text;
		val = optL.options[i].value;
		lArr[i] = { text:key, value:val }
	}
	
	for(i=0; i<optR.options.length; i++) {
		key = optR.options[i].text;
		val = optR.options[i].value;
		rArr[i] = { text:key, value:val }
	}
	
	lArr.sort(sortOptFn);
	rArr.sort(sortOptFn);	
	writeOpt(optL, lArr);
	writeOpt(optR, rArr);	
}

function moveOpt(e) {
	var t = window.event ? window.event.srcElement : e ? e.target : null;
	optL = document.getElementById("pickL");
	optR = document.getElementById("pickR");
	
	//Note:
	//Firefox
	if(t.id == "pickBtnOpt") {
		if(t.parentNode.id == "pickL") {
			optR.appendChild(t);
			sortOpt();
		} else {
			optL.appendChild(t);
			sortOpt();
		}
	}
	
	//Note:
	//IE & Opera
	if(t.id == "pickL") {
		optR.appendChild(t.options[t.selectedIndex]);
		sortOpt();
	}
	
	if(t.id == "pickR") {
		optL.appendChild(t.options[t.selectedIndex]);
		sortOpt();
	}
	
}

function moveL() {
	optL = document.getElementById("pickL");
	optR = document.getElementById("pickR");
	oArr = optR.getElementsByTagName("option");
	xArr = new Array();
	
	for(i=0; i<oArr.length; i++) {
		o = oArr[i];
		if(o.selected) {
			xArr[i] = o;
		} else {
			xArr[i] = null;
		}
	}
	
	for(i=0; i<xArr.length; i++) {
		if(xArr[i] != null) {
			optL.appendChild(xArr[i]);
		}
	}
	
	sortOpt();
}

function moveLa() {
	optL = document.getElementById("pickL");
	optR = document.getElementById("pickR");
	oArr = optR.getElementsByTagName("option");
	xArr = new Array();
	
	for(i=0; i<oArr.length; i++) {
		o = oArr[i];
		xArr[i] = o;
	}
	
	for(i=0; i<xArr.length; i++) {
		optL.appendChild(xArr[i]);
	}
	
	sortOpt();
}

function moveR() {
	optL = document.getElementById("pickL");
	optR = document.getElementById("pickR");
	oArr = optL.getElementsByTagName("option");
	xArr = new Array();
	
	for(i=0; i<oArr.length; i++) {
		o = oArr[i];
		if(o.selected) {
			xArr[i] = o;
		} else {
			xArr[i] = null;
		}
	}
	
	for(i=0; i<xArr.length; i++) {
		if(xArr[i] != null) {
			optR.appendChild(xArr[i]);
		}
	}
	
	sortOpt();
}

function moveRa() {
	optL = document.getElementById("pickL");
	optR = document.getElementById("pickR");
	oArr = optL.getElementsByTagName("option");
	xArr = new Array();
	
	for(i=0; i<oArr.length; i++) {
		o = oArr[i];
		xArr[i] = o;
	}
	
	for(i=0; i<xArr.length; i++) {
		optR.appendChild(xArr[i]);
	}
	
	sortOpt();
}

//@Selectable grid component scripts

function selectGridRow(e)
{
	var t = window.event ? window.event.srcElement : e ? e.target : null;
	evt = window.event ? window.event : e ? e : null;
	
	if(evt.type == "click") {
		r = t.parentNode;
		if(r.id != "gridRow") {
			r = t.parentNode.parentNode;
		}
		
		if(r.id == "gridRow") {
			resetRows();
			r.className = "selected";
			//Note: The function below is custom and must be defined in the document <head>.
			changeDetails();
		}	
	}
	
	if(evt.keyCode == "40" || evt.keyCode == "98") {
		selectNextRow();
		//Note: The function below is custom and must be defined in the document <head>.
		changeDetails();
	}
	
	if(evt.keyCode == "38" || evt.keyCode == "104") {
		selectPrevRow();
		//Note: The function below is custom and must be defined in the document <head>.
		changeDetails();
	}
}

function selectNextRow() {
	row = findSelectedRow();
	
	if(row<trArr.length-2) {
		trArr[row].className = "";
		trArr[row+1].className = "selected";
	}
}

function selectPrevRow() {
	row = findSelectedRow();
	
	if(row>1) {
		trArr[row].className = "";
		trArr[row-1].className = "selected";
	}
}

function findSelectedRow() {
	obj = document.getElementById("selectableGrid");
	trArr = obj.getElementsByTagName("tr");
		
	for(i=0; i<trArr.length; i++) {
		tempObj = trArr[i];
		if(tempObj.className == "selected") {
			return i;
		}
	}
}

function resetRows() {
	obj = document.getElementById("selectableGrid");
	trArr = obj.getElementsByTagName("tr");
	
	for(i=0; i<trArr.length; i++) {
		tempObj = trArr[i];
		if(tempObj.id == "gridRow") {
			tempObj.className = "";
		}
	}
}

//Removes leading and trailing white spaces
function trim(string){
    return string.replace(/^\s+|\s+$/g, ""); 
};

//@Create and attach new element before the specified parent first child
function insertNodeBefore(elm, parent, txt, attribArr) {
	elm = document.createElement(elm);
	txt = document.createTextNode(txt);
	
	for(i=0; i<attribArr.length; i++) {
		elm.setAttribute(attribArr[i].key, attribArr[i].value);
	}
	
	elm.appendChild(txt);
	parent.insertBefore(elm, parent.firstChild);
}

//@Select all by class name

//@Highlight grid rows
function higlightGridRow(e) 
{
	var t = window.event ? window.event.srcElement : e ? e.target : null;
	var evt = window.event ? window.event.type : e ? e.type : null;
	r = t.parentNode;
	
	if(r.id != "undefined" && r.id != "gridRow") {
		r = t.parentNode.parentNode;
	}
	
	if(t.parentNode.id == "gridRow" && t.parentNode.className != "disabled") {
		objArr = r.getElementsByTagName("td");
		for(i=0; i<objArr.length; i++) {
			tempObj = objArr[i];
			if(evt == "mouseover") {
				tempObj.style.backgroundColor = "#F9FFE0";
			} else {
				tempObj.style.backgroundColor = "";
			}
		}
	}
}

//@Custom alt text
function popupNote(evt, name) 
{
	var t = window.event ? evt.srcElement : evt.target;
	var eType = window.event ? evt.type : evt.type;
	div = document.getElementById(name+"Div");
	_x = evt.clientX;
	_y = evt.clientY+20+document.documentElement.scrollTop;
	
	if(document.documentElement.scrollTop == 0 && document.body.scrollTop > 0) {
		_y += document.body.scrollTop;
	}
	
	if(t && t.id == name) {
		t.style.cursor = "pointer";
		if(eType == "mouseover") {
			div.style.display = "block";
			div.style.left = _x + "px";
			div.style.top = _y + "px";
		} else {
			div.style.display = "none";
		}
	}	
}

//@Image roll over
function rollOver(e)
{
	var t = window.event ? window.event.srcElement : e ? e.target : null;
	
	if(t.className == "rollOver") {
		//img = new String(t.src);
		//over = img.replace(/.gif/, "_OVER.gif");
		//t.src = over;
		t.className = "rollOverOut";
	} else if(t.className == "rollOverOut") {
		//img = new String(t.src);
		//out = img.replace(/_OVER.gif/, ".gif");
		//t.src = out;
		t.className = "rollOver";
	}
}

//@Validation scripts

//#Return slected rows
function findSelectedRows(name)
{
	objArr = document.getElementsByTagName("input");
	chkArr = new Array();
	
	for(i=0, j=0; i<objArr.length; i++) {
		tempObj = objArr[i];
		if (tempObj.checked && tempObj.className == name) {
			chkArr[j] = tempObj;		
			j++;
		}
	}
	
	return chkArr;
}

//#Validate delete
function validateDelete(t, name, warn, button) 
{
	objArr = document.getElementsByTagName("input");
	valid = false;
	
	for(i=0; i<objArr.length; i++) {
		tempObj = objArr[i];
		if (tempObj.checked && tempObj.className == name) {
			valid = true;
		}
	}
	
	if(t.id == button || t.id == "gridDelete") {
		if(valid) {
			valid = confirm("Please confirm that you would like to delete all checked " + warn + " by clicking OK. Otherwise, click Cancel.");
		} else {
			alert("Please select a row first");
			valid = false;
		}
	}
	
	return valid;
}

function selectOpt(e) {
	var t = window.event ? window.event.srcElement : e ? e.target : null;
	evt = window.event ? window.event : e ? e : null;
	
	if(t.parentNode.id == "gridRow") {
		if(t.parentNode.className == "") {
			t.parentNode.className = "row-on";
		} else {
			t.parentNode.className = "";
		}
	}
}

function writeOpt(obj, arr) {
	for(i=0; i<arr.length; i++) {
		o = document.createElement("option");
		o.text = arr[i].text;
		o.value = arr[i].value;
		o.id = "pickBtnOpt";
		x = obj.options[i];
		
		if(navigator.appVersion.indexOf("MSIE") != -1) {
			obj.options.add(o);
			obj.options.remove(x);
		} else {
			obj.replaceChild(o, x);
		}
	}
}

function writeOptTable(obj, arr) {
	for(i=0; i<arr.length; i++) {
		obj.deleteRow(1);
	}
	
	for(i=1; i<arr.length+1; i++) {
		tr = obj.insertRow(i);
		nodeArr = arr[i-1].value;
		for(j=0; j<nodeArr.length; j++) {
			td = tr.insertCell(j);
			txt = document.createTextNode(nodeArr[j]);
			td.appendChild(txt);
		}
		tr.id = "gridRow";
	}
}

function sortOpt(t) {
	optL = t.parentNode.parentNode.parentNode.getElementsByTagName("select")[0];
	optR = t.parentNode.parentNode.parentNode.getElementsByTagName("select")[1];
	lArr = new Array();
	rArr = new Array();
	
	for(i=0; i<optL.options.length; i++) {
		key = optL.options[i].text;
		val = optL.options[i].value;
		lArr[i] = { text:key, value:val }
	}
	
	for(i=0; i<optR.options.length; i++) {
		key = optR.options[i].text;
		val = optR.options[i].value;
		rArr[i] = { text:key, value:val }
	}
	
	lArr.sort(sortOptFn);
	rArr.sort(sortOptFn);	
	writeOpt(optL, lArr);
	writeOpt(optR, rArr);	
}

function sortOptTable() {
	optL = document.getElementById("pickL");
	optR = document.getElementById("pickR");	lArr = new Array();
	rArr = new Array();
	
	for(i=1; i<optL.rows.length; i++) {
		key = optL.rows[i].cells[0].innerHTML;
		val = new Array();
		for(j=0; j<optL.rows[i].cells.length; j++) {
			val[j] = optL.rows[i].cells[j].innerHTML;
		}
		lArr[i-1] = { text:key, value:val };
	}
	
	for(i=1; i<optR.rows.length; i++) {
		key = optR.rows[i].cells[0].innerHTML;
		val = new Array();
		for(j=0; j<optR.rows[i].cells.length; j++) {
			val[j] = optR.rows[i].cells[j].innerHTML;
		}
		rArr[i-1] = { text:key, value:val };
	}
	
	lArr.sort(sortOptFn);
	rArr.sort(sortOptFn);
	writeOptTable(optL, lArr);
	writeOptTable(optR, rArr);
}

function moveOptTable(e) {
	var t = window.event ? window.event.srcElement : e ? e.target : null;
	optL = document.getElementById("pickL");
	optR = document.getElementById("pickR");
	
	if(t.parentNode.id == "gridRow") {
		if(t.parentNode.parentNode.parentNode.id == "pickL") {
			optR.tBodies[0].appendChild(t.parentNode);
			sortOptTable();
		} else {
			optL.tBodies[0].appendChild(t.parentNode);
			sortOptTable();
		}
	}
}

function moveL(e) {
	var t = window.event ? window.event.srcElement : e ? e.target : null;
	optL = t.parentNode.parentNode.parentNode.getElementsByTagName("select")[0];
	optR = t.parentNode.parentNode.parentNode.getElementsByTagName("select")[1];
	oArr = optR.getElementsByTagName("option");
	xArr = new Array();
	
	for(i=0; i<oArr.length; i++) {
		o = oArr[i];
		if(o.selected) {
			xArr[i] = o;
		} else {
			xArr[i] = null;
		}
	}
	
	for(i=0; i<xArr.length; i++) {
		if(xArr[i] != null) {
			optL.appendChild(xArr[i]);
		}
	}
	
	sortOpt(t);
}

function moveLa(e) {
	var t = window.event ? window.event.srcElement : e ? e.target : null;
	optL = t.parentNode.parentNode.parentNode.getElementsByTagName("select")[0];
	optR = t.parentNode.parentNode.parentNode.getElementsByTagName("select")[1];
	oArr = optR.getElementsByTagName("option");
	xArr = new Array();
	
	for(i=0; i<oArr.length; i++) {
		o = oArr[i];
		xArr[i] = o;
	}
	
	for(i=0; i<xArr.length; i++) {
		optL.appendChild(xArr[i]);
	}
	
	sortOpt(t);
}

function moveR(e) {
	var t = window.event ? window.event.srcElement : e ? e.target : null;
	optL = t.parentNode.parentNode.parentNode.getElementsByTagName("select")[0];
	optR = t.parentNode.parentNode.parentNode.getElementsByTagName("select")[1];
	oArr = optL.getElementsByTagName("option");
	xArr = new Array();
	
	for(i=0; i<oArr.length; i++) {
		o = oArr[i];
		if(o.selected) {
			xArr[i] = o;
		} else {
			xArr[i] = null;
		}
	}
	
	for(i=0; i<xArr.length; i++) {
		if(xArr[i] != null) {
			optR.appendChild(xArr[i]);
		}
	}
	
	sortOpt(t);
}

function moveRa(e) {
	var t = window.event ? window.event.srcElement : e ? e.target : null;
	optL = t.parentNode.parentNode.parentNode.getElementsByTagName("select")[0];
	optR = t.parentNode.parentNode.parentNode.getElementsByTagName("select")[1];
	oArr = optL.getElementsByTagName("option");
	xArr = new Array();
	
	for(i=0; i<oArr.length; i++) {
		o = oArr[i];
		xArr[i] = o;
	}
	
	for(i=0; i<xArr.length; i++) {
		optR.appendChild(xArr[i]);
	}
	
	sortOpt(t);
}

function moveLTable() {
	optL = document.getElementById("pickL");
	optR = document.getElementById("pickR");
	oArr = optR.getElementsByTagName("tr");
	xArr = new Array();
	
	for(i=1; i<oArr.length; i++) {
		o = oArr[i];
		if(o.className == "row-on") {
			xArr[i-1] = o;
		} else {
			xArr[i-1] = null;
		}
	}
	
	for(i=0; i<xArr.length; i++) {
		if(xArr[i] != null) {
			optL.tBodies[0].appendChild(xArr[i]);
		}
	}
	
	sortOptTable();
}

function moveLaTable() {
	optL = document.getElementById("pickL");
	optR = document.getElementById("pickR");
	oArr = optR.getElementsByTagName("tr");
	xArr = new Array();
	
	for(i=1; i<oArr.length; i++) {
		o = oArr[i];
		xArr[i-1] = o;
	}
	
	for(i=0; i<xArr.length; i++) {
		optL.tBodies[0].appendChild(xArr[i]);
	}
	
	sortOptTable();
}

function moveRTable() {
	optL = document.getElementById("pickL");
	optR = document.getElementById("pickR");
	oArr = optL.getElementsByTagName("tr");
	xArr = new Array();
	
	for(i=1; i<oArr.length; i++) {
		o = oArr[i];
		if(o.className == "row-on") {
			xArr[i-1] = o;
		} else {
			xArr[i-1] = null;
		}
	}
	
	for(i=0; i<xArr.length; i++) {
		if(xArr[i] != null) {
			optR.tBodies[0].appendChild(xArr[i]);
		}
	}
	
	sortOptTable();
}

function moveRaTable() {
	optL = document.getElementById("pickL");
	optR = document.getElementById("pickR");
	oArr = optL.getElementsByTagName("tr");
	xArr = new Array();
	
	for(i=1; i<oArr.length; i++) {
		o = oArr[i];
		xArr[i-1] = o;
	}
	
	for(i=0; i<xArr.length; i++) {
		optR.tBodies[0].appendChild(xArr[i]);
	}
	
	sortOptTable();
}

//@Selectable grid widget scripts


//@Change time widget scripts

function changeTime(e) {
	var t = window.event ? window.event.srcElement : e ? e.target : null;
	
	switch(timeType) {
		case "timeHour":
			timeArr = t.parentNode.parentNode.getElementsByTagName("input");
			timeInput = timeArr[1];
			break;
		case "timeMin":
			timeArr = t.parentNode.parentNode.getElementsByTagName("input");
			timeInput = timeArr[2];
			break;
		case "timeSec":
			timeArr = t.parentNode.parentNode.getElementsByTagName("input");
			timeInput = timeArr[3];
			break;
	}
	
	if(t.className == "timeUp" && timeInput.disabled == "") {
		num = new Number(timeInput.value);
		num += 1;
		if(timeInput.name == "timeHour") {
			if(num > 24) {
				num = 1;
			}
		} else {
			if(num > 60) {
				num = 1;
			}
		}
		if(num < 10) {
			timeInput.value = "0" + num;
		} else {
			timeInput.value = num;
		}
		timeInput.focus();
		timeInput.select();
	}
	
	if(t.className == "timeDown" && timeInput.disabled == "") {
		num = new Number(timeInput.value);
		num -= 1;
		if(timeInput.name == "timeHour") {
			if(num < 1) {
				num = 24;
			}
		} else {
			if(num < 1) {
				num = 60;
			}
		}
		if(num < 10) {
			timeInput.value = "0" + num;
		} else {
			timeInput.value = num;
		}
		timeInput.focus();
		timeInput.select();
	}
	
	
}

function focusTime(e) {
	var t = window.event ? window.event.srcElement : e ? e.target : null;
	timeType = t.name;
}
