// JavaScript Document GLOBAL


//submit characters

<!-- Begin NoSpecialCharacters
var r={
'special':/[^\w ]/g,
'quotes':/['\''&'\"']/g,
  'notnumbers':/[^\d-]/g,
  'notdecimals':/[^\d.-]/g
  
}

function valid(o,w){
  o.value = o.value.replace(r[w],'');
}


//  End -->



//this changes enter key to TAB key
function disableEnterKey(e)
{
     var key;     
     if(window.event)
          key = window.event.keyCode; //IE
     else
          key = e.which; //firefox     

     return (key != 13);
}
//end tab as enter key


<!-- Begin Toggle div display
function togglediv(divname) {
if (document.getElementById(divname).style.display == "")
 {document.getElementById(divname).style.display = "none";}
else
 {document.getElementById(divname).style.display = "";}
}
// End -->


//check to see if number of connections changes 20% either direction
function check20(enterednum,storednum) {
	var less20 = storednum * .8;
	var more20 = storednum * 1.2;
	if (enterednum > more20) 
	{alert("INVALID: This number is more than 20% than the original amount registered with.");
	 document.getElementById('NumConnections').focus();
	//need to notify carl, too
	}
	if (enterednum < less20) 
	{alert("INVALID: This number is less than 20% than the original amount registered with.");
	 document.getElementById('NumConnections').focus();}
	checkzero(enterednum);
}


//check to see if number connections is null, then set to zero if it is
function checkzero(nnn) {
   if (nnn=="") {nnn.value="0";}
   }



	


//tabs for toolshed
function togglediv(divname) {
if (document.getElementById(divname).style.display == "")
 {document.getElementById(divname).style.display = "none";}
else
 {document.getElementById(divname).style.display = "";}
}
// End -->


// Begin RANDOM IMAGES

function RandomImages(){
var theImages = new Array() 

theImages[0] = 'random/1.jpg'
theImages[1] = 'random/2.jpg'
theImages[2] = 'random/3.jpg'
theImages[3] = 'random/4.jpg'
theImages[4] = 'random/5.jpg'
theImages[5] = 'random/6.jpg'
theImages[6] = 'random/7.jpg'


var j = 0
var p = theImages.length;
var preBuffer = new Array()
for (i = 0; i < p; i++){
   preBuffer[i] = new Image()
   preBuffer[i].src = theImages[i]
}
var whichImage = Math.round(Math.random()*(p-1));
document.write('<img alt=/"/" align=/"right/" src="'+theImages[whichImage]+'">');
}
//  End RANDOM IMAGES




// Begin ROTATING IMAGES
function RotatingImages() {
document.write('<img src=/"rotating/1.jpg/"  name=/"RotatingPix/" alt=/"/" />');

var timeDelay = 8; // delay time in seconds
timeDelay *= 500;

var Pix = new Array
("rotating/1.jpg" 
,"rotating/2.jpg"
,"rotating/3.jpg"
,"rotating/4.jpg"
,"rotating/5.jpg"
,"rotating/6.jpg"
,"rotating/7.jpg"
);

var howMany = Pix.length;
var PicCurrentNum = 0;
var PicCurrent = new Image();
PicCurrent.src = Pix[PicCurrentNum];

setInterval("slideshow()", timeDelay); // last check i moved the slideshow function outside  of the main function, was getting object  expected error
}
function slideshow() {
PicCurrentNum++;
if (PicCurrentNum == howMany) {
PicCurrentNum = 0;
}
PicCurrent.src = Pix[PicCurrentNum];
document["RotatingPix"].src = PicCurrent.src;
}

// End ROTATING IMAGES-->




// for dhtml IE hover fix
navHover = function() {
	var lis = document.getElementById("navmenu").getElementsByTagName("LI");
	for (var i=0; i<lis.length; i++) {
		lis[i].onmouseover=function() {
			this.className+=" iehover";
		}
		lis[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" iehover\\b"), "");
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", navHover);


//v1.0
//Copyright 2006 Adobe Systems, Inc. All rights reserved.
function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '<object ';
  for (var i in objAttrs)
    str += i + '="' + objAttrs[i] + '" ';
  str += '>';
  for (var i in params)
    str += '<param name="' + i + '" value="' + params[i] + '" /> ';
  str += '<embed ';
  for (var i in embedAttrs)
    str += i + '="' + embedAttrs[i] + '" ';
  str += ' ></embed></object>';

  document.write(str);
}

function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    

    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblClick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "id":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}



//v1.1
//Copyright 2006 Adobe Systems, Inc. All rights reserved.
function AC_AX_RunContent(){
  var ret = AC_AX_GetArgs(arguments);
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_AX_GetArgs(args){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    

    switch (currArg){	
      case "pluginspage":
      case "type":
      case "src":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "data":
      case "codebase":
      case "classid":
      case "id":
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblClick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  return ret;
}




function checkpassword(){
	if (document.registerform.password.value != document.registerform.password2.value){
		alert("Passwords do not match.  Please re-enter.");
  document.getElementById('pwd').focus();}
}


function testPassword(passwd)
{
		var intScore   = 0
		var strVerdict = "weak"
		var strLog     = ""
		
		// PASSWORD LENGTH
		if (passwd.length<5)                         // length 4 or less
		{
			intScore = (intScore+3)
			strLog   = strLog + "3 points for length (" + passwd.length + ")\n"
		}
		else if (passwd.length>4 && passwd.length<8) // length between 5 and 7
		{
			intScore = (intScore+6)
			strLog   = strLog + "6 points for length (" + passwd.length + ")\n"
		}
		else if (passwd.length>7 && passwd.length<16)// length between 8 and 15
		{
			intScore = (intScore+12)
			strLog   = strLog + "12 points for length (" + passwd.length + ")\n"
		}
		else if (passwd.length>15)                    // length 16 or more
		{
			intScore = (intScore+18)
			strLog   = strLog + "18 point for length (" + passwd.length + ")\n"
		}
		
		
		// LETTERS (Not exactly implemented as dictacted above because of my limited understanding of Regex)
		if (passwd.match(/[a-z]/))                              // [verified] at least one lower case letter
		{
			intScore = (intScore+1)
			strLog   = strLog + "1 point for at least one lower case char\n"
		}
		
		if (passwd.match(/[A-Z]/))                              // [verified] at least one upper case letter
		{
			intScore = (intScore+5)
			strLog   = strLog + "5 points for at least one upper case char\n"
		}
		
		// NUMBERS
		if (passwd.match(/\d+/))                                 // [verified] at least one number
		{
			intScore = (intScore+5)
			strLog   = strLog + "5 points for at least one number\n"
		}
		
		if (passwd.match(/(.*[0-9].*[0-9].*[0-9])/))             // [verified] at least three numbers
		{
			intScore = (intScore+5)
			strLog   = strLog + "5 points for at least three numbers\n"
		}
		
		
		// SPECIAL CHAR
		if (passwd.match(/.[!,@,#,$,%,^,&,*,?,_,~]/))            // [verified] at least one special character
		{
			intScore = (intScore+5)
			strLog   = strLog + "5 points for at least one special char\n"
		}
		
									 // [verified] at least two special characters
		if (passwd.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/))
		{
			intScore = (intScore+5)
			strLog   = strLog + "5 points for at least two special chars\n"
		}
	
		
		// COMBOS
		if (passwd.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/))        // [verified] both upper and lower case
		{
			intScore = (intScore+2)
			strLog   = strLog + "2 combo points for upper and lower letters\n"
		}

		if (passwd.match(/([a-zA-Z])/) && passwd.match(/([0-9])/)) // [verified] both letters and numbers
		{
			intScore = (intScore+2)
			strLog   = strLog + "2 combo points for letters and numbers\n"
		}
 
									// [verified] letters, numbers, and special characters
		if (passwd.match(/([a-zA-Z0-9].*[!,@,#,$,%,^,&,*,?,_,~])|([!,@,#,$,%,^,&,*,?,_,~].*[a-zA-Z0-9])/))
		{
			intScore = (intScore+2)
			strLog   = strLog + "2 combo points for letters, numbers and special chars\n"
		}
	
	
		if(intScore < 16)
		{
		   strVerdict = "weak"
		}
		else if (intScore > 15 && intScore < 25)
		{
		   strVerdict = "mediocre"
		}
		else if (intScore > 24 && intScore < 35)
		{
		   strVerdict = "acceptable"
		}
		else if (intScore > 34 && intScore < 45)
		{
		   strVerdict = "strong"
		}
		else
		{
		   strVerdict = "strongest"
		}
	
	document.forms.registerform.verdict.value = (strVerdict)
	

}


function requiredfields() {
var themessage = "You are required to complete the following fields: ";
if (document.registerform.Name.value=="") {
themessage = themessage + " - Name";
}
if (document.registerform.CompanyName.value=="" ) {
themessage = themessage + " -  Company/Organization";
}
if (document.registerform.Phone.value=="") {
themessage = themessage + " -  Phone";
}
if (document.registerform.Email.value=="") {
themessage = themessage + " -  Email";
}
if (document.registerform.password2.value=="") {
themessage = themessage + " -  Password";
}



//alert if fields are empty and cancel form submit
if (themessage == "You are required to complete the following fields: ") {
document.registerform.submit();
}
else {
alert(themessage);
return false;
   }
}



function reqscenfields() {
var themessage = "You are required to complete the following fields: ";
if (document.scenform.scenario_name.value=="") {
themessage = themessage + " - Scenario Name";
}
if (document.scenform.startdate.value=="" ) {
themessage = themessage + " -  Start Date";
}
if (document.scenform.analyst_name.value=="") {
themessage = themessage + " -  Analyst Name";
}
if (document.scenform.analyst_email.value=="") {
themessage = themessage + " -  Analyst Email";
}



//alert if fields are empty and cancel form submit
if (themessage == "You are required to complete the following fields: ") {
document.scenform.submit();
}
else {
alert(themessage);
return false;
   }
}



function scenariofields() {
var themessage = "You are required to complete the following fields: ";
if (document.scenario.scenario_name.value=="") {
themessage = themessage + " - Scenario Name";
}
if (document.scenario.startdate.value=="" ) {
themessage = themessage + " -  Start Date";
}
if (document.scenario.analyst_name.value=="") {
themessage = themessage + " -  Analyst Name";
}
if (document.scenario.analyst_email.value=="") {
themessage = themessage + " -  Analyst Email";
}



//alert if fields are empty and cancel form submit
if (themessage == "You are required to complete the following fields: ") {
document.scenario.submit();
}
else {
alert(themessage);
return false;
   }
}




//for the file called users/moreincomes.asp
//the following is going to populate all the income fields from that date forward with the amount in the current field
//but it will clear out and make ZERO all the income fields before that date
//this should be on the fly without a callback to the server, client side

function popincomerow(sy,iid) {
	
//ftc stands for fields to change
//ftcbase stands for the base point
ftcbase = "oiamount"+sy+"_"+iid;
ftc0 = "oiamount0_"+iid;
ftc1 = "oiamount1_"+iid;
ftc2 = "oiamount2_"+iid;
ftc3 = "oiamount3_"+iid;
ftc4 = "oiamount4_"+iid;
ftc5 = "oiamount5_"+iid;
ftc6 = "oiamount6_"+iid;


//alert("did it get here? " + ftcbase);

switch (sy) {
case "0":
//document.getElementById(ftc0).value=document.getElementById(ftcbase).value;
document.getElementById(ftc1).value=document.getElementById(ftcbase).value;
document.getElementById(ftc2).value=document.getElementById(ftcbase).value;
document.getElementById(ftc3).value=document.getElementById(ftcbase).value;
document.getElementById(ftc4).value=document.getElementById(ftcbase).value;
document.getElementById(ftc5).value=document.getElementById(ftcbase).value;
document.getElementById(ftc6).value=document.getElementById(ftcbase).value;
 break;
case "1":
document.getElementById(ftc0).value=0;
//document.getElementById(ftc1).value=document.getElementById(ftcbase).value;
document.getElementById(ftc2).value=document.getElementById(ftcbase).value;
document.getElementById(ftc3).value=document.getElementById(ftcbase).value;
document.getElementById(ftc4).value=document.getElementById(ftcbase).value;
document.getElementById(ftc5).value=document.getElementById(ftcbase).value;
document.getElementById(ftc6).value=document.getElementById(ftcbase).value;
  break;
case "2":
document.getElementById(ftc0).value=0;
document.getElementById(ftc1).value=0;
//document.getElementById(ftc2).value=document.getElementById(ftcbase).value;
document.getElementById(ftc3).value=document.getElementById(ftcbase).value;
document.getElementById(ftc4).value=document.getElementById(ftcbase).value;
document.getElementById(ftc5).value=document.getElementById(ftcbase).value;
document.getElementById(ftc6).value=document.getElementById(ftcbase).value;
  break;
case "3":
document.getElementById(ftc0).value=0;
document.getElementById(ftc1).value=0;
document.getElementById(ftc2).value=0;
//document.getElementById(ftc3).value=document.getElementById(ftcbase).value;
document.getElementById(ftc4).value=document.getElementById(ftcbase).value;
document.getElementById(ftc5).value=document.getElementById(ftcbase).value;
document.getElementById(ftc6).value=document.getElementById(ftcbase).value;
  break;
case "4":
document.getElementById(ftc0).value=0;
document.getElementById(ftc1).value=0;
document.getElementById(ftc2).value=0;
document.getElementById(ftc3).value=0;
//document.getElementById(ftc4).value=document.getElementById(ftcbase).value;
document.getElementById(ftc5).value=document.getElementById(ftcbase).value;
document.getElementById(ftc6).value=document.getElementById(ftcbase).value;
  break;
case "5":
document.getElementById(ftc0).value=0;
document.getElementById(ftc1).value=0;
document.getElementById(ftc2).value=0;
document.getElementById(ftc3).value=0;
document.getElementById(ftc4).value=0;
//document.getElementById(ftc5).value=document.getElementById(ftcbase).value;
document.getElementById(ftc6).value=document.getElementById(ftcbase).value;
  break;
case "6":
document.getElementById(ftc0).value=0;
document.getElementById(ftc1).value=0;
document.getElementById(ftc2).value=0;
document.getElementById(ftc3).value=0;
document.getElementById(ftc4).value=0;
document.getElementById(ftc5).value=0;
//document.getElementById(ftc6).value=document.getElementById(ftcbase).value;
  break;
default:
document.getElementById(ftc0).value=0;
document.getElementById(ftc1).value=0;
document.getElementById(ftc2).value=0;
document.getElementById(ftc3).value=0;
document.getElementById(ftc4).value=0;
document.getElementById(ftc5).value=0;
document.getElementById(ftc6).value=0;
}


//now add them back into the totals for that line using figureSystemIncome() in the ajax.js file
figureSystemIncome();

}

//end moreincomes.asp
