function acctUtils(s_objname_fp, s_interfacelangpath_fp, s_langoptpath_fp, s_skinoptpath_fp, s_userlang_fp, s_skincookie_fp, s_userlangcookie_fp,s_regpath_fp,s_loginpath_fp,s_acctinfopath_fp,s_acctmaintpath_fp) {
    //the o_regform
    //dependencies: ajax_class.js, utils_class.js
    //constants
    var DEF_BLOCK = 'block';
    var DEF_COOKIELIFE = 365;
    var DEF_EMAILFLDLEN = 100;
    var DEF_EMAILFLDSIZE = 20;
    var DEF_FNAMEFIELDLEN = 50;
    var DEF_FNAMEFIELDSIZE = 20;
    var DEF_HIDDEN = 'hidden';
    var DEF_IDCOUNTRY = 'div-country';
    var DEF_IDCOUNTRYSEL = 'in-country-sel';
    var DEF_IDDAY = 'div-dayselect';
    var DEF_IDEMAIL1 = 'div-email1';
    var DEF_IDEMAIL2 = 'div-email2';
    var DEF_IDGENERICFIELD = 'div-field';
    var DEF_IDGENDER = 'div-genderselect';
    var DEF_IDGENDRSEL = 'in-gender-sel';
    var DEF_IDMONTH = 'div-monthselect';
    var DEF_IDOPTINS = 'div-optins';
    var DEF_IDPWORD1 = 'div-password1';
    var DEF_IDPWORD2 = 'div-password2';
    var DEF_IDSTATE = 'div-state';
    var DEF_IDSTATESEL = 'in-state-sel';
    var DEF_IDSUBMIT = 'div-submit';
    var DEF_IDTXTFLDA = 'in-a-txt';
    var DEF_IDTXTFLDB = 'in-b-txt';
    var DEF_IDUNAME1 = 'div-username1';
    var DEF_IDUNAME2 = 'div-username2';
    var DEF_IDYEAR = 'div-yearselect';
    var DEF_INVCODEFIELDLEN = 32;
    var DEF_INVCODEFIELDSIZE = 15;
    var DEF_NONE = 'none';
    var DEF_OPTINBOXNAMEROOT = 'optin';
    var DEF_POSTCODEFIELDSIZE = 8;
    var DEF_POSTCODEFIELDLEN = 8;
    var DEF_PWORDFLD = 'password';
    var DEF_PWORDFLDLEN = 20;
    var DEF_PWORDFLDSIZE = 20;
    var DEF_REGMAXYEAR = 2008;
    var DEF_REGMINYEAR = 1940;
    var DEF_SCROLL = 'scroll';
    var DEF_TOUBOXNAMEROOT = 'tou';
    var DEF_TXTFLD = 'text';
    var DEF_UNAMEFLDLEN = 20;
    var DEF_UNAMEFLDSIZE = 20;
    var ERR_DUPEUSERNAME = 'err-dupeuser';
    var ERR_MAKEINS = 'err-makeinsert';
    var ERR_NOTYPE = 'err-notype';
    var ERR_POSTREG = 'err-postreg';
    var ERR_PREREG = 'err-prereg';
    var ERR_READGET = 'err-readgetdata';
    var HTML_ADDCHILD = '_label_ - <a href="#" onclick="_objname_.doRegInvCode();">_link_</a>';
    var HTML_BOLDCLOSE = '</b>';
    var HTML_BOLDOPEN = '<b>';
    var HTML_BREAK = '<br/><br/>';
    var HTML_CHILDACCT = '_fname_ (_username_) - ';
    var HTML_CLOSELINK = '<div id="div-closebutton"><a href="#" onclick="_objname_.doCloseCtrl();">[_close_]</a></div>';
    var HTML_EDITOPTIN = '_label_ <a href="#" onclick="_objname_._onclick_();">_link_</a><br/>';
    var HTML_DISCHILDACCT = '<a href="#" onclick="_objname_.doDisableChildAcct(_id_);">_link_</a><br/>';
    var HTML_ENCHILDACCT = '<a href="#" onclick="_objname_.doEnableChildAcct(_id_);">_link_</a><br/>';
    var HTML_REGEDITABLEPROP = '_label_ _value_ <a href="#" onclick="_objname_._onclick_();">_link_</a><br/>';
    var HTML_FORGOTPASSLINK = '<div><a href=\"#\" onclick=\"doInitPasswordLookupForm();\">_desc_</a>';
    var HTML_INPUTDOB = '<div id="div-inputcontainer" class="regbox">\n    <div id="div-yearselect"></div>\n    <div id="div-monthselect"></div>\n    <div id="div-dayselect"></div>\n    <div id="div-submit"></div>\n</div>';
    var HTML_INPUTEMAIL = '<div id="div-inputcontainer" class="regbox">\n    <div id="div-email1"></div>\n    <div id="div-email2"></div>\n    <div id="div-submit"></div>\n</div>';
    var HTML_INPUTGENDER = '<div id="div-inputcontainer" class="regbox">\n    <div id="div-genderselect"></div>\n    <div id="div-submit"></div>\n</div>';
    var HTML_INPUTLOGIN = '<div id="div-login" class="loginbox">\n    <div id="div-username1"></div>\n    <div id="div-password1"></div>\n    <div id="div-submit"></div>\n</div>';
    var HTML_INPUTOPTINS = '<div id="div-inputcontainer" class="regbox">\n    <div id="div-optins"></div>\n    <div id="div-submit"></div>\n</div>';
    var HTML_INPUTPWORD = '<div id="div-inputcontainer" class="regbox">\n    <div id="div-password1"></div>\n    <div id="div-password2"></div>\n    <div id="div-submit"></div>\n</div>';
    var HTML_INPUTSINGLEFIELD = '<div id="div-inputcontainer" class="regbox">\n    <div id="div-field"></div>\n    <div id="div-submit"></div>\n</div>';
    var HTML_INPUTREGION = '<div id="div-inputcontainer" class="regbox">\n    <div id="div-country"></div>\n    <div id="div-state"></div>\n    <div id="div-submit"></div>\n</div>';
    var HTML_INPUTUNAME = '<div id="div-inputcontainer" class="regbox">\n    <div id="div-username1"></div>\n    <div id="div-username2"></div>\n    <div id="div-submit"></div>\n</div>';
    var HTML_LANGITEM = '<img src="smarty_files/templates/images/flag__langcode_.png"> <a href="#" onclick="_objname_.doChooseLang(\'_langcode_\');">_country_ - _langname_</a><br/>';
    var HTML_LINK = '<a href="#" onclick="_objname__onclick_">_label_</a>';
    var HTML_LOGINSUB = 'action=login&type=_type_&username=_username_&password=_password_';
    var HTML_LOGOUT = 'action=logout';
    var HTML_LOOKUPEMAILSUB = 'action=lookupbyemail&type=_type_&email=_email_';
    var HTML_LOOKUPUSERNAMESUB = 'action=lookupbyusername&type=_type_&username=_username_';
    var HTML_MAINTADDCHILD = 'action=addchild&invite_code=_invitecode_';
    var HTML_MAINTDISABLEACCTSUB = 'action=disable&id=_id_';
    var HTML_MAINTEMAILSUB = 'action=updateemail&email=_email_';
    var HTML_MAINTENABLEACCTSUB = 'action=enable&id=_id_';
    var HTML_MAINTOPTINSUB = 'action=updateoptin&optins=_optins_';
    var HTML_MAINTPASSWDSUB = 'action=updatepassword&password=_password_';
    var HTML_MTHDOPASSBYEMAIL = '.doPasswordLookupByEmail();';
    var HTML_MTHDOPASSBYUSER = '.doPasswordLookupByUsername();';
    var HTML_MTHDOPRDOB = '.doProcessDOB();';
    var HTML_MTHDOPREMAIL = '.doProcessEmail();';
    var HTML_MTHDOPREMAILLOOKUP = '.doProcessEmailLookup();';
    var HTML_MTHDOPRUSERNAMELOOKUP = '.doProcessUsernameLookup();';
    var HTML_MTHDOPRFNAME = '.doProcessFName();';
    var HTML_MTHDOPRGENDER = '.doProcessGender();';
    var HTML_MTHDOPRINVCODE = '.doProcessInvCode();';
    var HTML_MTHDOPRLOGIN = '.doProcessLogin();';
    var HTML_MTHDOPROPTIN = '.doProcessOptin();';
    var HTML_MTHDOPRPARENTEMAIL = '.doProcessParentEmail();';
    var HTML_MTHDOPRPOSTCODE = '.doProcessPostalCode();';
    var HTML_MTHDOPRPWORD = '.doProcessPassword();';
    var HTML_MTHDOPRREGION = '.doProcessRegion();';
    var HTML_MTHDOPRTOU = '.doProcessTOU();';
    var HTML_MTHDOPRUNAME = '.doProcessUsername();';
    var HTML_REGLINK = '<div><a href=\"#\" onclick=\"doInitRegForm();\">_desc_</a>';
    var HTML_REGPROP = '_label_ _value_<br/>';
    var HTML_REGSUBADULT = 'type=_type_&dob=_dob_&gender=_gender_&email=_email_&first_name=_fname_&country_id=_country_&state_id=_state_&postal_code=_postalcode_&username=_username_&password=_password_&optins=_optins_';
    var HTML_REGSUBCHILD = 'type=_type_&dob=_dob_&gender=_gender_&email=_email_&first_name=_fname_&username=_username_&password=_password_&parent_email=_parentemail_';
    var HTML_REGSUBPARENT = 'type=_type_&dob=_dob_&gender=_gender_&email=_email_&first_name=_fname_&country_id=_country_&state_id=_state_&postal_code=_postalcode_&username=_username_&password=_password_&optins=_optins_&invite_code=_invitecode_';
    var HTML_REGSUBTEEN = 'type=_type_&dob=_dob_&gender=_gender_&email=_email_&parent_email=_parentemail_&first_name=_fname_&country_id=_country_&state_id=_state_&postal_code=_postalcode_&username=_username_&password=_password_&optins=_optins_&parent_email=_parentemail_';
    var HTML_REGBACKLINK = '<div id="div-backbutton"><a href="#" onclick="_objname_.doRegGoBack();">[_back_]</a></div>';
    //var HTML_SKINITEM = '<div class="skinitem"><a href="#" onclick="_objname_.doChooseSkin(\'_path_\');"><img src="images/skin/_path_/thumbnail.png"></a><span><b>_label-name_:</b> _name_<br/><b>_label-season_:</b> _season_<br/><b>_label-desc_:</b> _desc_<br/><a href="#" onclick="_objname_.doChooseSkin(\'_path_\');">_link_</a></span></div>';
    var HTML_SKINITEM = '<div class="skinitem"><a href="#" onclick="_objname_.doChooseSkin(\'_path_\');"><img src="images/skin/_path_/thumbnail.png"></a><span><b>_label-name_:</b> _name_<br/><a href="#" onclick="_objname_.doChooseSkin(\'_path_\');">_link_</a></span></div>';

    var HTML_SKINTHMBIMG = '';
    var KEY_ACTIVE = 'active';
    var KEY_ADDCHILD = 'addchild';
    var KEY_AGE = 'age';
    var KEY_ADULT = 'adult';
    var KEY_CHILD = 'child';
    var KEY_CHILDREN = 'children';
    var KEY_COMPLETE = 1;
    var KEY_COUNTRY = 'country';
    var KEY_COVER = 'cover';
    var KEY_DESC = 'desc';
    var KEY_DESCACCTMAINT = 'desc-acctmaint';
    var KEY_DESCCHILDACCT = 'desc-childacct';
    var KEY_DESCDOB = 'desc-dob';
    var KEY_DESCEMAIL = 'desc-email';
    var KEY_DESCEMAILLOOKUP = 'desc-emaillookup';
    var KEY_DESCFNAME = 'desc-firstname';
    var KEY_DESCFORGOTPASS = 'desc-forgotpassword';
    var KEY_DESCGENDER = 'desc-gender';
    var KEY_DESCINVCODE = 'desc-invcode';
    var KEY_DESCLNAME = 'desc-lastname';
    var KEY_DESCLOOKUPSUCCESS = 'desc-lookupsuccess';
    var KEY_DESCCONF = 'desc-confirmation';
    var KEY_DESCOPTIN = 'desc-optins';
    var KEY_DESCPARENT = 'desc-parent';
    var KEY_DESCPARENTEMAIL = 'desc-parentemail';
    var KEY_DESCPOSTCODE = 'desc-postacode';
    var KEY_DESCPROCESSING ='desc-processing';
    var KEY_DESCPROCREG = 'desc-processingreg';
    var KEY_DESCPWORD = 'desc-password';
    var KEY_DESCREGION = 'desc-region';
    var KEY_DESCREGSUCCESS = 'desc-regsuccess';
    var KEY_DESCTOU = 'desc-tou';
    var KEY_DESCUNAME = 'desc-username';
    var KEY_DESCUPDATESUCCESS = 'desc-updatesuccess';
    var KEY_DESCUSER = 'desc-user';
    var KEY_DESCUSERNAMELOOKUP = 'desc-usernamelookup';
    var KEY_DIALOG = 'dialog';
    var KEY_DIR = 'dir';
    var KEY_DISABLECHILD = 'disablechild';
    var KEY_DOB = 'dob';
    var KEY_EMAIL = 'email';
    var KEY_EMAILLOOKUP = 'keyemaillookup';
    var KEY_ENABLECHILD = 'enablechild';
    var KEY_ERRDOB = 'err-dob';
    var KEY_ERRDUPEUSER = 'err-dupeuser';
    var KEY_ERREMAIL = 'err-email';
    var KEY_ERREMAILMATCH = 'err-emailmatch';
    var KEY_ERRFNAME = 'err-firstname';
    var KEY_ERRGETREG = 'err-getreg';
    var KEY_ERRINVCODE = 'err-invcode';
    var KEY_ERRLNAME = 'err-lastname';
    var KEY_ERRLOGIN = 'err-login';
    var KEY_ERRLOOKUP = 'err-lookup';
    var KEY_ERRPASSWD = 'err-password';
    var KEY_ERRPOSTCODE = 'err-postalcode';
    var KEY_ERRPOSTREG = 'err-postreg';
    var KEY_ERRPREREG = 'err-prereg';
    var KEY_ERRPWORDMATCH = 'err-pwordmatch';
    var KEY_ERRREGION = 'err-region';
    var KEY_ERRREGTYPE = 'err-regtype';
    var KEY_ERRUPDATE = 'err-update';
    var KEY_ERRTOU = 'err-tou';
    var KEY_ERRUNAME = 'err-uname';
    var KEY_ERRUNAMEMATCH = 'err-unamematch';
    var KEY_ERRUSERINSERT = 'err-userinsert';
    var KEY_FNAME = 'first_name';
    var KEY_GLOBAL = 'global';
    var KEY_ID = 'id';
    var KEY_INVCODE = 'invite_code';
    var KEY_LANGCODE = 'langcode';
    var KEY_LANGNAME = 'langname';
    var KEY_LBLADD = 'label-add';
    var KEY_LBLADDCHILD = 'label-addchild';
    var KEY_LBLBACK = 'label-back';
    var KEY_LBLCLOSE = 'label-close';
    var KEY_LBLDESC = 'label-desc';
    var KEY_LBLDISABLE = 'label-disable';
    var KEY_LBLEDIT = 'label-edit';
    var KEY_LBLEMAIL = 'label-email';
    var KEY_LBLENABLE = 'label-enable';
    var KEY_LBLFORGOTPASS = 'label-forgotpassword';
    var KEY_LBLKNOWEMAIL = 'label-knowemail';
    var KEY_LBLKNOWUSER = 'label-knowusername';
    var KEY_LBLNAME = 'label-name';
    var KEY_LBLNEXT = 'label-next';
    var KEY_LBLOPTINS = 'label-optins';
    var KEY_LBLPASSWORD = 'label-password';
    var KEY_LBLPREV = 'label-previous';
    var KEY_LBLREGISTER = 'label-register';
    var KEY_LBLSEASON = 'label-season';
    var KEY_LBLSTEP = 'label-step';
    var KEY_LBLUPDATE = 'label-update';
    var KEY_LBLUSERNAME = 'label-username';
    var KEY_LISTOPTIN = 'list-optin';
    var KEY_LISTPARENTOPTIN = 'list-parentoptin';
    var KEY_LISTTOU = 'list-tou';
    var KEY_LNKCHSESKIN = 'link-choose';
    var KEY_LOGIN = 'login';
    var KEY_NAME = 'name';
    var KEY_NOINFO = 'noinfo';    
    var KEY_OPTBRANDNEWS = 'brand_news';
    var KEY_OPTBRANDOFFERS = 'brand_offers';
    var KEY_OPTEMAILCHILD = 'email_my_child';
    var KEY_OPTGIFTOFFERS = 'gift_offers';
    var KEY_OPTRELOFFERS = 'related_offers';
    var KEY_OPTSURVEYS = 'brand_surveys';
    var KEY_PARENT = 'parent';
    var KEY_PASSWORD = 'password';
    var KEY_PREAMBLE = 'preamble';
    var KEY_REG = 'registration';
    var KEY_REQUEST = 0;
    var KEY_SEASON = 'season';
    var KEY_SKINSWITCHER = 'skinswitcher';
    var KEY_TEEN = 'teen';
    var KEY_TYPE = 'type';
    var KEY_UPDEMAIL = 'updateemail';
    var KEY_UPDPWORD = 'updatepassword';
    var KEY_UPDOPTINS = 'updateoptins';
    var KEY_USER = 'user';
    var KEY_USERNAME = 'username';
    var KEY_USERNAMELOOKUP = 'usernamelookup';
    var RGX_BACK = /_back_/g;
    var RGX_CLOSE = /_close_/g;
    var RGX_COUNTRY = /_country_/g;
    var RGX_DESC = /_desc_/g;
    var RGX_DOB = /_dob_/g;
    var RGX_EMAIL = /_email_/g;
    var RGX_FNAME = /_fname_/g;
    var RGX_GENDER = /_gender_/g;
    var RGX_ID = /_id_/g;
    var RGX_INVCODE = /_invitecode_/g;
    var RGX_LABEL = /_label_/g;
    var RGX_LABELDESC = /_label-desc_/g;
    var RGX_LABELNAME = /_label-name_/g;
    var RGX_LABELSEASON = /_label-season_/g;
    var RGX_LANGCODE = /_langcode_/g;
    var RGX_LANGNAME = /_langname_/g;
    var RGX_LINK = /_link_/g;
    var RGX_NAME = /_name_/g;
    var RGX_NEXT = /_next_/g;
    var RGX_OBJNAME = /_objname_/g;
    var RGX_ONCLICK = /_onclick_/g;
    var RGX_OPTINS = /_optins_/g;
    var RGX_PARENTEMAIL = /_parentemail_/g;
    var RGX_PASSWORD = /_password_/g;
    var RGX_PATH = /_path_/g;
    var RGX_POSTALCODE = /_postalcode_/g;
    var RGX_PREV = /_prev_/g;
    var RGX_SEASON = /_season_/g;
    var RGX_STATE = /_state_/g;
    var RGX_TYPE = /_type_/g;
    var RGX_USERNAME = /_username_/g;
    var RGX_VALUE = /_value_/g;

    //private variables
    var a_checked; //holds selected items for doCheckboxes call during acct maintenance
    var a_ctrldiv; //div id's of all layers involved in account interface
    var a_interfacelang; //interface lang json
    var a_langopt; //list of available languages for the site interface
    var a_loadtracker; //requested load/completed load item tracker
    var a_regstep; //steps in reg process
    var a_regtype; //array of string-keys for regtypes to be passed to php processor
    var a_skinopt; //list of available skins for the interface
    var b_ready; //true when all interface preloads done
    var d_dob; //storage container for dob info in reg
    //o_regform is defined externally and can be called from within this class to manage registration
    var i_regstep; //current step in registration process
    var o_util; //util object
    var s_acctinfopath; //path to acct info lookup php
    var s_acctmaintpath; //path to perform account maint tasks
    var s_accttype; //account type flag for login
    var s_country; //storage container for country in reg
    var s_email; //storage container for email reg info
    var s_fname; //storage container for first name val in reg
    var s_gender; //storage container for gender val in reg
    var s_invcode; //storage container for invite code val in reg
    var s_loginpath; //path to login php processor
    var s_objname; //callback name of object instance
    var s_optin; //string container representing array of optins from reg
    var s_parentemail; //storage container for parent email in reg
    var s_password; //storage container for password
    var s_postalcode; //storage container for postal code val in reg
    var s_regpath; //path to reg processor page
    var s_regtype; //typed key for reg steps
    var s_skincookie; //name of the skin cookie
    var s_state; //storage container for state in reg
    var s_userlang; //code of current language
    var s_userlangcookie; //name of the lang pref cookie
    var s_username; //storage container for username in reg

    //public method pointers
    this.doChooseLang = doChooseLang; //set the lang pref cookie with the input value
    this.doChooseSkin = doChooseSkin; //set the skin pref cookie with the input value
    this.doCloseCtrl = doCloseCtrl; //close the control divs
    this.doDisableChildAcct = doDisableChildAcct;
    this.doEnableChildAcct = doEnableChildAcct;
    this.doLogout = doLogout;
    this.doParentLoginInterface = doParentLoginInterface;
    this.doPasswordLookupByEmail = doPasswordLookupByEmail;
    this.doPasswordLookupByUsername = doPasswordLookupByUsername;
    this.doPasswordLookupInterface = doPasswordLookupInterface;
    this.doProcessDOB = doProcessDOB; //process dob reg input
    this.doProcessEmail = doProcessEmail; //process email reg input
    this.doProcessEmailLookup = doProcessEmailLookup;
    this.doProcessUsernameLookup = doProcessUsernameLookup;
    this.doProcessFName = doProcessFName; //process first name reg input
    this.doProcessGender = doProcessGender; //process gender input
    this.doProcessInvCode = doProcessInvCode;
    this.doProcessLogin = doProcessLogin; //process a login
    this.doProcessOptin = doProcessOptin; //process optin reg input
    this.doProcessParentEmail = doProcessParentEmail; //process parent email reg input
    this.doProcessPassword = doProcessPassword; //process password reg input
    this.doProcessPostalCode = doProcessPostalCode; //process postal code reg input
    this.doProcessRegion = doProcessRegion; //process region reg input
    this.doProcessTOU = doProcessTOU; //process tou reg conf input
    this.doProcessUsername = doProcessUsername; //process username reg input
    this.doRegConf = doRegConf; //display reg confirmation
    this.doRegDOB = doRegDOB; //display the reg interface
    this.doRegEditEmail = doRegEditEmail;
    this.doRegEmail = doRegEmail; //get email reg input
    this.doRegEditOptin = doRegEditOptin;
    this.doRegEditPassword = doRegEditPassword;
    this.doRegFName = doRegFName; //get first name reg input
    this.doRegGender = doRegGender; //get gender reg input
    this.doRegGoBack = doRegGoBack; //allows guest to go back a step in reg process
    this.doRegInvCode = doRegInvCode;
    this.doRegOptin = doRegOptin; //get optin reg input
    this.doRegParentEmail = doRegParentEmail; //get parent email reg input
    this.doRegPassword = doRegPassword; //get password reg input
    this.doRegPostalCode = doRegPostalCode; //get postal code reg input
    this.doRegRegion = doRegRegion; //get region reg input
    this.doRegTOU = doRegTOU; //get TOU confirmation input
    this.doRegUsername = doRegUsername; //get username reg input
    this.doUserLangInterface = doUserLangInterface; //show the lang pref options
    this.doPasswordLookupInterface = doPasswordLookupInterface; //password reset interface
    this.doUserSkinInterface = doUserSkinInterface; //show the skin pref options
    this.doUserLoginInterface = doUserLoginInterface; //display the user login form
    this.getUserAcctInfo = getUserAcctInfo; //get the user info for editing
    this.setCtrlDivs = setCtrlDivs; //set an array containing the ids of the control divs

    //constructor actions
    b_ready = false;
    setCallback(s_objname_fp);
    setInterfaceLang(s_userlang_fp);
    setSkinCkieName(s_skincookie_fp);
    setInterfaceLangCkieName(s_userlangcookie_fp);
    setLoadTracker();
    getAcctUtils(s_interfacelangpath_fp);
    getLangOpts(s_langoptpath_fp);
    getSkinOpts(s_skinoptpath_fp);
    setRegPath(s_regpath_fp);
    setLoginPath(s_loginpath_fp);
    setAcctInfoPath(s_acctinfopath_fp);
    setAcctMaintPath(s_acctmaintpath_fp);
    o_util = new siteUtils('o_util');
    
    /*					PUBLIC METHODS								*/
    function doChooseLang(s_code_fp) {
    	if (s_code_fp != 'ru-by') { /// this is a sad hack to take us to licensee sites outside of Moxiegirlz.com
    		var o_cookie = new cookieUtilObj();
    		o_cookie.createCookie(s_userlangcookie,s_code_fp,DEF_COOKIELIFE);
    		document.location.reload();
    	} else {
    		document.location.href = 'http://viktorinvest.by/bratz/';
    	}
    }

    function doChooseSkin(s_dir_fp) {
        var o_cookie = new cookieUtilObj();
        o_cookie.createCookie(s_skincookie,s_dir_fp,DEF_COOKIELIFE);
        o_util.doTrackerWindow('track_skin.html?id=' + s_dir_fp);
        document.location.reload();
    }

    function doCloseCtrl() {
        doCtrlVis(DEF_NONE);
        setDocOverflow(DEF_SCROLL);
        setDialog('');
    }

    function doDisableChildAcct(s_id_fp) {
    	var o_ajaxreq11 = new ajaxReq('o_ajaxreq11');
    	var s_regdata = outAcctDisableDataStr(s_id_fp);
    	var s_html = a_interfacelang[KEY_REG][KEY_DESCPROCREG]; //insert "processing reg" message
    	setRegSteps();
        s_regtype = KEY_DISABLECHILD;
        setDialog(s_html); //put it into the dom
        doShowCtrls(); //show it to the user
        o_ajaxreq11.doServerRequest(s_acctmaintpath,s_regdata,doProcessRegUpdateResult);
    }
    
    function doEnableChildAcct(s_id_fp) {
    	var o_ajaxreq12 = new ajaxReq('o_ajaxreq12');
    	var s_regdata = outAcctEnableDataStr(s_id_fp);
    	var s_html = a_interfacelang[KEY_REG][KEY_DESCPROCREG]; //insert "processing reg" message
    	setRegSteps();
        s_regtype = KEY_ENABLECHILD;
    	setDialog(s_html); //put it into the dom
        doShowCtrls(); //show it to the user
        o_ajaxreq12.doServerRequest(s_acctmaintpath,s_regdata,doProcessRegUpdateResult);
    }
    
    function doLogout() {
    	var o_ajaxreq6 = new ajaxReq('o_ajaxreq6');
        o_ajaxreq6.doServerRequest(s_loginpath,HTML_LOGOUT,doProcessLogoutResult);
    }
    
    function doParentLoginInterface() {
        s_accttype = KEY_PARENT;
        var s_html = '';
        s_html += a_interfacelang[KEY_LOGIN][KEY_DESCPARENT]; //insert dob desc
        s_html += HTML_INPUTLOGIN; //insert div container for first name input
        s_html += outPasswordLookupLink();
        s_html += outRegLink();
        setDialog(s_html);
        outLoginFields();
        doShowCtrls();
    }

    function doPasswordLookupByEmail() {
    	var s_html = '';
        setRegSteps();
        s_regtype = KEY_EMAILLOOKUP;
        s_html += a_interfacelang[KEY_REG][KEY_DESCEMAILLOOKUP]; //insert invite code desc
        s_html += HTML_INPUTSINGLEFIELD; //insert div container for first name input
        setDialog(s_html); //put everything into the dom
        outEmailLookupInput(); //update the new dom elements with form elements
        doShowCtrls(); //show it to the user
    }
    
    function doPasswordLookupByUsername() {
    	var s_html = '';
        setRegSteps();
        s_regtype = KEY_USERNAMELOOKUP;
        s_html += a_interfacelang[KEY_REG][KEY_DESCUSERNAMELOOKUP]; //insert invite code desc
        s_html += HTML_INPUTSINGLEFIELD; //insert div container for first name input
        setDialog(s_html); //put everything into the dom
        outUsernameLookupInput(); //update the new dom elements with form elements
        doShowCtrls(); //show it to the user
    }
    
    function doPasswordLookupInterface() {
    	var s_html = a_interfacelang[KEY_REG][KEY_DESCFORGOTPASS] + HTML_BREAK;
    	s_html += outSimpleMethodLink(HTML_MTHDOPASSBYUSER,a_interfacelang[KEY_REG][KEY_LBLKNOWUSER])  + HTML_BREAK;
    	s_html += outSimpleMethodLink(HTML_MTHDOPASSBYEMAIL,a_interfacelang[KEY_REG][KEY_LBLKNOWEMAIL])  + HTML_BREAK;
    	setDialog(s_html);
        doShowCtrls();
    }
    
    function doProcessDOB() {
        if (o_regform.doValidateDOB() !== false) {
            var a_dob = o_regform.doValidateDOB();
            d_dob = a_dob[KEY_DOB];
            if (a_dob[KEY_AGE] >= 18) { //adult reg
                var o_util = new siteUtils('o_util'); //reference to siteUtils instance
                if (o_util.getUriValue(KEY_INVCODE).length == 32) {
                    s_invcode = o_util.getUriValue(KEY_INVCODE);
                    s_regtype = KEY_PARENT;
                } else {
                    s_regtype = KEY_ADULT;
                }
            }
            if (a_dob[KEY_AGE] >= 14 && a_dob[KEY_AGE] < 18) { //teen reg
                s_regtype = KEY_TEEN;
            }
            if (a_dob[KEY_AGE] >= 0 && a_dob[KEY_AGE] < 14) { //child reg
                s_regtype = KEY_CHILD;
            }
            doReg();
        } else {
            alert(o_util.outEntityDecode(a_interfacelang[KEY_REG][KEY_ERRDOB]));
        }
    }

    function doProcessEmail() {
        if (o_regform.doValidateEmail() !== false) {
            s_email = o_regform.doValidateEmail();
            //alert(s_email);
            doReg();
        } else {
            alert(o_util.outEntityDecode(a_interfacelang[KEY_REG][KEY_ERREMAIL]));
        }
    }
    
    function doProcessEmailLookup() {
        if (o_regform.doValidateEmail() !== false) {
            s_email = o_regform.doValidateEmail();
            //alert(s_email);
            doReg();
        } else {
            alert(o_util.outEntityDecode(a_interfacelang[KEY_REG][KEY_ERREMAIL]));
        }
    }

    function doProcessFName() {
        if (o_regform.doValidateName() !== false) {
            s_fname = o_regform.doValidateName();
            doReg();
        } else {
            alert(o_util.outEntityDecode(a_interfacelang[KEY_REG][KEY_ERRFNAME]));
        }
    }

    function doProcessGender() {
        s_gender = getInputValue(DEF_IDGENDRSEL);
        doReg();
    }

    function doProcessInvCode() {
        if (o_regform.getInputValue(DEF_IDTXTFLDA).length === 32) {
            s_invcode = getInputValue(DEF_IDTXTFLDA);
            doReg();
        } else {
            alert(o_util.outEntityDecode(a_interfacelang[KEY_REG][KEY_ERRINVCODE]));
        }
    }

    function doProcessLogin() {
        s_username = o_loginform.getInputValue(DEF_IDTXTFLDA);
        s_password = o_loginform.getInputValue(DEF_IDTXTFLDB);
        if (s_username.length > 0 && s_password.length > 0) {
            doSendLoginData();
        } else {
            alert(o_util.outEntityDecode(a_interfacelang[KEY_REG][KEY_NOINFO]));
        }
    }

    function doProcessOptin() {
        var a_optin = o_regform.doValidateCheckBoxes();
        s_optin = a_optin.join(',');
        //alert(s_optin);
        doReg();
    }

    function doProcessParentEmail() {
        if (o_regform.doValidateEmail() !== false && o_regform.doValidateEmail() !== s_email) {
            s_parentemail = o_regform.doValidateEmail();
            doReg();
        } else {
            alert(o_util.outEntityDecode(a_interfacelang[KEY_REG][KEY_ERREMAIL]));
        }
    }

    function doProcessPassword() {
        if (o_regform.doValidatePassword() !== false) {
            s_password = o_regform.doValidatePassword();
            //alert('password ' + s_password);
            doReg();
        } else {
            alert(o_util.outEntityDecode(a_interfacelang[KEY_REG][KEY_ERRPASSWD]));
        }
    }

    function doProcessPostalCode() {
        var s_input = o_regform.getInputValue(DEF_IDTXTFLDA);
        if (o_regform.doValidatePostalcode(s_input,i_countrycode) === true) {
            s_postalcode = s_input;
            doReg();
        } else {
            alert(o_util.outEntityDecode(a_interfacelang[KEY_REG][KEY_ERRPOSTCODE]));
        }
    }

    function doProcessRegion() {
        if (o_regform.getInputValue(DEF_IDCOUNTRYSEL) !== false && o_regform.getInputValue(DEF_IDSTATESEL) !== false) {
            i_countrycode = getInputValue(DEF_IDCOUNTRYSEL);
            i_statecode = getInputValue(DEF_IDSTATESEL);
            doReg();
        } else {
            alert(o_util.outEntityDecode(a_interfacelang[KEY_REG][KEY_ERRREGION]));
        }
    }

    function doProcessTOU() {
        var a_confirm = o_regform.doValidateCheckBoxes();
        if (a_confirm[0] === 1) {
            doReg();
        } else {
            alert(o_util.outEntityDecode(a_interfacelang[KEY_REG][KEY_ERRTOU]));
        }
    }

    function doProcessUsername() {
        if (o_regform.doValidateUsername() !== false && o_regform.doValidateUsername().indexOf(s_fname) === -1) {
            s_username = o_regform.doValidateUsername();
            doReg();
        } else {
            alert(o_util.outEntityDecode(a_interfacelang[KEY_REG][KEY_ERRUNAME]));
        }
    }

    function doProcessUsernameLookup() {
        if (o_regform.getInputValue(DEF_IDTXTFLDA) !== false) {
            s_username = o_regform.getInputValue(DEF_IDTXTFLDA);
            //alert(s_username);
            doReg();
        } else {
            alert(o_util.outEntityDecode(a_interfacelang[KEY_REG][KEY_ERRUNAME]));
        }
    }
    
    function doReg() { //called at the end of each step in reg process to start next
        if (i_regstep < a_regstep[s_regtype].length) {
            a_regstep[s_regtype][i_regstep](); //call the indexed method pointer
            i_regstep++;
        }
    }

    function doRegDOB() {
        var s_html = '';
        doNullRegInputs(); //make sure we don't have any stragglers from a previous reg attempt
        setRegSteps(); //set the process steps
        s_html += outRegStepDisplay(); //show what step of process we're on
        s_html += a_interfacelang[KEY_REG][KEY_PREAMBLE] + HTML_BREAK; //insert preamble
        s_html += a_interfacelang[KEY_REG][KEY_DESCDOB]; //insert dob desc
        s_html += HTML_INPUTDOB; //insert div container for dob select
        setDialog(s_html); //put everything into the dom
        outDOBInput(); //update the new dom elements with form elements
        doShowCtrls(); //show it to the user
    }

    function doRegEditEmail() {
    	var s_html = '';
    	setRegSteps();
        s_regtype = KEY_UPDEMAIL;
    	s_html += a_interfacelang[KEY_REG][KEY_DESCEMAIL] + HTML_BREAK; //insert dob desc
        s_html += HTML_INPUTEMAIL; //insert div container for email field
        setDialog(s_html); //put everything into the dom
        outEmailInput(); //update the new dom elements with form elements
        doShowCtrls(); //show it to the user
    }
    
    function doRegEditOptin() {
        var s_html = '';
        setRegSteps();
        s_regtype = KEY_UPDOPTINS;
        s_html += a_interfacelang[KEY_REG][KEY_DESCOPTIN] + HTML_BREAK; //insert dob desc
        s_html += HTML_INPUTOPTINS; //insert div container for first name input
        setDialog(s_html); //put everything into the dom
        if (s_accttype === KEY_PARENT) {
            outParentOptinInput(); //update the new dom elements with form elements
        } else {
            outOptinInput(); //update the new dom elements with form elements
        }
        doShowCtrls(); //show it to the user
    }
    
    function doRegEditPassword() {
        var s_html = '';
        setRegSteps();
        s_regtype = KEY_UPDPWORD;
        s_html += a_interfacelang[KEY_REG][KEY_DESCPWORD] + HTML_BREAK; //insert dob desc
        s_html += HTML_INPUTPWORD; //insert div container for first name input
        setDialog(s_html); //put everything into the dom
        outPasswordInput(); //update the new dom elements with form elements
        doShowCtrls(); //show it to the user
    }
    
    function doRegEmail() {
        var s_html = '';
        s_html += outRegStepDisplay(); //show what step of process we're on
        s_html += a_interfacelang[KEY_REG][KEY_DESCEMAIL] + HTML_BREAK; //insert dob desc
        s_html += HTML_INPUTEMAIL; //insert div container for email field
        s_html += outRegBackButton(); //add a back button to interface
        setDialog(s_html); //put everything into the dom
        outEmailInput(); //update the new dom elements with form elements
        doShowCtrls(); //show it to the user
    }

    function doRegFName() {
        var s_html = '';
        s_html += outRegStepDisplay(); //show what step of process we're on
        s_html += a_interfacelang[KEY_REG][KEY_DESCFNAME] + HTML_BREAK; //insert dob desc
        s_html += HTML_INPUTSINGLEFIELD; //insert div container for first name input
        s_html += outRegBackButton(); //add a back button to interface
        setDialog(s_html); //put everything into the dom
        outFNameInput(); //update the new dom elements with form elements
        doShowCtrls(); //show it to the user
    }

    function doRegGender() {
        var s_html = '';
        s_html += outRegStepDisplay(); //show what step of process we're on
        s_html += a_interfacelang[KEY_REG][KEY_DESCGENDER] + HTML_BREAK; //insert gender desc
        s_html += HTML_INPUTGENDER; //insert div container for gender input
        setDialog(s_html); //put everything into the dom
        outGenderInput(); //update the new dom elements with form elements
        doShowCtrls(); //show it to the user
    }

    function doRegGoBack() {
        i_regstep = i_regstep - 2;
        doReg();
    }

    function doRegInvCode() {
        var s_html = '';
        setRegSteps();
        s_regtype = KEY_ADDCHILD;
        s_html += a_interfacelang[KEY_REG][KEY_DESCINVCODE] + HTML_BREAK; //insert invite code desc
        s_html += HTML_INPUTSINGLEFIELD; //insert div container for first name input
        setDialog(s_html); //put everything into the dom
        outInvCodeInput(); //update the new dom elements with form elements
        doShowCtrls(); //show it to the user
    }

    function doRegOptin() {
        var s_html = '';
        s_html += outRegStepDisplay(); //show what step of process we're on
        s_html += a_interfacelang[KEY_REG][KEY_DESCOPTIN] + HTML_BREAK; //insert dob desc
        s_html += HTML_INPUTOPTINS; //insert div container for first name input
        s_html += outRegBackButton(); //add a back button to interface
        setDialog(s_html); //put everything into the dom
        if (s_regtype === KEY_PARENT) {
            outParentOptinInput(); //update the new dom elements with form elements
        } else {
            outOptinInput(); //update the new dom elements with form elements
        }
        doShowCtrls(); //show it to the user
    }

    function doRegParentEmail() {
        var s_html = '';
        s_html += outRegStepDisplay(); //show what step of process we're on
        s_html += a_interfacelang[KEY_REG][KEY_DESCPARENTEMAIL] + HTML_BREAK; //insert dob desc
        s_html += HTML_INPUTEMAIL; //insert div container for email field
        s_html += outRegBackButton(); //add a back button to interface
        setDialog(s_html); //put everything into the dom
        outParentEmailInput(); //update the new dom elements with form elements
        doShowCtrls(); //show it to the user
    }
    
    function doRegPassword() {
        var s_html = '';
        s_html += outRegStepDisplay(); //show what step of process we're on
        s_html += a_interfacelang[KEY_REG][KEY_DESCPWORD] + HTML_BREAK; //insert dob desc
        s_html += HTML_INPUTPWORD; //insert div container for first name input
        s_html += outRegBackButton(); //add a back button to interface
        setDialog(s_html); //put everything into the dom
        outPasswordInput(); //update the new dom elements with form elements
        doShowCtrls(); //show it to the user
    }

    function doRegPostalCode() {
        var s_html = '';
        s_html += outRegStepDisplay(); //show what step of process we're on
        s_html += a_interfacelang[KEY_REG][KEY_DESCPOSTCODE] + HTML_BREAK; //insert dob desc
        s_html += HTML_INPUTSINGLEFIELD; //insert div container for first name input
        s_html += outRegBackButton(); //add a back button to interface
        setDialog(s_html); //put everything into the dom
        outPostalCodeInput(); //update the new dom elements with form elements
        doShowCtrls(); //show it to the user
    }

    function doRegRegion() {
        var s_html = '';
        s_html += outRegStepDisplay(); //show what step of process we're on
        s_html += a_interfacelang[KEY_REG][KEY_DESCREGION] + HTML_BREAK; //insert dob desc
        s_html += HTML_INPUTREGION; //insert div container for first name input
        s_html += outRegBackButton(); //add a back button to interface
        setDialog(s_html); //put everything into the dom
        outRegionInput(); //update the new dom elements with form elements
        doShowCtrls(); //show it to the user
    }

    function doRegTOU() {
        var s_html = '';
        s_html += outRegStepDisplay(); //show what step of process we're on
        s_html += a_interfacelang[KEY_REG][KEY_DESCTOU] + HTML_BREAK; //insert dob desc
        s_html += HTML_INPUTOPTINS; //insert div container for first name input
        s_html += outRegBackButton(); //add a back button to interface
        setDialog(s_html); //put everything into the dom
        outTOUInput(); //update the new dom elements with form elements
        doShowCtrls(); //show it to the user
    }

    function doRegUsername() {
        var s_html = '';
        s_html += outRegStepDisplay(); //show what step of process we're on
        s_html += a_interfacelang[KEY_REG][KEY_DESCUNAME] + HTML_BREAK; //insert dob desc
        s_html += HTML_INPUTUNAME; //insert div container for first name input
        s_html += outRegBackButton(); //add a back button to interface
        setDialog(s_html); //put everything into the dom
        outUsernameInput(); //update the new dom elements with form elements
        doShowCtrls(); //show it to the user
    }
    
    function doUserLangInterface() { //was doLangSwitcher
        if (b_ready === true) {
            var s_html = '';
            var s_tmp;
            var i_index;
            for (i_index in a_langopt) {
                s_tmp = HTML_LANGITEM.replace(RGX_COUNTRY, a_langopt[i_index][KEY_COUNTRY]);
                s_tmp = s_tmp.replace(RGX_LANGNAME, a_langopt[i_index][KEY_LANGNAME]);
                s_tmp = s_tmp.replace(RGX_LANGCODE, a_langopt[i_index][KEY_LANGCODE]);
                s_tmp = s_tmp.replace(RGX_OBJNAME, s_objname);
                s_html += s_tmp;
            }
            setDialog(s_html);
            doShowCtrls();
        }
    }


    function doUserSkinInterface() { //was doSkinSwitcher
        if (b_ready === true) {
            var i_index;
            var s_html = '';
            var s_tmp;
            s_html += a_interfacelang[KEY_SKINSWITCHER][KEY_PREAMBLE];
            for (i_index in a_skinopt) {
                s_tmp = HTML_SKINITEM;
                s_tmp = s_tmp.replace(RGX_PATH, a_skinopt[i_index][KEY_DIR]);
                s_tmp = s_tmp.replace(RGX_OBJNAME, s_objname);
                s_tmp = s_tmp.replace(RGX_LABELNAME, a_interfacelang[KEY_SKINSWITCHER][KEY_LBLNAME]);
                s_tmp = s_tmp.replace(RGX_NAME, a_skinopt[i_index][KEY_NAME]);
                //s_tmp = s_tmp.replace(RGX_LABELSEASON, a_interfacelang[KEY_SKINSWITCHER][KEY_LBLSEASON]);
                //s_tmp = s_tmp.replace(RGX_SEASON, a_skinopt[i_index][KEY_SEASON]);
                //s_tmp = s_tmp.replace(RGX_LABELDESC, a_interfacelang[KEY_SKINSWITCHER][KEY_LBLDESC]);
                //s_tmp = s_tmp.replace(RGX_DESC, a_skinopt[i_index][KEY_DESC]);
                s_tmp = s_tmp.replace(RGX_LINK, a_interfacelang[KEY_SKINSWITCHER][KEY_LNKCHSESKIN]);
                s_html += s_tmp;
            }
            setDialog(s_html);
            doShowCtrls();
        }
    }

    function doUserLoginInterface() {
        s_accttype = KEY_USER;
        var s_html = '';
        s_html += a_interfacelang[KEY_LOGIN][KEY_DESCUSER] + HTML_BREAK; //insert dob desc
        s_html += HTML_INPUTLOGIN; //insert div container for first name input
        s_html += outPasswordLookupLink();
        s_html += outRegLink();
        setDialog(s_html);
        outLoginFields();
        doShowCtrls();
    }

    function getUserAcctInfo() {
    	//alert(s_acctinfopath);
    	var o_ajaxreq7 = new ajaxReq('o_ajaxreq7');
        o_ajaxreq7.doServerRequest(s_acctinfopath,'',doUserAcctMaintInterface);
    }
    
    function setCtrlDivs(s_coverid_fp, s_dialogid_fp) {
        a_ctrldiv = new Array();
        a_ctrldiv[KEY_COVER] = s_coverid_fp;
        a_ctrldiv[KEY_DIALOG] = s_dialogid_fp;
    }

    function setInterfaceLang(s_userlang_fp) {
        s_userlang = s_userlang_fp;
    }


    /*                                                      PRIVATE METHODS                                                     */
    function doConfDialog(s_msg_fp) {
        var b_conf = confirm(s_msg_fp);
        return b_conf;
    }

    function doCtrlVis(s_val_fp) {
        var i_index;
        for (i_index in a_ctrldiv) {
            document.getElementById(a_ctrldiv[i_index]).style.display = s_val_fp;
        }
    }
    
    function doLoadTracker() {
        a_loadtracker[KEY_COMPLETE]++;
        if (a_loadtracker[KEY_COMPLETE] === a_loadtracker[KEY_REQUEST]) {
            b_ready = true;
        }
    }
    
    function doLookupConf() {
    	var s_html = '';
    	alert(o_util.outEntityDecode(a_interfacelang[KEY_REG][KEY_DESCLOOKUPSUCCESS]));
    	setDialog(s_html); //put everything into the dom
        doShowCtrls(); //show it to the user
        doCloseCtrl();
    }

    function doNullRegInputs() {
        s_regtype = null;
        d_dob = null;
        s_email = null;
        s_parentemail = null;
        s_fname = null;
        s_country = null;
        s_state = null;
        s_username = null;
        s_password = null;
        s_optin = null;
        s_invcode = null;
    }
    
    function doProcessLoginResult(s_result_fp) {
        if (s_result_fp === 1) {
            document.location.reload();
        } else {
            alert(o_util.outEntityDecode(a_interfacelang[KEY_LOGIN][KEY_ERRLOGIN]));
            doUserLoginInterface();
        }
    }
    
    function doProcessLogoutResult(s_result_fp) {
    	window.location.reload();
    }
    
    function doProcessRegUserDupeErr() {
        alert(o_util.outEntityDecode(a_interfacelang[KEY_REG][KEY_ERRDUPEUSER]));
        i_regstep = i_regstep - 2;
        doReg();
    }

    function doProcessRegUserInsErr(s_err_fp) {
        alert(o_util.outEntityDecode(a_interfacelang[KEY_REG][KEY_ERRUSERINSERT]));
        doNullRegInputs();
        doRegDOB();
    }

    function doProcessRegTypeErr() {
        alert(o_util.outEntityDecode(a_interfacelang[KEY_REG][KEY_ERRREGTYPE]));
        doNullRegInputs();
        doRegDOB();
    }

    function doProcessRegPostErr() {
        alert(o_util.outEntityDecode(a_interfacelang[KEY_REG][KEY_ERRPOSTREG]));
        doNullRegInputs();
        doRegDOB();
    }

    function doProcessRegPreErr() {
        a_err = new Array();
        a_err[KEY_ADULT] = a_interfacelang[KEY_REG][KEY_ERRPREREG];
        a_err[KEY_CHILD] = a_interfacelang[KEY_REG][KEY_ERRPREREG];
        a_err[KEY_PARENT] = a_interfacelang[KEY_REG][KEY_ERRINVCODE]; //we assume as that's the only thing in parents' pre reg at the moment
        a_err[KEY_TEEN] = a_interfacelang[KEY_REG][KEY_ERRPREREG];
        //alert(a_err[s_regtype]);
        doNullRegInputs();
        doRegDOB();
    }

    function doProcessRegGetErr() {
        alert(o_util.outEntityDecode(a_interfacelang[KEY_REG][KEY_ERRGETREG]));
        doNullRegInputs();
        doRegDOB();
    }

    function doProcessRegResult(s_result_fp) {
        if (s_result_fp !== 1) {
            a_errhandler = getRegErrHandlerArray();
            a_errhandler[s_result_fp]();
        } else {
            doReg();
        }
    }
    
    function doProcessRegLookupResult(s_result_fp) {
    	if ( s_result_fp !== 1 ) {
            alert(o_util.outEntityDecode(a_interfacelang[KEY_REG][KEY_ERRLOOKUP]));
            doPasswordLookupInterface();
        } else {
            doReg();
        }
    }

    function doProcessRegUpdateResult(s_result_fp) {
    	if (s_result_fp !== 1) {
            alert(o_util.outEntityDecode(a_interfacelang[KEY_REG][KEY_ERRUPDATE]));
        } else {
            doReg();
        }
    }
    
    function doRegConf() {
        var s_html = ''; //insert "processing reg" message
        s_html += a_interfacelang[KEY_REG][KEY_DESCREGSUCCESS] + '<br/><br/>';
        s_html += a_interfacelang[KEY_REG][KEY_LBLUSERNAME] + s_username + '<br/><br/>';
        s_html += a_interfacelang[KEY_REG][KEY_LBLPASSWORD] + s_password + '<br/><br/>';
        setDialog(s_html);
        doShowCtrls();
    }
    
    function doSendAddChildData() {
    	var o_ajaxreq12 = new ajaxReq('o_ajaxreq12');
    	var s_regdata = outAddChildDataStr();
    	var s_html = a_interfacelang[KEY_REG][KEY_DESCPROCREG]; //insert "processing reg" message
        setDialog(s_html); //put it into the dom
        doShowCtrls(); //show it to the user
        o_ajaxreq12.doServerRequest(s_acctmaintpath,s_regdata,doProcessRegUpdateResult);
    }
    
    function doSendEmailLookupData() {
    	//var o_ajaxreq13 = new ajaxReq('o_ajaxreq13');
    	var s_regdata = outEmailLookupDataStr();
    	var s_html = a_interfacelang[KEY_REG][KEY_DESCPROCREG]; //insert "processing reg" message
        setDialog(s_html); //put it into the dom
        doShowCtrls(); //show it to the user
	doAjaxPost( "?request=forgotpasswordbyusername&" + s_regdata , function() { 
                        if( this.readyState == 4 ){ 
                                doProcessRegLookupResult( eval(this.responseText) );
                        }    
                } );
        //o_ajaxreq13.doServerRequest(s_acctmaintpath,s_regdata,doProcessRegLookupResult);    	
    }
    
    function doSendEmailUpdateData(){
	alert("fdsafads");
    	var o_ajaxreq9 = new ajaxReq('o_ajaxreq9');
    	var s_regdata = outEmailUpdateDataStr();
    	var s_html = a_interfacelang[KEY_REG][KEY_DESCPROCREG]; //insert "processing reg" message
        setDialog(s_html); //put it into the dom
        doShowCtrls(); //show it to the user
        o_ajaxreq9.doServerRequest(s_acctmaintpath,s_regdata,doProcessRegUpdateResult);
    }
    
    function doSendLoginData() {
	$.post( "?request=login&action=login&type=user&username=" + $_("in-a-txt").value + "&password=" + $_("in-b-txt").value , function( data ) { 
			if( data == 1 || data == "1" ){
				window.location = "";
				document.cookie = "finish=true;;";
			}
			else { alert( o_util.outEntityDecode(moxieHash.language.login["err-login"])); }
	});

    }

    function doSendOptinUpdateData() {
    	var o_ajaxreq10 = new ajaxReq('o_ajaxreq10');
    	var s_regdata = outOptinUpdateDataStr();
    	var s_html = a_interfacelang[KEY_REG][KEY_DESCPROCREG]; //insert "processing reg" message
        setDialog(s_html); //put it into the dom
        doShowCtrls(); //show it to the user
        o_ajaxreq10.doServerRequest(s_acctmaintpath,s_regdata,doProcessRegUpdateResult);    	
    }
    
    function doSendPasswordUpdateData() {
    	var o_ajaxreq8 = new ajaxReq('o_ajaxreq8');
    	var s_regdata = outPasswordUpdateDataStr();
    	var s_html = a_interfacelang[KEY_REG][KEY_DESCPROCREG]; //insert "processing reg" message
        setDialog(s_html); //put it into the dom
        doShowCtrls(); //show it to the user
        o_ajaxreq8.doServerRequest(s_acctmaintpath,s_regdata,doProcessRegUpdateResult);
    }
    
    function doSendRegData() {
        var a_sendstring = setSendStrHandlerArray();
        var s_html = a_interfacelang[KEY_REG][KEY_DESCPROCREG]; //insert "processing reg" message
        setDialog(s_html); //put it into the dom
        doShowCtrls(); //show it to the user
        s_regdata = a_sendstring[s_regtype]();

	$.post("?request=register&" + s_regdata + "" , function( data ){
					doProcessRegResult( eval( "(" + data + ")" ) );
					document.cookie = "finish=true;;";
	 });

    }

    function doSendUsernameLookupData() {
    	//var o_ajaxreq14 = new ajaxReq('o_ajaxreq14');
    	//var s_regdata = outUsernameLookupDataStr();
    	//alert(s_regdata);
    	//var s_html = a_interfacelang[KEY_REG][KEY_DESCPROCREG]; //insert "processing reg" message
        //setDialog(s_html); //put it into the dom
        //doShowCtrls(); //show it to the user
        //o_ajaxreq14.doServerRequest(s_acctmaintpath,s_regdata,doProcessRegLookupResult);    	

    	var s_regdata = outUsernameLookupDataStr();
    	var s_html = a_interfacelang[KEY_REG][KEY_DESCPROCREG]; //insert "processing reg" message
        setDialog(s_html); //put it into the dom
        doShowCtrls(); //show it to the user
	doAjaxPost( "?request=forgotpasswordbyusername&" + s_regdata , function() { 
                        if( this.readyState == 4 ){ 
                                doProcessRegLookupResult( eval( this.responseText ) );
                        }    
       	        } );

    }
    
    function doShowCtrls() {
        doCtrlVis(DEF_BLOCK);
        setDocOverflow(DEF_HIDDEN);
    }

    function doUpdateConf() {
    	var s_html = '';
    	alert(o_util.outEntityDecode(a_interfacelang[KEY_REG][KEY_DESCUPDATESUCCESS]));
    	setDialog(s_html); //put everything into the dom
        doShowCtrls(); //show it to the user
        doCloseCtrl();
    }
    
    function doUserAcctMaintInterface(a_user_fp) {
    	var s_html = a_interfacelang[KEY_REG][KEY_DESCACCTMAINT]; //menu description
    	s_accttype = a_user_fp[KEY_TYPE];
    	//lert(s_accttype);
    	s_html += outDisplayRegProp(a_interfacelang[KEY_LOGIN][KEY_LBLUSERNAME], a_user_fp[KEY_USERNAME]); //username (not editable)
    	s_html += outDisplayEditableRegProp(a_interfacelang[KEY_LOGIN][KEY_LBLPASSWORD], '*******', 'doRegEditPassword'); //password (editable)
    	s_html += outDisplayEditableRegProp(a_interfacelang[KEY_REG][KEY_LBLEMAIL], a_user_fp[KEY_EMAIL], 'doRegEditEmail'); //password (editable)
    	if (a_user_fp[KEY_OPTBRANDOFFERS]) {
    		outOptinArray(a_user_fp);
    		s_html += outDisplayEditOptin(a_interfacelang[KEY_REG][KEY_LBLOPTINS], 'doRegEditOptin'); //password (editable)
    	}
    	if (a_user_fp[KEY_CHILDREN]) {
    		//alert(a_user_fp[KEY_CHILDREN]);
    		s_html += outDisplayChildAccts(a_user_fp);
    	}
    	if (s_accttype === KEY_PARENT) {
    		s_html += outAddChildLink();
    	}
    	setDialog(s_html);
    	doShowCtrls();
    }
    
    function getAcctUtils(s_interfacelangpath_fp) {
        if (s_interfacelangpath_fp != '') {
            //var o_ajaxreq1 = new ajaxReq('o_ajaxreq1');
            a_loadtracker[KEY_REQUEST]++;
            //o_ajaxreq1.doServerRequest(s_interfacelangpath_fp,'',setAcctUtils);
		setAcctUtils();
        }
    }

    function getInputValue(s_eleid_fp) {
        var m_value = document.getElementById(s_eleid_fp).value;
        return m_value;
    }

    function getLangOpts(s_langoptpath_fp) {
        if (s_langoptpath_fp != '') {
            //var o_ajaxreq2 = new ajaxReq('o_ajaxreq2');
            a_loadtracker[KEY_REQUEST]++;
            //o_ajaxreq2.doServerRequest(s_langoptpath_fp,'',setLangOpts);
		setLangOpts();
        }
    }

    function getRegErrHandlerArray() {
        var a_tmp = new Array();
        a_tmp[ERR_DUPEUSERNAME] = doProcessRegUserDupeErr;
        a_tmp[ERR_MAKEINS] = doProcessRegUserInsErr;
        a_tmp[ERR_NOTYPE] = doProcessRegTypeErr;
        a_tmp[ERR_POSTREG] = doProcessRegPostErr;
        a_tmp[ERR_PREREG] = doProcessRegPreErr;
        a_tmp[ERR_READGET] = doProcessRegGetErr;
        return a_tmp;
    }
    
    function getSkinOpts(s_skinoptpath_fp) {
        if (s_skinoptpath_fp != '') {
            //var o_ajaxreq3 = new ajaxReq('o_ajaxreq3');
            a_loadtracker[KEY_REQUEST]++;
           // o_ajaxreq3.doServerRequest(s_skinoptpath_fp,'',setSkinOpts);
		 setSkinOpts();
        }
    }

    function outAddChildDataStr() {
    	var s_datastr = HTML_MAINTADDCHILD;
    	s_datastr = s_datastr.replace(RGX_INVCODE, s_invcode);
    	return s_datastr;
    }
    
    function outAddChildLink() {
    	var s_link = HTML_ADDCHILD;
    	s_link = s_link.replace(RGX_LABEL, a_interfacelang[KEY_REG][KEY_LBLADDCHILD]);
    	s_link = s_link.replace(RGX_OBJNAME, s_objname);
    	s_link = s_link.replace(RGX_LINK, a_interfacelang[KEY_GLOBAL][KEY_LBLADD]);
    	return s_link;
    }
    
    function outAcctDisableDataStr(s_id_fp) {
    	var s_datastr = HTML_MAINTDISABLEACCTSUB;
    	s_datastr = s_datastr.replace(RGX_ID, s_id_fp);
    	return s_datastr;
    }
    
    function outAcctEnableDataStr(s_id_fp) {
    	var s_datastr = HTML_MAINTENABLEACCTSUB;
    	s_datastr = s_datastr.replace(RGX_ID, s_id_fp);
    	return s_datastr;
    }
    
    function outAdultRegDataStr() {
        var s_regdata = HTML_REGSUBADULT;
        s_regdata = s_regdata.replace(RGX_TYPE, s_regtype);
        s_regdata = s_regdata.replace(RGX_DOB, outSQLDate(d_dob));
        s_regdata = s_regdata.replace(RGX_GENDER, s_gender);
        s_regdata = s_regdata.replace(RGX_EMAIL, s_email);
        s_regdata = s_regdata.replace(RGX_FNAME, s_fname);
        s_regdata = s_regdata.replace(RGX_COUNTRY, i_countrycode);
        s_regdata = s_regdata.replace(RGX_STATE, i_statecode);
        s_regdata = s_regdata.replace(RGX_POSTALCODE, s_postalcode);
        s_regdata = s_regdata.replace(RGX_USERNAME, s_username);
        s_regdata = s_regdata.replace(RGX_PASSWORD, s_password);
        s_regdata = s_regdata.replace(RGX_OPTINS, s_optin);
        return s_regdata;
    }

    function outChildRegDataStr() {
        var s_regdata = HTML_REGSUBCHILD;
        s_regdata = s_regdata.replace(RGX_TYPE, s_regtype);
        s_regdata = s_regdata.replace(RGX_DOB, outSQLDate(d_dob));
        s_regdata = s_regdata.replace(RGX_GENDER, s_gender);
        s_regdata = s_regdata.replace(RGX_EMAIL, s_email);
        s_regdata = s_regdata.replace(RGX_PARENTEMAIL, s_parentemail);
        s_regdata = s_regdata.replace(RGX_FNAME, s_fname);
        s_regdata = s_regdata.replace(RGX_USERNAME, s_username);
        s_regdata = s_regdata.replace(RGX_PASSWORD, s_password);
        return s_regdata;
    }

    function outCloseButton() {
        var s_close = HTML_CLOSELINK;
        s_close = s_close.replace(RGX_OBJNAME, s_objname);
        s_close = s_close.replace(RGX_CLOSE, a_interfacelang[KEY_GLOBAL][KEY_LBLCLOSE]);
        return s_close;
    }

    function outDisableChildLink(s_id_fp) {
    	var s_link = HTML_DISCHILDACCT;
    	s_link = s_link.replace(RGX_OBJNAME, s_objname);
    	s_link = s_link.replace(RGX_LINK, a_interfacelang[KEY_GLOBAL][KEY_LBLDISABLE]);
    	s_link = s_link.replace(RGX_ID, s_id_fp);
    	return s_link;
    }
    
    function outDisplayChildAccts(a_user_fp) {
    	var a_link = new Array();
    	var i_index;
    	var s_list = a_interfacelang[KEY_REG][KEY_DESCCHILDACCT];
    	var s_tmp;
    	a_link[0] = outEnableChildLink;
    	a_link[1] = outDisableChildLink;
    	//alert(a_user_fp[KEY_CHILDREN].length);
    	for (i_index in a_user_fp[KEY_CHILDREN]) {
    		s_tmp = HTML_CHILDACCT;
    		s_tmp = s_tmp.replace(RGX_USERNAME, a_user_fp[KEY_CHILDREN][i_index][KEY_USERNAME]);
    		s_tmp = s_tmp.replace(RGX_FNAME, a_user_fp[KEY_CHILDREN][i_index][KEY_FNAME]);
    		s_tmp += a_link[a_user_fp[KEY_CHILDREN][i_index][KEY_ACTIVE]](a_user_fp[KEY_CHILDREN][i_index][KEY_ID]);
    		s_list += s_tmp;
    	}
    	return s_list;
    }
    
    function outDisplayEditableRegProp(s_label_fp,s_value_fp,s_onclick_fp) {
    	var s_item = HTML_REGEDITABLEPROP;
    	s_item = s_item.replace(RGX_LABEL, s_label_fp);
    	s_item = s_item.replace(RGX_VALUE, s_value_fp);
    	s_item = s_item.replace(RGX_OBJNAME, s_objname);
    	s_item = s_item.replace(RGX_ONCLICK, s_onclick_fp);
    	s_item = s_item.replace(RGX_LINK, a_interfacelang[KEY_GLOBAL][KEY_LBLEDIT]);
    	return s_item;
    }
    
    function outDisplayEditOptin(s_label_fp,s_onclick_fp) {
    	var s_item = HTML_EDITOPTIN;
    	s_item = s_item.replace(RGX_LABEL, s_label_fp);
    	s_item = s_item.replace(RGX_OBJNAME, s_objname);
    	s_item = s_item.replace(RGX_ONCLICK, s_onclick_fp);
    	s_item = s_item.replace(RGX_LINK, a_interfacelang[KEY_GLOBAL][KEY_LBLEDIT]);
    	return s_item;
    }
    
    function outDisplayRegProp(s_label_fp,s_value_fp) {
    	var s_item = HTML_REGPROP;
    	s_item = s_item.replace(RGX_LABEL, s_label_fp);
    	s_item = s_item.replace(RGX_VALUE, s_value_fp);
    	return s_item;
    }
    
    function outDOBInput() {
	setTimeout( function(){
        	o_regform.setDateSelect(DEF_IDYEAR,DEF_IDMONTH,DEF_IDDAY,DEF_IDSUBMIT,s_objname + HTML_MTHDOPRDOB,DEF_REGMINYEAR,DEF_REGMAXYEAR);
        	o_regform.outYearSelect();
		} , 700 );
    }

    function outEmailInput() {
        o_regform.setConfirmedFieldInput(DEF_TXTFLD,DEF_IDEMAIL1,DEF_IDEMAIL2,DEF_IDSUBMIT,s_objname + HTML_MTHDOPREMAIL,DEF_EMAILFLDSIZE,DEF_EMAILFLDLEN,KEY_REG,KEY_ERREMAILMATCH);
        o_regform.outConfirmedFieldInput();
    }

    function outEmailLookupInput() {
        o_regform.setSingleFieldInput(DEF_TXTFLD,DEF_IDGENERICFIELD,DEF_IDSUBMIT,s_objname + HTML_MTHDOPREMAILLOOKUP,DEF_EMAILFLDSIZE,DEF_EMAILFLDLEN);
        o_regform.outSingleFieldInput();
    }
    
    function outEmailLookupDataStr() {
    	var s_datastr = HTML_LOOKUPEMAILSUB;
    	s_datastr = s_datastr.replace(RGX_TYPE, s_accttype);
    	s_datastr = s_datastr.replace(RGX_EMAIL, s_email);
    	return s_datastr;
    }
    
    function outEmailUpdateDataStr() {
    	var s_datastr = HTML_MAINTEMAILSUB;
    	s_datastr = s_datastr.replace(RGX_EMAIL, s_email);
    	return s_datastr;
    }
    
    function outEnableChildLink(s_id_fp) {
    	var s_link = HTML_ENCHILDACCT;
    	s_link = s_link.replace(RGX_OBJNAME, s_objname);
    	s_link = s_link.replace(RGX_LINK, a_interfacelang[KEY_GLOBAL][KEY_LBLENABLE]);
    	s_link = s_link.replace(RGX_ID, s_id_fp);
    	return s_link;
    }
    
    function outFNameInput() {
        o_regform.setSingleFieldInput(DEF_TXTFLD,DEF_IDGENERICFIELD,DEF_IDSUBMIT,s_objname + HTML_MTHDOPRFNAME,DEF_FNAMEFIELDSIZE,DEF_FNAMEFIELDLEN);
        o_regform.outSingleFieldInput();
    }

    function outGenderInput() {
        o_regform.setGenderSelect(DEF_IDGENDER,DEF_IDSUBMIT,s_objname + HTML_MTHDOPRGENDER);
        o_regform.outGenderSelect();
    }

    function outInvCodeInput() {
        o_regform.setSingleFieldInput(DEF_TXTFLD,DEF_IDGENERICFIELD,DEF_IDSUBMIT,s_objname + HTML_MTHDOPRINVCODE,DEF_INVCODEFIELDSIZE,DEF_INVCODEFIELDLEN);
        o_regform.outSingleFieldInput();
    } 

    function outLoginFields() {
        o_loginform.setLoginInput(DEF_IDUNAME1,DEF_IDPWORD1,DEF_IDSUBMIT,s_objname + HTML_MTHDOPRLOGIN,DEF_UNAMEFLDSIZE,DEF_UNAMEFLDLEN);
        o_loginform.outLoginInput();
    }

    function outOptinInput() {
        o_regform.setCheckbox(DEF_IDOPTINS,DEF_IDSUBMIT,s_objname + HTML_MTHDOPROPTIN,KEY_REG,KEY_LISTOPTIN,DEF_OPTINBOXNAMEROOT);
        o_regform.outCheckboxInput(a_checked);
    }

    function outOptinArray(a_src_fp) { //this, children, is a hack of the hackiest kind; a_src represents a_user_fp from doUserAcctMaintInterface
    	var a_keys = new Array(); //these follow order of columns in db
    	a_keys[0] = KEY_OPTBRANDOFFERS;
    	a_keys[1] = KEY_OPTBRANDNEWS;
    	a_keys[2] = KEY_OPTSURVEYS;
    	a_keys[3] = KEY_OPTRELOFFERS;
    	a_keys[4] = KEY_OPTGIFTOFFERS;
    	a_keys[5] = KEY_OPTEMAILCHILD;
    	var s_key;
    	a_checked = new Array();
    	for (s_key in a_keys) {
    		if (a_src_fp[s_key] !== null) {
    			a_checked.push(Number(a_src_fp[a_keys[s_key]]));
    		}
    	}
    }
    
    function outOptinUpdateDataStr() {
    	var s_datastr = HTML_MAINTOPTINSUB;
    	s_datastr = s_datastr.replace(RGX_OPTINS, s_optin);
    	return s_datastr;
    }
    
    function outParentEmailInput() {
        o_regform.setConfirmedFieldInput(DEF_TXTFLD,DEF_IDEMAIL1,DEF_IDEMAIL2,DEF_IDSUBMIT,s_objname + HTML_MTHDOPRPARENTEMAIL,DEF_EMAILFLDSIZE,DEF_EMAILFLDLEN,KEY_REG,KEY_ERREMAILMATCH);
        o_regform.outConfirmedFieldInput();
    }

    function outParentOptinInput() {
        o_regform.setCheckbox(DEF_IDOPTINS,DEF_IDSUBMIT,s_objname + HTML_MTHDOPROPTIN,KEY_REG,KEY_LISTPARENTOPTIN,DEF_OPTINBOXNAMEROOT);
        o_regform.outCheckboxInput(a_checked);
    }

    function outParentRegDataStr() {
        var s_regdata = HTML_REGSUBPARENT;
        s_regdata = s_regdata.replace(RGX_TYPE, s_regtype);
        s_regdata = s_regdata.replace(RGX_DOB, outSQLDate(d_dob));
        s_regdata = s_regdata.replace(RGX_GENDER, s_gender);
        s_regdata = s_regdata.replace(RGX_EMAIL, s_email);
        s_regdata = s_regdata.replace(RGX_FNAME, s_fname);
        s_regdata = s_regdata.replace(RGX_COUNTRY, i_countrycode);
        s_regdata = s_regdata.replace(RGX_STATE, i_statecode);
        s_regdata = s_regdata.replace(RGX_POSTALCODE, s_postalcode);
        s_regdata = s_regdata.replace(RGX_USERNAME, s_username);
        s_regdata = s_regdata.replace(RGX_PASSWORD, s_password);
        s_regdata = s_regdata.replace(RGX_OPTINS, s_optin);
        s_regdata = s_regdata.replace(RGX_INVCODE, s_invcode);
        return s_regdata;
    }

    function outPasswordInput() {
        o_regform.setConfirmedFieldInput(DEF_PWORDFLD,DEF_IDPWORD1,DEF_IDPWORD2,DEF_IDSUBMIT,s_objname + HTML_MTHDOPRPWORD,DEF_PWORDFLDSIZE,DEF_PWORDFLDLEN,KEY_REG,KEY_ERRPWORDMATCH);
        o_regform.outConfirmedFieldInput();
    }
    
    function outPasswordLookupLink() {
        var s_link = HTML_FORGOTPASSLINK;
        s_link = s_link.replace(RGX_DESC,a_interfacelang[KEY_LOGIN][KEY_LBLFORGOTPASS]);
        s_link = s_link.replace(RGX_OBJNAME, s_objname);
        return s_link;
    }

    function outPasswordUpdateDataStr() {
    	var s_datastr = HTML_MAINTPASSWDSUB;
    	s_datastr = s_datastr.replace(RGX_PASSWORD, s_password);
    	return s_datastr;
    }
    
    function outPostalCodeInput() {
        o_regform.setSingleFieldInput(DEF_TXTFLD,DEF_IDGENERICFIELD,DEF_IDSUBMIT,s_objname + HTML_MTHDOPRPOSTCODE,DEF_POSTCODEFIELDSIZE,DEF_POSTCODEFIELDLEN);
        o_regform.outSingleFieldInput();
    }

    function outRegBackButton() {
        var s_back = HTML_REGBACKLINK;
        s_back = s_back.replace(RGX_OBJNAME, s_objname);
        s_back = s_back.replace(RGX_BACK, a_interfacelang[KEY_GLOBAL][KEY_LBLBACK]);
        return s_back;
    }

    function outRegionInput() {
        o_regform.setRegionSelect(DEF_IDCOUNTRY,DEF_IDSTATE,DEF_IDSUBMIT,s_objname + HTML_MTHDOPRREGION);
        o_regform.outCountrySelect();
    }
    
    function outRegLink() {
        var s_html = HTML_REGLINK;
        s_html = s_html.replace(RGX_DESC,a_interfacelang[KEY_LOGIN][KEY_LBLREGISTER]);
        return s_html;
    }

    function outRegStepDisplay() { //tell guest where she is in reg process
        s_stepdisplay = a_interfacelang[KEY_REG][KEY_LBLSTEP];
        if (i_regstep === 0 && !s_regtype) {
            s_stepdisplay += (i_regstep + 1);
        }
        if ((i_regstep === 0 && s_regtype) || i_regstep > 0) {
            s_stepdisplay += (i_regstep + 2);
        }
        if (i_regstep > 0) {
        	
            s_stepdisplay += '/' + (a_regstep[s_regtype].length - 1);
        }
        return '<span class="regstep">' + s_stepdisplay + '<br/><br/></span>';
    }

    function outSimpleMethodLink(s_onclick_fp,s_label_fp) {
    	var s_link = HTML_LINK;
    	s_link = s_link.replace(RGX_OBJNAME, s_objname);
    	s_link = s_link.replace(RGX_ONCLICK, s_onclick_fp);
    	s_link = s_link.replace(RGX_LABEL, s_label_fp);
    	return s_link;
    }
    	
    function outSkinLink(s_dir_fp) {
        var s_link = HTML_SKINITEM;
        s_link = s_link.replace(RGX_OBJNAME, s_objname);
        s_link = s_link.replace(RGX_LINK, a_interfacelang[KEY_SKINSWITCHER][KEY_LNKCHSESKIN]);
        s_link = s_link.replace(RGX_PATH, s_dir_fp);
        return s_link;
    }

    function outSQLDate(d_date_fp) {
        var s_date = d_date_fp.getFullYear() + '-' + d_date_fp.getMonth() + '-' + d_date_fp.getDay();
        return s_date;
    }

    function outTeenRegDataStr() {
        var s_regdata = HTML_REGSUBTEEN;
        s_regdata = s_regdata.replace(RGX_TYPE, s_regtype);
        s_regdata = s_regdata.replace(RGX_DOB, outSQLDate(d_dob));
        s_regdata = s_regdata.replace(RGX_GENDER, s_gender);
        s_regdata = s_regdata.replace(RGX_EMAIL, s_email);
        s_regdata = s_regdata.replace(RGX_PARENTEMAIL, s_parentemail);
        s_regdata = s_regdata.replace(RGX_FNAME, s_fname);
        s_regdata = s_regdata.replace(RGX_COUNTRY, i_countrycode);
        s_regdata = s_regdata.replace(RGX_STATE, i_statecode);
        s_regdata = s_regdata.replace(RGX_POSTALCODE, s_postalcode);
        s_regdata = s_regdata.replace(RGX_USERNAME, s_username);
        s_regdata = s_regdata.replace(RGX_PASSWORD, s_password);
        s_regdata = s_regdata.replace(RGX_OPTINS, s_optin);
        return s_regdata;
    }

    function outTOUInput() {
        o_regform.setCheckbox(DEF_IDOPTINS,DEF_IDSUBMIT,s_objname + HTML_MTHDOPRTOU,KEY_REG,KEY_LISTTOU,DEF_TOUBOXNAMEROOT);
        o_regform.outCheckboxInput();
    }

    function outUsernameLookupInput() {
        o_regform.setSingleFieldInput(DEF_TXTFLD,DEF_IDGENERICFIELD,DEF_IDSUBMIT,s_objname + HTML_MTHDOPRUSERNAMELOOKUP,DEF_EMAILFLDSIZE,DEF_EMAILFLDLEN);
        o_regform.outSingleFieldInput();
    }    
    
    function outUsernameInput() {
        o_regform.setConfirmedFieldInput(DEF_TXTFLD,DEF_IDUNAME1,DEF_IDUNAME2,DEF_IDSUBMIT,s_objname + HTML_MTHDOPRUNAME,DEF_UNAMEFLDSIZE,DEF_UNAMEFLDLEN,KEY_REG,KEY_ERRUNAMEMATCH);
        o_regform.outConfirmedFieldInput();
    }

    function outUsernameLookupDataStr() {
    	var s_datastr = HTML_LOOKUPUSERNAMESUB;
    	s_datastr = s_datastr.replace(RGX_TYPE, s_accttype);
    	s_datastr = s_datastr.replace(RGX_USERNAME, s_username);
    	return s_datastr;
    }
    
    function setAcctInfoPath(s_acctinfopath_fp) {
    	s_acctinfopath = s_acctinfopath_fp;
    }
    
    function setAcctMaintPath(s_acctmaintpath_fp) {
    	s_acctmaintpath = s_acctmaintpath_fp;
    }
    
    function setAcctUtils(a_interfacelang_fp) {
        //a_interfacelang = a_interfacelang_fp;
	a_interfacelang = moxieHash["language"];
        //alert(a_interfacelang[KEY_REG]);
        doLoadTracker();
    }

    function setDialog(s_html_fp) {
        var s_close = outCloseButton();
        document.getElementById(a_ctrldiv[KEY_DIALOG]).innerHTML = s_close + s_html_fp;
    }

    function setCallback(s_objname_fp) {
        s_objname = s_objname_fp;
    }

    function setDocOverflow(s_val_fp) {
        //document.body.style.overflow = s_val_fp;
    }

    function setInterfaceLangCkieName(s_userlangcookie_fp) {
        s_userlangcookie = s_userlangcookie_fp;
    }

    function setLangOpts(a_langopt_fp) {
	a_langopt = moxieHash.siteCountry;
        doLoadTracker();
    }

    function setLoadTracker() {
        a_loadtracker = new Array();
        a_loadtracker[KEY_REQUEST] = 0;
        a_loadtracker[KEY_COMPLETE] = 0;
    }

    function setLoginPath(s_loginpath_fp) {
        s_loginpath = s_loginpath_fp;
    }

    function setSendStrHandlerArray() {
        var a_tmp = new Array();
        a_tmp[KEY_ADULT] = outAdultRegDataStr;
        a_tmp[KEY_CHILD] = outChildRegDataStr;
        a_tmp[KEY_PARENT] = outParentRegDataStr;
        a_tmp[KEY_TEEN] = outTeenRegDataStr;
        return a_tmp;
    }

    function setRegPath(s_regpath_fp) {
        s_regpath = s_regpath_fp;
    }
    
    function setRegSteps() {
        i_regstep = 0;
        a_regstep = new Array();
        a_regstep[KEY_ADULT] = new Array();
        a_regstep[KEY_CHILD] = new Array();
        a_regstep[KEY_PARENT] = new Array();
        a_regstep[KEY_TEEN] = new Array();
        a_regstep[KEY_UPDEMAIL] = new Array();
        a_regstep[KEY_UPDPWORD] = new Array();
        a_regstep[KEY_UPDOPTINS] = new Array();
        a_regstep[KEY_ADDCHILD] = new Array();
        a_regstep[KEY_DISABLECHILD] = new Array();
        a_regstep[KEY_ENABLECHILD] = new Array();
        a_regstep[KEY_EMAILLOOKUP] = new Array();
        a_regstep[KEY_USERNAMELOOKUP] = new Array();
        a_regstep[KEY_ADULT][0] = doRegGender;
        a_regstep[KEY_ADULT][1] = doRegEmail;
        a_regstep[KEY_ADULT][2] = doRegFName;
        a_regstep[KEY_ADULT][3] = doRegRegion;
        a_regstep[KEY_ADULT][4] = doRegPostalCode;
        a_regstep[KEY_ADULT][5] = doRegOptin;
        a_regstep[KEY_ADULT][6] = doRegTOU;
        a_regstep[KEY_ADULT][7] = doRegPassword;
        a_regstep[KEY_ADULT][8] = doRegUsername;
        a_regstep[KEY_ADULT][9] = doSendRegData;
        a_regstep[KEY_ADULT][10] = doRegConf;
        a_regstep[KEY_CHILD][0] = doRegGender;
        //a_regstep[KEY_CHILD][1] = doRegEmail;
        a_regstep[KEY_CHILD][1] = doRegParentEmail;
        a_regstep[KEY_CHILD][2] = doRegFName;
        a_regstep[KEY_CHILD][3] = doRegPassword;
        a_regstep[KEY_CHILD][4] = doRegUsername;
        a_regstep[KEY_CHILD][5] = doSendRegData;
        a_regstep[KEY_CHILD][6] = doRegConf;
        a_regstep[KEY_PARENT][0] = doRegGender;
        a_regstep[KEY_PARENT][1] = doRegEmail;
        a_regstep[KEY_PARENT][2] = doRegFName;
        a_regstep[KEY_PARENT][3] = doRegRegion;
        a_regstep[KEY_PARENT][4] = doRegPostalCode;
        a_regstep[KEY_PARENT][5] = doRegOptin;
        a_regstep[KEY_PARENT][6] = doRegTOU;
        a_regstep[KEY_PARENT][7] = doRegPassword;
        a_regstep[KEY_PARENT][8] = doRegUsername;
        a_regstep[KEY_PARENT][9] = doSendRegData;
        a_regstep[KEY_PARENT][10] = doRegConf;
        a_regstep[KEY_TEEN][0] = doRegGender;
        a_regstep[KEY_TEEN][1] = doRegEmail;
        a_regstep[KEY_TEEN][2] = doRegParentEmail;
        a_regstep[KEY_TEEN][3] = doRegFName;
        a_regstep[KEY_TEEN][4] = doRegRegion;
        a_regstep[KEY_TEEN][5] = doRegPostalCode;
        a_regstep[KEY_TEEN][6] = doRegOptin;
        a_regstep[KEY_TEEN][7] = doRegTOU;
        a_regstep[KEY_TEEN][8] = doRegPassword;
        a_regstep[KEY_TEEN][9] = doRegUsername;
        a_regstep[KEY_TEEN][10] = doSendRegData;
        a_regstep[KEY_TEEN][11] = doRegConf;
        a_regstep[KEY_UPDEMAIL][0] = doSendEmailUpdateData;
        a_regstep[KEY_UPDEMAIL][1] = doUpdateConf;
        a_regstep[KEY_UPDPWORD][0] = doSendPasswordUpdateData;
        a_regstep[KEY_UPDPWORD][1] = doUpdateConf;
        a_regstep[KEY_UPDOPTINS][0] = doSendOptinUpdateData;
        a_regstep[KEY_UPDOPTINS][1] = doUpdateConf;
        a_regstep[KEY_ADDCHILD][0] = doSendAddChildData;
        a_regstep[KEY_ADDCHILD][1] = doUpdateConf;
        a_regstep[KEY_DISABLECHILD][0] = doUpdateConf;
        a_regstep[KEY_ENABLECHILD][0] = doUpdateConf;
        a_regstep[KEY_EMAILLOOKUP][0] = doSendEmailLookupData;
        a_regstep[KEY_EMAILLOOKUP][1] = doLookupConf;
        a_regstep[KEY_USERNAMELOOKUP][0] = doSendUsernameLookupData;
        a_regstep[KEY_USERNAMELOOKUP][1] = doLookupConf;
    }

    function setSkinCkieName(s_skincookie_fp) {
        s_skincookie = s_skincookie_fp;
    }

    function setSkinOpts(a_skinopt_fp) {
        a_skinopt = moxieHash.skins;
        doLoadTracker();
    }
}

