// contracts.js
// Copyright Doug Ashbaugh 2008 - All Rights Reserved

var scriptname = "contracts.js"; 

function logit(msg){ 
        try { 
                return(true); 
                var finalMsg; 
                finalMsg = "Survey Debug (" + scriptname +"): " + msg + "<br>"; 
                document.getElementById('logger').innerHTML+=finalMsg; 
        } catch(e) { 
                logerr("logger error: " + msg); 
        } 
} 

function logerr(msg){ 
        try { 
                //return(true); 
                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 enableTextBox(id){ 
        document.getElementById(id).disabled=false; 
        document.getElementById(id).style.backgroundColor="#FFFFFF"; 
} 

function disableTextBox(id){ 
        document.getElementById(id).disabled=true; 
        document.getElementById(id).style.backgroundColor="#F0F0F0"; 
} 

function unCheckList(list){ 
        // logit("unCheckList("+list+")"); 
        ids = new Array() 
        ids = list.split(','); 
        for (var i=0; i<ids.length; i++) { 
                // logit("unCheckList calling unCheck(" + ids[i]+")"); 
                unCheck(ids[i]); 
        } 
} 

function getValFromList(id){ 
        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(val); 
} 

function getVal(id) { 
        logit("getVal entry with id: " + id); 
        var val = document.getElementById(id).value; 
        logit("...getVal value of this element is: " + val); 
        return(val); 
} 

function setVal(id, val){ 
        logit("setVal entry with id: " + id + ", val=" + val); 
        document.getElementById(id).value=val; 
} 

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(){
	var rc=true;
	var v="";
	
	// Step 1 validation - contract ID
	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
	var type = getValFromList('c_contract_type');
	if ( ! type ) {
		alert("Please select contract type at Step 2.");
		rc = false;
		return(rc);
	}
	
	// Step 5 - email address and contact info check
	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);
	}
	
	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);
	}
	
	v = getVal('c_phonenumber');
	if (! v ) {
		alert("Please complete phone number field at Step 5.");
		rc=false;
		return(rc);
	}
	
	// Step 6 . Contract acceptance
	v = getVal('c_ssnum');
	if (! v ) {
		alert("Please complete the Electronic Signature fields (tax id) at Step 6.");
		rc=false;
		return(rc);
	}
	
	v = getVal('c_signature');
	if (! v ) {
		alert("Please complete the Electronic Signature fields (signature) at Step 6.");
		rc=false;
		return(rc);
	}
	
	var date = getVal('c_datesigned');
	if (! date ) {
		alert("Please complete the Electronic Signature fields (date signed) 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);
	}
	
	
	return(rc);
}

// setTimeout("RunAll()", 350); 

logit("Loaded"); 
//alert("script " + scriptname + " loaded"); 