﻿// Common JS functions used by all regform pages

/*** GLOBAL JS FUNCTIONS ***/
function getObj(name) {
    if (document.getElementById) {
	    return document.getElementById(name);
    } else if (document.all) {
	    return document.all[name];
    } else if (document.layers) {
	    return document.layers[name];
    } else return false;
}

function CheckKeyCodeNumericOnly(ev) {
    if( (ev.keyCode == 189 || ev.keyCode == 109) ||
        (ev.keyCode >= 48 && ev.keyCode <= 57) || 
        (ev.keyCode >= 96 && ev.keyCode <= 105) ||
        (ev.keyCode == 8 ) || ev.keyCode == 9 || ev.keyCode == 109) {
            return true;
    } else {
        return false;
    }
}

function stripHTML() {
    var re= /<\S[^><]*>/g
    for(i=0; i<arguments.length; i++)
        arguments[i].value=arguments[i].value.replace(re, "")
}

String.prototype.replaceAll=function(s1, s2) { 
  return this.replace(new RegExp(s1,"g"), s2);
}
function wordCounter(field, countfield, maxlimit) {
    wordcounter = (field.value.length>0) ? field.value.replaceAll('[^ ]','').length + 1 : 0;
    if(wordcounter > maxlimit && event.keyCode != 8) {
        return false;
    } else {
        if(countfield!=null) {
            var remain = maxlimit - wordcounter;
            remain = (remain < 0) ? 0 : remain;
            getObj(countfield).innerHTML = remain + " words remaining";
        }
        return true;
    }
}

function popAdditionalInfo(section) {
    //alert(section);
    urlMoreInfo = "/StaticContent/BusinessNetwork/additionalInfoPopup.html#" + section;
    
    moreInfoWin = window.open (urlMoreInfo, "2010ccMoreInfoPage", "toolbar=0,location=0,status=0,scrollbars=1,width=600,height=430");
    moreInfoWin.focus();
}

var boolHasLastStepUpdate = false;
function updateLastStepDB() {
    if(!boolHasLastStepUpdate) {
        ajaxUpdate('businessNetworkRegistrationLastStepComleted',currentScreen);
        boolHasLastStepUpdate = true;
        //alert('updated last step reached: ' + currentScreen);
    }
}

function dspToggle(section) {
    var tik = getObj("tik"+section);
    var area = getObj("area"+section);
    tik.innerHTML = (tik.innerHTML=='+') ? '-' : '+';
    area.className = (area.className=='screenHidden') ? 'screenVisible' : 'screenHidden';
}

function updateSectionHeaderImages(screenID) {
    var imgHtml = '';
    
    //alert(lastStepCompletedInternal);
    
    for(i=1; i<=numScreens; i++) {
        var mode = (i>screenID && i > lastStepCompletedInternal-1) ? 'off' : 'done';
        if(i==lastStepCompletedInternal) mode = 'reach';
        if(i==screenID) mode = 'on';
        
        var url = (i==5) ? 'review.aspx' : 'regform' + i + '.aspx';
        if((mode == 'done' || mode != 'off') && i!=screenID) imgHtml += '<a href="'+url+'">';
        imgHtml += '<img src="/StaticContent/images/BusinessNetwork/'+i+mode+'.gif" alt="" border="0" />';
        if((mode == 'done' || mode != 'off') && i!=screenID) imgHtml += '</a>';
    }
    var imgArea = getObj("sectionHeaderImagesArea");
    imgArea.innerHTML = imgHtml;
}

function checkAndUpdateTextArea(textAreaRef, propertyName, maxNumWords, countfieldID) {
    //alert(textAreaRef);
    
    stripHTML(textAreaRef);
    
    var text = textAreaRef.value;
    if(!wordCounter(textAreaRef,null,maxNumWords) || text.length>3000) {
        //find last word at maxNumWords count
        var wordCount = 0;
        var indexLast = 0;
        for(i=0; i<text.length; i++) {
            if(text.charAt(i)==' ') wordCount++;
            if(wordCount>=maxNumWords) {
                indexLast = i;
                break; //exit for loop
            }
        }
        
        textAreaRef.value = text.substr(0,indexLast); //truncate the text
        if(countfieldID!=null) getObj(countfieldID).innerHTML = "0 words remaining"; //update the countOutput
        
        alert("The text provided is too long and has been truncated");
    }
    
    ajaxUpdate(propertyName, textAreaRef.value);
}

/*** AJAX JS FUNCTIONS ***/
var http_request = false;
var ajaxUrl = '../ajaxUpdateUser.aspx';

function makePOSTRequest(parameters) {
    http_request = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
            // set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            http_request.overrideMimeType('text/html');
        }
    } else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }
    if (!http_request) {
        alert('Cannot create XMLHTTP instance');
        return false;
    }

    http_request.onreadystatechange = alertContents;
    http_request.open('POST', ajaxUrl, true);
    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    http_request.setRequestHeader("Content-length", parameters.length);
    http_request.setRequestHeader("Connection", "close");
    http_request.send(parameters);
}

function alertContents() {
    if (http_request.readyState == 4) {
        //alert(http_request.status);
        
        if (http_request.status == 200) {
            var ret = http_request.responseText;
            
            if(ret.indexOf(';') > -1)
            {
                var rData = ret.split(';');
                if(rData[0]=='SESSION_EXPIRED')
                {
                    alert('Your session has expired! We will attempt to recover the data you already entered.\nTo prevent this message, please do no become unactive during registration for longer than 30 minutes.');
                    if(rData[1].length > 0) window.location.href=rData[1];
                }
            }
            
            
            //alert(http_request.responseText);
            //result = http_request.responseText;
        }
        /*
        else {
            //alert('There was a problem with the request.');
            //alert(http_request.responseText);
            document.write(http_request.responseText);
        }*/
    }
}

function ajaxUpdate(propertyName, propertyValue) {
    //alert(userGUID);
    var strPost = "u=" + encodeURI(userGUID) + 
                  "&propertyName=" + escape(propertyName) +
                  "&propertyValue=" + escape(propertyValue);
    //alert(strPost);
    makePOSTRequest(strPost);
}

function ajaxUpdateNaics() {
    //alert("ajaxUpdateNaics");
    var naicsCode1 = getObj("naicsCode1");
    var naicsCode2 = getObj("naicsCode2");
    var naicsCode3 = getObj("naicsCode3");
    
    var code = 1; //default to unknown
    //grab the latest code
    if(naicsCode1.value > 0) code = naicsCode1.value;
    if(naicsCode2.value > 0) code = naicsCode2.value;
    if(naicsCode3.value > 0) code = naicsCode3.value;
    
    ajaxUpdate('naicsCode',code);
}


/**** SCREEN MANAGEMENT *****/

var numScreens=3; //number of screens

function changeScreen(screenID) {

    currentScreen = screenID; //update tracker
    
    //review screen is on different page
    if(screenID==4) {
        window.location.href='review.aspx';
        return; //break out of function
    }
    
    //call page by screenID
    window.location.href='regform' + screenID + '.aspx';
}

function showNextScreen() {
    if(validateScreen(currentScreen)) { //validate form elements pertaining to current screen
        changeScreen(currentScreen+1);
    }
}

function showPrevScreen() {
    changeScreen(currentScreen-1);
}

function checkNextPrevButtonDisable() {
        var btnPrev1 = getObj("btnPrev1");
        var btnNext1 = getObj("btnNext1");
        
        if(btnPrev1) btnPrev1.disabled = (currentScreen==1);
        if(btnNext1) btnNext1.disabled = (currentScreen==numScreens+1);
        
        var btnPrev2 = getObj("btnPrev2");
        var btnNext2 = getObj("btnNext2");
        
        if(btnPrev2) btnPrev2.disabled = (currentScreen==1);
        if(btnNext2) btnNext2.disabled = (currentScreen==numScreens+1);

}

/*** VALIDATIONS FUNCTIONS ***/

function validateScreen(screenID) {
    
    var strError = '';
    //var frm = document.frmRegistration;
    
    //regex for valid email...
    var validEmailFilter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    
    switch(screenID) {
        case 1:
            if(getObj("txtCompanyName").value.length==0) strError += '\n-Company Name';
            if(getObj("txtAddress").value.length==0) strError += '\n-Address';
            if(getObj("txtCity").value.length==0) strError += '\n-City';
            if(getObj("selectCountry").value<=1) strError += '\n-Country';
            //if(getObj("txtPostalCode").value.length==0) strError += '\n-PostalCode';
            //if(getObj("txtPhone").value.length==0) strError += '\n-Phone';
            //if(getObj("txtFax").value.length==0) strError += '\n-Fax';
            //if(getObj("txtWebsite").value.length==0) strError += '\n-Website';
            if(getObj("txtContactLastName").value.length==0) strError += '\n-Contact Last Name';
            if(getObj("txtContactFirstName").value.length==0) strError += '\n-Contact First Name';
            if(getObj("txtContactTitle").value.length==0) strError += '\n-Contact Title';
            if(getObj("txtContactPhone").value.length==0) strError += '\n-Contact Phone';
            
            var contactEmail = getObj("txtContactEmail").value;
            var contactEmailConfirm = getObj("txtContactEmailConfirm").value;
            if(!validEmailFilter.test(contactEmail) || contactEmail != contactEmailConfirm) strError += '\n-Contact Email and Contact Email Confirm';
            
            if(getObj("txtReferenceOrganization").value.length==0) strError += '\n-Reference Origanization';
            
            break;
            
        case 2:
            if(getObj("selectYearEstablished").value<=1) strError += '\n-Year Established';
            if(getObj("selectPrimaryProductService").value<=1) strError += '\n-Primary Products / Services';
            if(getObj("selectTypeOfFacility").value<=1) strError += '\n-Type of Facility';
            if(getObj("selectNumberOfEmployees").value<=1) strError += '\n-Number of Employees';
            //if(getObj("selectGrossAnnualSale").value<=1) strError += '\n-Gross Annual Sale';
            if(getObj("selectPercentExportSales").value<=1) strError += '\n-Export Sales';
            if(getObj("naicsCode1").value<=0) strError += '\n-Industry Sector Classification';
            if(getObj("txtCompanyProfile").value.length==0) strError += '\n-Profile';
            //if(getObj("txtStrategicBusinessGoals").value.length==0) strError += '\n-StrategicBusinessGoals';         
            break;
    }
    
    if(strError.length > 0) {
        alert("Please make sure the following fields are completed correctly:\n"+strError);
        return false;
    } else {
        return true;
    }
}