    top.uAllXML = '';
    
    function uSubmitHref(a,f,l,s)
    {
      top.location.href = top.webapp + '?uX=' + escape(top.uAllXML) + escape("<uNs>" + s + "</uNs>") + '&LOCALE=' + l + '&STATE_NAME=' + s + '&uAn=' + a + '&uFn=' + f;
    }

    function uSubmitHrefCache(a,f,l,s)
    {
      top.location.replace(top.webapp + '?uX=' + escape(top.uAllXML) + escape("<uNs>" + s + "</uNs>") + '&LOCALE=' + l + '&STATE_NAME=' + s + '&uAn=' + a + '&uFn=' + f + '&urequesttype=transaction');
    }

    function uSubmitForm(a,f,l,s)
    {
      uCheckboxNames=new Array();
      for (var i=4; i<uSubmitForm.arguments.length; i++)
        top.uAllXML=uMrgNV('uArg'+(i-3),uSubmitForm.arguments[i],top.uAllXML);
      top.uHarvestXML();
      if(top.document.W2K_Transition != null )
      {
        top.document.W2K_Transition.uX.value = top.uAllXML + "<uNs>" + s + "</uNs>";
        top.document.W2K_Transition.STATE_NAME.value = s;
        top.document.W2K_Transition.LOCALE.value = l;
        top.document.W2K_Transition.uAn.value = a;
        top.document.W2K_Transition.uFn.value = f;
        top.document.W2K_Transition.submit();
      }
      else
      {
        top.frames[0].document.forms.W2K_Transition.uX.value = top.uAllXML + "<uNs>" + s+ "</uNs>";
        top.frames[0].document.forms.W2K_Transition.STATE_NAME.value = s;
        top.frames[0].document.forms.W2K_Transition.LOCALE.value = l;
        top.frames[0].document.forms.W2K_Transition.uAn.value = a;
        top.frames[0].document.forms.W2K_Transition.uFn.value = f;
        top.frames[0].document.forms.W2K_Transition.submit();
      }
    }

    function uSubmitLogout(nextStateName)
    {
      uCheckboxNames = new Array();
      for (var i=1; i<uSubmitLogout.arguments.length; i++)
      {
        top.uAllXML=uMrgNV('uArg'+i,uSubmitLogout.arguments[i],top.uAllXML);
      }
      top.uHarvestXML();
      top.location.href = top.webapp + '?uX=' + escape(top.uAllXML) + escape("<uNs>" + nextStateName + "</uNs>") + '&LOCALE=' + top.uLn + '&STATE_NAME=' + nextStateName + '&uAn=' + top.uAn + '&uFn=' + top.uFn + '&uunifi_logout=Y';
    }

    function isPostState()
    {
      var postStates = 'AW2K11,AW2K12,AW2K14,AW2K40,CW2K02_4,CW2K03,CW2K05_1,CW2K05_3,CW2K10,CW2K13,CW2K28,DW2K02_1,DW2K04,DW2K09_1,DW2K09_2,DW2K09_3,DW2K09_4,DW2K11,DW2K11_1,DW2K11_2,DW2K12,DW2K13,DW2K13_1,DW2K14,DW2K14a,DW2K16,DW2K28,DW2K30,DW2K37,DW2K38,';
      return (postStates.indexOf(top.uSn+',') != -1);
    }

    function uSubmit(nextStateName)
    {
      top.webapp = '/Unifi/Console/uv3Design/W2KApp/' + ((top.uFn == 'default')?'flavour1':top.uFn) + '/consumer/u_.uhtml';
      if (isPostState())
      {
        var submitStr = 'uSubmitForm(top.uAn,top.uFn,top.uLn,nextStateName';
        for (var i=1; i<uSubmit.arguments.length; i++)
          submitStr += ',uSubmit.arguments[' + i + ']';
        eval(submitStr + ')');
      }
      else
      {
        uCheckboxNames = new Array();
        for (var i=1; i<uSubmit.arguments.length; i++)
        {
          top.uAllXML = uMrgNV('uArg'+i,uSubmit.arguments[i],top.uAllXML);
        }
        top.uHarvestXML();
        uSubmitHref(top.uAn,top.uFn,top.uLn,nextStateName);
        top.ClickFlag = 'F';
      }
    }

    function uSubmitCache(nextStateName)
    {
      uCheckboxNames = new Array();
      for (var i=1; i<uSubmitCache.arguments.length; i++)
      {
        top.uAllXML=uMrgNV('uArg'+i,uSubmitCache.arguments[i],top.uAllXML);
      }
      top.uHarvestXML();
      uSubmitHrefCache(top.uAn,top.uFn,top.uLn,nextStateName);
      top.ClickFlag = 'F';
    }

    function uSubmitEx(nextStateName)
    {
      for (var i=1; i<uSubmitEx.arguments.length; i++)
      {
        top.uAllXML=uMrgNV('uArg'+i,uSubmitEx.arguments[i],top.uAllXML);
      }
      top.uHarvestXML();
      uSubmitHref(top.uAn,top.uFn,top.uLn,nextStateName);
    }

    function uSubmitAFLS(a,f,l,s)
    {
      top.uLn=l;
      top.uAn=a;
      top.uFn=f;
      for (var i=4; i<uSubmitAFLS.arguments.length; i++)
      {
        top.uAllXML=uMrgNV('uArg'+i,uSubmitAFLS.arguments[i],top.uAllXML);
      }
      top.uHarvestXML();
      uSubmitHref(a,f,l,s);
    }

    function uHarvestXML()
    {
      uFrameIt(top);
      uFormsIt(top.document);
      top.uAllXML = uMrgNV('uAn',top.uAn,top.uAllXML);
      top.uAllXML = uMrgNV('uFn',top.uFn,top.uAllXML);
      top.uAllXML = uMrgNV('uLn',top.uLn,top.uAllXML);
      top.uAllXML = uMrgNV('uSn',top.uSn,top.uAllXML);
    }

    function uFrameIt(fp)
    {
      for (var i=0; i<fp.length; i++)
      {
        uFormsIt(fp.frames[i].document);
        if (fp.frames[i].length != 0)
          uFrameIt(fp.frames[i]);
      }
    }

    function uFormsIt(doc)
    {
      for (var i=0; i<doc.forms.length; i++)
        for (var j=0; j<doc.forms[i].length; j++)
          if (doc.forms[i].name != 'Transition')
            top.uAllXML = uMrgElemXML(doc.forms[i].elements[j], top.uAllXML);
    }

    function uMrgNV(n,v,x)
    {
      var sT="<"+n+">";
      var eT="</"+n+">";
      var z = x.indexOf(sT);
      if(z>-1)
        x=x.substring(0,z)+x.substring(x.indexOf(eT)+eT.length);
      if(v!=null)
        x=x+sT+v+eT;
      return x;
    }

    function uMrgElemXML(e,x)
    {
      var sT="<"+e.name+">";
      var eT="</"+e.name+">";
      var v=uGetElemVal(e);
      var i=0;
      if (v!='')
      {
        var z=x.indexOf(sT);
        if(z>-1)
          x=x.substring(0,z)+x.substring(x.indexOf(eT)+eT.length);
        if(v!=null)
          x=x+sT+v+eT;
      }
      return x;
    }

    function trim(str)
    {
      return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
    }

    function uGetElemVal(e)
    {
      if(e.type=='checkbox'&&e.checked)
        return e.value;
      if(e.type=='radio')
      {
        if(e.checked)
          return e.value;
        else
          return '';
      }
      if(e.type=='password'&&e.value!='')
        return e.value;
      if(e.type=='hidden'&&e.value!='')
        return trim(e.value);
      if(e.type.indexOf('text')>-1&&e.value!='')
        return trim(e.value);
      if(e.type=='select-multiple')
      {
        var r='';
        for (var s=0; s<e.options.length; s++)
          if (e.options[s].selected)
            if (e.options[s].value == '')
              r += ',' + e.options[s].text;
            else
              r += ',' + e.options[s].value;
            return r.substring(1, r.length);
      }
      if(e.type.indexOf('select')>-1)
      {
        if(e.selectedIndex>-1)
        {
          if (e.options[e.selectedIndex].value)
            return e.options[e.selectedIndex].value;
          return e.options[e.selectedIndex].text;
        }
        return null;
      }
      return null;
    }

    function inUCheckboxNames(n)
    {
      for(var i=0;i<uCheckboxNames.length;i++)
      {
        if(n==uCheckboxNames[i])
          return true;
      }
      return false;
    }

    function uBoot(a,f,l,s,log)
    {
      uv3Init();
      uUserInit();
      top.L.location=log;
      var newAn = uGetVal('uAn');
      if(newAn)
        a=newAn;
      var newFn = uGetVal('uFn');
      if(newFn)
        f=newFn;
      var newLn = uGetVal('uLn');
      if(newLn)
        l=newLn;
      var newSn = uGetVal('uSn');
      if(newSn)
        s=newSn;
      uLdFirstAFLS(a,f,l,s);
    }

    function validateTel(tel1, tel2, tel3, ext)
    {
      var telReg1_2 = /^\d{3}$/;
      var telReg3 = /^\d{4}$/;
      var extReg = /^\d{3,4}$|^$/;
      return (telReg1_2.test(tel1) && telReg1_2.test(tel2) && telReg3.test(tel3) && extReg.test(ext));
    }

    function validateEmail(Email)
    {
      var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
      var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
      return (!r1.test(Email) && r2.test(Email));
    }

    function validateZipCode(code)
    {
      var zipReg = /^\d{5}$/;
      return (zipReg.test(code));
    }

    function validatePostalCode(code)
    {
      var postalReg = /^[a-zA-z]\d[a-zA-z]\d[a-zA-z]\d$/;
      return (postalReg.test(code));
    }

    function uSubmitHrefCache(a,f,l,s)
    {
      top.location.replace(top.webapp + '?uX=' + escape(top.uAllXML) + escape("<uNs>" + s + "</uNs>") + '&LOCALE=' + l + '&STATE_NAME=' + s + '&uAn=' + a + '&uFn=' + f + '&urequesttype=transaction');
    }

    function uSubmitCache(nextStateName)
    {
      uCheckboxNames=new Array();
      for (var i=1; i<uSubmitCache.arguments.length; i++)
      {
        top.uAllXML=uMrgNV('uArg'+i,uSubmitCache.arguments[i],top.uAllXML);
      }
      top.uHarvestXML();
      uSubmitHrefCache(top.uAn,top.uFn,top.uLn,nextStateName);
    }
 