// contracts.js
// Copyright Doug Ashbaugh 2008-2010 - All Rights Reserved

var scriptname = "contracts.js"; 
var ldebug = false;

function logit(msg)
{ 
	try 
	{ 
		if ( ldebug ) 
		{
			var finalMsg; 
			finalMsg = "Survey Debug (" + scriptname +"): " + msg + "<br>"; 
			document.getElementById('logger').innerHTML+=finalMsg; 
		}
	} catch(e) { 
		logerr("logger error: " + msg); 
	} 
} 

function logerr(msg)
{ 
	try 
	{
		var finalMsg; 
		finalMsg = "Survey Debug (" + scriptname +"): " + msg + "<br>"; 
		document.getElementById('logger').innerHTML+=finalMsg; 
	} catch(e) { 
		alert("logger error: " + msg); 
	} 
} 

logit("Loading started."); 

function showDiv(id){document.getElementById(id).style.display="block";} 
function hideDiv(id){document.getElementById(id).style.display='none';} 

function LTrim(s){var pat = /^\s+/;return(s.replace(pat,''));}
function RTrim(s){var pat = /\s+$/;return(s.replace(pat,''));}
function Trim(str){return(RTrim(LTrim(str)));}

function enableTextBox(id)
{
	try 
	{
        document.getElementById(id).disabled=false; 
        document.getElementById(id).style.backgroundColor="#FFFFFF";
	} catch(e) {
		alert("Error in script contracts.js in function enableTextBox("+id+"):" + e.message);	
	}
} 

function disableTextBox(id)
{
	try 
	{
        document.getElementById(id).disabled=true; 
        document.getElementById(id).style.backgroundColor="#F0F0F0"; 
	} catch(e) {
		alert("Error in script contracts.js in function disableTextBox("+id+"):" + e.message);	
	}
} 

function unCheckList(list)
{
	try 
	{ 
        ids = new Array() 
        ids = list.split(','); 
        for (var i=0; i<ids.length; i++) { 
			unCheck(ids[i]); 
        }
	} catch(e) {
		alert("Error in script contracts.js in function unCheckList("+list+"):" + e.message);	
	}
} 

function getValFromList(id)
{
	try 
	{
        logit("getValFromList entry with id: " + id); 
        var pagesObj = document.getElementById(id); 
        var index = pagesObj.selectedIndex; 
        logit("...getValFromList selectedIndex: " + index); 
        var val = pagesObj.options[index].value; 
        logit("getValFromList: index="+index+", value=" + val); 
        return(Trim(val)); 
	} catch(e) {
		alert("Error in script contracts.js in function getValFromList("+id+"):" + e.message);	
	}
} 

function getVal(id) 
{
	try 
	{
        logit("getVal entry with id: " + id); 
        var val = document.getElementById(id).value; 
        logit("...getVal value of this element is: " + val); 
        return(Trim(val)); 
	} catch(e) {
		alert("Error in script contracts.js in function getVal():" + e.message);	
	}
} 

function setVal(id, val)
{
	try 
	{
        logit("setVal entry with id: " + id + ", val=" + val); 
        document.getElementById(id).value=val; 
	} catch(e) {
		alert("Error in script contracts.js in function setVal("+id+","+val+"):" + e.message);	
	}
} 

function IsNumeric(sText){ 
        var ValidChars = "-0123456789."; 
        var Char; 
        for (var i=0; i < sText.length; i++){ 
			Char = sText.charAt(i); 
			if (ValidChars.indexOf(Char) == -1){ 
					return(false); 
			} 
        } 
        return(true); 
} 

function IsInteger(sText){ 
        var ValidChars = "0123456789"; 
        var Char; 
        logit("IsInteger(): sText="+sText+" sText.length:"+sText.length); 
        for (var i=0; i < sText.length; i++){ 
			Char = sText.charAt(i); 
			if (ValidChars.indexOf(Char) == -1){ 
					logit("IsInteger(): sText="+sText+" Char: " + Char + " not found in sTest. Returning false."); 
					return(false); 
			} 
        } 
        return(true); 
} 

function IsRealInt(sText){ 
        var ValidChars = "123456789"; 
        var Char; 
        //logit("IsInteger(): sText="+sText+" sText.length:"+sText.length); 
        for (var i=0; i < sText.length; i++){ 
                Char = sText.charAt(i); 
                if (ValidChars.indexOf(Char) == -1){ 
                        //logit("IsInteger(): sText="+sText+" Char: " + Char + " not found in sTest. Returning false."); 
                        return(false); 
                } 
        } 
        return(true); 
} 

function AttachEvent(obj,evt,fnc,useCapture,note){ 
        if (!useCapture) useCapture=false; 
        if (obj.addEventListener){ 
                obj.addEventListener(evt,fnc,useCapture); 
                return true; 
        } else if (obj.attachEvent) return obj.attachEvent("on"+evt,fnc); 
        else{ 
                MyAttachEvent(obj,evt,fnc); 
                obj['on'+evt]=function(){ MyFireEvent(obj,evt) }; 
        } 
} 

function doAttach(id, process)
{ 
	try { 
		var events = new Array; 
		var obj = document.getElementById(id); 
		events[0]='change'; 
		//events[1]='mouseup'; 
		//events[2]='mouseout'; 
		//events[3]='click'; 
		//events[4]='hover'; 
		for (var i=0; i<events.length; i++) { 
				AttachEvent(obj, events[i], process, false, ''); 
		} 
	} catch(e) { 
		logerr("ERROR in doAttach for object: " + id); 
	} 
} 

//The following are for browsers like NS4 or IE5Mac which don't support either 
//attachEvent or addEventListener 
function MyAttachEvent(obj,evt,fnc){ 
        if (!obj.myEvents) obj.myEvents={}; 
        if (!obj.myEvents[evt]) obj.myEvents[evt]=[]; 
        var evts = obj.myEvents[evt]; 
        evts[evts.length]=fnc; 
} 
function MyFireEvent(obj,evt){ 
        if (!obj || !obj.myEvents || !obj.myEvents[evt]) return; 
        var evts = obj.myEvents[evt]; 
        for (var i=0,len=evts.length;i<len;i++) evts[i](); 
} 

function unCheck(id) { 
	try {
		document.getElementById(id).checked=false; 
	} catch(e) { 
		logerr("ERROR: unCheck("+id+") failed. Re: " + e); 
	} 
}

function doCheck(id) { 
	try {
		document.getElementById(id).checked=true; 
	} catch(e) { 
		logerr("ERROR: doCheck("+id+") failed. Re: " + e); 
	}
} 

function isChecked(id){ 
	try {
        return(document.getElementById(id).checked); 
	} catch(e) { 
		logerr("ERROR: isChecked("+id+") failed. Re: " + e); 
	}
} 

function unCheckAll(){
	unCheck('c_common1_docs');
	unCheck('c_common2_docs');
	unCheck('c_affiliate_docs');
	unCheck('c_beta_docs');
	unCheck('c_reseller_docs');
	unCheck('c_nodeowner_docs');
	unCheck('c_trafficsoldier_docs');
	unCheck('c_bizopdisclosure');
	unCheck('c_nodeowner_addendums_docs');
	unCheck('c_hosting_docs');
	unCheck('c_proservices_docs');
}

function setupAffiliate(){
	unCheckAll();
	doCheck('c_common1_docs');
	doCheck('c_common2_docs');
	doCheck('c_beta_docs');
	doCheck('c_affiliate_docs');
	//doCheck('c_bizopdisclosure');
}

function setupReseller(){
	unCheckAll();
	doCheck('c_common1_docs');
	doCheck('c_common2_docs');
	doCheck('c_beta_docs');
	doCheck('c_reseller_docs');
	doCheck('c_trafficsoldier_docs');
	doCheck('c_bizopdisclosure');
}

function setupNodeOwner(){
	unCheckAll();
	doCheck('c_common1_docs');
	doCheck('c_common2_docs');
	doCheck('c_beta_docs');
	doCheck('c_affiliate_docs');
	doCheck('c_reseller_docs');
	doCheck('c_nodeowner_docs');
	doCheck('c_trafficsoldier_docs');
	doCheck('c_bizopdisclosure');
}

function setupNodeOwnerAddendums(){
	unCheckAll();
	setupNodeOwner();
	doCheck('c_nodeowner_addendums_docs');
}

function setupHosting(){
	unCheckAll();
	doCheck('c_common1_docs');
	doCheck('c_common2_docs');
	doCheck('c_hosting_docs');
}

function setupProServices(){
	unCheckAll();
	doCheck('c_common1_docs');
	doCheck('c_common2_docs');
	doCheck('c_proservices_docs');
}

function setContractType() {
	var type = getValFromList('c_contract_type');
	switch(type) {
		case "":
			alert("Please select a contract type");
			break;
		
		case "Affiliate Agreement":
			//alert("Type:"+type);
			setupAffiliate();
			break;
		
		case "Reseller Agreement - Iron":
			//alert("Type:"+type);
			setupReseller();
			break;
			
		case "Reseller Agreement - Copper":
			//alert("Type:"+type);
			setupReseller();
			break;
		
		case "Reseller Agreement - Bronze":
			//alert("Type:"+type);
			setupReseller();
			break;
			
		case "Reseller Agreement - Silver":
			//alert("Type:"+type);
			setupReseller();
			break;
		
		case "Reseller Agreement - Gold":
			//alert("Type:"+type);
			setupReseller();
			break;
			
		case "Reseller Agreement - Platinum":
			//alert("Type:"+type);
			setupReseller();
			break;
			
		case "Reseller Agreement - Titanium":
			//alert("Type:"+type);
			setupReseller();
			break;
			
		case "Reseller Agreement - Explorer":
			//alert("Type:"+type);
			setupReseller();
			break;
		
		case "Reseller Agreement - Diamond":
			//alert("Type:"+type);
			setupReseller();
			break;
		
		case "Reseller Agreement - Pioneer":
			//alert("Type:"+type);
			setupReseller();
			break;
		
		case "Reseller Agreement - Investor":
			//alert("Type:"+type);
			setupReseller();
			break;
	
		case "TrafficSoldier License":
			//alert("Type:"+type);
			setupReseller();
			break;
	
		case "Node - Personal Trainer":
			//alert("Type:"+type);
			setupNodeOwner();
			break;
			
		case "Node - Family Business":
			//alert("Type:"+type);
			setupNodeOwner();
			break;
		
		case "Node - Private Eyes I":
			//alert("Type:"+type);
			setupNodeOwner();
			break;
			
		case "Node - Private Eyes II":
			//alert("Type:"+type);
			setupNodeOwner();
			break;
			
		case "Node - Country Club":
			//alert("Type:"+type);
			setupNodeOwner();
			break;
			
		case "Node - Township":
			//alert("Type:"+type);
			setupNodeOwner();
			break;
			
		case "Node - City Lights":
			//alert("Type:"+type);
			setupNodeOwner();
			break;
		
		case "Node - County Limits":
			//alert("Type:"+type);
			setupNodeOwner();
			break;
			
		case "Node - Statehouse":
			//alert("Type:"+type);
			setupNodeOwner();
			break;
			
		case "Node - Ambassador":
			//alert("Type:"+type);
			setupNodeOwner();
			break;
		
		case "Node - President":
			//alert("Type:"+type);
			setupNodeOwner();
			break;
			
		case "Node - Continental":
			//alert("Type:"+type);
			setupNodeOwner();
			break;
			
		case "Professional Services":
			setupProServices();
			break;
			
		case "Hosting Services":
			setupHosting();
			break;
			
		default:
			if (type.match(/Node Owners Addendum/)) {
				// alert("Match on Node Owners Addendum: "+type);
				setupNodeOwnerAddendums();
				break;
			} else {
					// do default settings
			}
	} // switch
	
}

function doValidation()
{
	try 
	{
		var rc=true;
		var v='';
		var step = 0;
		
		//alert("Doing validation");
		
		// Step 1 validation - contract ID
		step = 1;
		var contractId = getVal('c_contractid');
		if ( ! contractId || contractId.length < 9 ) {
			alert("Enter a contract ID or phone number at Step 1. It must be at least 9 digits long.");
			rc=false; 
			return(rc);
		}
		
		// Step 2 validation - Select a contract type
		step = 2;
		var type = getValFromList('c_contract_type');
		if ( ! type ) {
			alert("Please select contract type at Step 2.");
			rc = false;
			return(rc);
		}
		
		// Step 3 - email address and contact info check
		step = 3;
		var email1 = getVal('c_email');
		var email2 = getVal('c_email2');
		if (! email1 || ! email2 ) {
			alert("Please complete email fields at Step 5.");
			rc=false;
			return(rc);
		}
		if (email1 != email2) {
			alert("Please correct the email fields at Step 5. They do not match.");
			rc=false;
			return(rc);
		}
		
		step = 4;
		var fname = getVal('c_fname');
		var lname = getVal('c_lname');
		if (! fname || ! lname ) {
			alert("Please complete first and last name fields at Step 5.");
			rc=false;
			return(rc);
		}
		
		step = 5;
		v = getVal('c_phonenumber');
		if (! v ) {
			alert("Please complete phone number field at Step 5.");
			rc=false;
			return(rc);
		}
		
		// Step 6 . Contract acceptance
		step = 6;
		v = getVal('c_ssnum');
		if (! v ) {
			alert("Please complete the Electronic Signature fields (Tax Id) at Step 6.");
			rc=false;
			return(rc);
		}
		
		step = 7;
		v = getVal('c_signature');
		if (! v ) {
			alert("Please complete the Electronic Signature fields (Signature) at Step 6.");
			rc=false;
			return(rc);
		}
		
		step = 8;
		var date = getVal('c_datesigned');
		if (! date ) {
			alert("Please complete the Electronic Signature fields (Date) at Step 6.");
			rc=false;
			return(rc);
		}
		if ( date.length != 10) {
			alert("Date at Step 6 does not appear to be formatted properly. Use MM-DD-YYYY format.");
			rc=false;
			return(rc);
		}
		
		//alert("Did validation, rc=" + rc);
		
		return(rc);
		
	} catch(e) {
		alert("Error occurred in script contracts.js during validation. " + e.message + ', step=' + step);	
	}
}

// setTimeout("RunAll()", 350); 

logit("Loaded"); 
//alert("script " + scriptname + " loaded"); 
