var returnToLastHelpTopicTimeout;
var previousTopic;
var PageLoaded = false;
var browserInfo;

(function() {

  if (browserInfo == null) {
    browserInfo = new Object();
  }

  // Browser check
  ua = navigator.userAgent;
  browserInfo.isMSIE = (navigator.appName == "Microsoft Internet Explorer");
  browserInfo.isMSIE5 = browserInfo.isMSIE && (ua.indexOf('MSIE 5') != -1);
  browserInfo.isMSIE50 = browserInfo.isMSIE && (ua.indexOf('MSIE 5.0') != -1);
  browserInfo.isMSIE55 = browserInfo.isMSIE && (ua.indexOf('MSIE 5.5') != -1);
  browserInfo.isMSIE60 = browserInfo.isMSIE && (ua.indexOf('MSIE 6.0') != -1);
  browserInfo.isMSIE70 = browserInfo.isMSIE && (ua.indexOf('MSIE 7') != -1);
  browserInfo.isMSIE80 = browserInfo.isMSIE && (ua.indexOf('MSIE 8') != -1);
  browserInfo.isMSIE90 = browserInfo.isMSIE && (ua.indexOf('MSIE 9') != -1);
  browserInfo.isGecko = ua.indexOf('Gecko') != -1;
  browserInfo.isSafari = ua.indexOf('Safari') != -1;
  browserInfo.isOpera = ua.indexOf('Opera') != -1;
  browserInfo.isMac = ua.indexOf('Mac') != -1;
  browserInfo.isFirefox = ua.indexOf('Firefox') != -1;
  browserInfo.isWebKit = (ua.indexOf('WebKit') != -1 && window.devicePixelRatio) ? true : false;
  var matchWebKitVer = (browserInfo.isWebKit) ? ua.match(/[\s\S]*?(?:Version|Chrome)\/(\d+)\.?(\d*)\.?(\d*)[\s\S]*/i) : null;
  browserInfo.webKitVer = (matchWebKitVer && matchWebKitVer[1]) ? matchWebKitVer[1] : 5;
  browserInfo.webKitVer1 = (matchWebKitVer && matchWebKitVer[2]) ? matchWebKitVer[2] : 0;
  browserInfo.webKitVer2 = (matchWebKitVer && matchWebKitVer[3]) ? matchWebKitVer[3] : 0;
  browserInfo.isWebKit = (browserInfo.isWebKit && ((ua.indexOf('Version/') != -1 && (browserInfo.webKitVer == 4 && ((browserInfo.webKitVer1 == 0 && browserInfo.webKitVer2 >= 4) || browserInfo.webKitVer1 > 0)) || browserInfo.webKitVer > 4) || (ua.indexOf('Chrome/') != -1 && browserInfo.webKitVer >= 3))) ? true : false;


  if (browserInfo.isFirefox) {
    var reVersion = /Firefox\/(\d)*\./;
    reVersion.test(ua);
    browserInfo.firefoxMajorVersion = RegExp.$1;
  }

  browserInfo.isNS7 = ua.indexOf('Netscape/7') != -1;
  browserInfo.isNS71 = ua.indexOf('Netscape/7.1') != -1;

  // Fake MSIE on Opera and if Opera fakes IE, Gecko or Safari cancel those
  if (browserInfo.isOpera) {
    browserInfo.isMSIE = true;
    browserInfo.isGecko = false;
    browserInfo.isSafari = false;
  }

  browserInfo.isIE = browserInfo.isMSIE;
  browserInfo.isRealIE = browserInfo.isMSIE && !browserInfo.isOpera;

  // Check if valid browser has execcommand support
  browserInfo.execCommand = (typeof (document.execCommand) != 'undefined');

})();


function getBrowserCapabilitiesData()
{   
    this.clientCookiesEnabled = false;
    this.javascriptEnabled = true;
    this.isPlatformCompatible = false;
        
    setCookie("TestClientCookie", "TestClientCookieValue");
    this.clientCookiesEnabled = (getCookie("TestClientCookie") == "TestClientCookieValue");
    setCookie("TestClientCookie", "", (new Date("1/1/2000")).toGMTString());
    var const_minimalFirefoxSupportedVersion = 3;
    this.isPlatformCompatible =
         this.clientCookiesEnabled
      && this.javascriptEnabled
      && (browserInfo.isMSIE70 ||
          browserInfo.isMSIE80 ||
          browserInfo.isMSIE90 ||
          browserInfo.isWebKit ||
          (browserInfo.isFirefox && browserInfo.firefoxMajorVersion >= const_minimalFirefoxSupportedVersion)
         )
      && browserInfo.execCommand;
    this.browserInfo = browserInfo;
    return this;
}

function serializeBrowserCapabilitiesData(bcd)
{
    return (bcd.browserInfo.isMSIE70 ? "MSIE 7.0;" : "") + 
           (bcd.browserInfo.isMSIE80 ? "MSIE 8.0;" : "") + 
           (bcd.browserInfo.isMSIE90 ? "MSIE 9.0;" : "") + 
           (bcd.browserInfo.isWebKit ? "WebKit;" : "") + 
           (bcd.browserInfo.isFirefox ? "Firefox;" : "") + 
           (browserInfo.firefoxMajorVersion ? "FirefoxMajorVersion:" + browserInfo.firefoxMajorVersion + ";": "") +           
           (bcd.browserInfo.execCommand ? "Exec Command;" : "") + 
           (bcd.clientCookiesEnabled ? "Client Cookies Enabled;" : "") + 
           (bcd.isPlatformCompatible ? "Platform Compatible;" : "") + 
           (bcd.javascriptEnabled ? "Javascript Enabled;" : "");  
}


function setCookie (name, value, expires, path, domain, secure) {
      document.cookie = name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

function getCookie(name) {
	var cookie = " " + document.cookie;
	var search = " " + name + "=";
	var setStr = null;
	var offset = 0;
	var end = 0;
	if (cookie.length > 0) {
		offset = cookie.indexOf(search);
		if (offset != -1) {
			offset += search.length;
			end = cookie.indexOf(";", offset)
			if (end == -1) {
				end = cookie.length;
			}
			setStr = unescape(cookie.substring(offset, end));
		}
	}
	return(setStr);
}


function OnTermsCheckChanged() 
{
    window.setTimeout(
        function()
        {          
            objRegisterButton.src = (objTermsOfUseCheckBox.checked ? "/Images/btn-submit-n.gif" : "/Images/btn-submit-d.gif");
            objRegisterButton.style.cursor = (objTermsOfUseCheckBox.checked ? "pointer" : "default");
        },
        10
    );
}

function OnFormSubmit()
{   
    if (!objTermsOfUseCheckBox.checked)
    {
        return false;
    }
              
    if (Page_ClientValidate("PrimaryValidationGroup"))
    {
        objRegisterButton.style.visibility = "hidden";
        objLoadingProgressContainer.style.display = "block";
        
        objAssociationNameTextBox.readOnly = true;    
        objEmailTextBox.readOnly = true;    
        objAssociationCategoryDropDown.readOnly = true;    
        objNameTextBox.readOnly = true;    
        objTermsOfUseCheckBox.readOnly = true;   
        
        LoadHelpTopic(objHelpTopics.register, true);
        PageLoaded = false;  
        
        return true;
    }
    
    return false;

}

function OnActivationFormSubmitted()
{
  if(activateAnyWayProgress && activateAnyWayButton)
  {
    activateAnyWayButton.style.visibility = 'hidden';
    activateAnyWayProgress.style.display = 'block';
  }
  return true;
}


function OnRegisterButtonClicked()
{
    if (!objTermsOfUseCheckBox.checked)
    {
        return false;
    }
        
    return true;
}

function LoadHelpTopic(topic, saveAsLast)
{
    if (!PageLoaded) return; 
    if (!topic) return;     
    if (topic == previousTopic) return;
    
    previousTopic = topic;
    
    objHelp.style.display = "block";
    
    objHelpHeader.innerHTML = topic.header;
    objHelpExceptions.innerHTML = topic.exceptions;    
    objHelpExceptions.style.display = (topic.exceptions ? "" : "none");    
    objHelpContent.innerHTML = topic.text;
    objHelp.style.display = "block";
}

//***********************************************************
//
//                      VALIDATION
//
//***********************************************************

//var _UdDomainNames = ['NET','COM','BIZ','ORG','EDU','MIL','GOV','PRO','INT','COOP','NAME','INFO','AERO','ARPA','TRAVEL','MUSEUM','US','CA','UK','GB','FR','RU','AC','AD','AE','AF','AG','AI','AL','AM','AN','AO','AQ','AR','AS','AT','AU','AW','AZ','BA','BB','BD','BE','BF','BG','BH','BI','BJ','BM','BN','BO','BR','BS','BT','BV','BW','BY','BZ','CC','CD','CF','CG','CH','CI','CK','CL','CM','CN','CO','CR','CU','CV','CX','CY','CZ','DE','DJ','DK','DM','DO','DZ','EC','EE','EG','ER','ES','ET','EU','FI','FJ','FK','FM','FO','GA','GD','GE','GF','GG','GH','GI','GL','GM','GN','GP','GQ','GR','GS','GT','GU','GW','GY','HK','HM','HN','HR','HT','HU','ID','IE','IL','IM','IN','IO','IQ','IR','IS','IT','JE','JM','JO','JP','KE','KG','KH','KI','KM','KN','KR','KW','KY','KZ','LA','LB','LC','LI','LK','LR','LS','LT','LU','LV','LY','MA','MC','MD','MG','MH','MK','ML','MM','MN','MO','MP','MQ','MR','MS','MT','MU','MV','MW','MX','MY','MZ','NA','NC','NE','NF','NG','NI','NL','NO','NP','NR','NU','NZ','OM','PA','PE','PF','PG','PH','PK','PL','PM','PN','PR','PS','PT','PW','PY','QA','RE','RO','RW','SA','SB','SC','SD','SE','SG','SH','SI','SJ','SK','SL','SM','SN','SO','SR','ST','SU','SV','SY','SZ','TC','TD','TF','TG','TH','TJ','TK','TL','TM','TN','TO','TP','TR','TT','TV','TW','TZ','UA','UG','UM','UY','UZ','VA','VC','VE','VG','VI','VN','VU','WF','WS','YE','YT','YU','ZA','ZM','ZW'];

function _udTrim(s)
{
    var m = s.match(/^\s*(\S+(\s+\S+)*)\s*$/);
    return m == null ? '' : m[1];
}

function ValidateAssociationName(source, args) 
{
    var s, m, i;    
    args.IsValid = false;
    s = _udTrim(args.Value);
    
    if (s != '')
    {
        args.IsValid = true;
    }
        
    objAssociationNameWarningIcon.style.visibility = (args.IsValid ? "hidden" : "visible");
    objAssociationNameWarningIcon.title = objHelpTopics.associationName.exceptions = (!args.IsValid ? AssociationNameValidator.errormessage : "");
    
}

function ValidateEmail(source, args) 
{
    var s, m, i;    
    args.IsValid = false;
    s = _udTrim(args.Value);
    
    m = s.match(/^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/);

    args.IsValid = !IsEmailReserved(s) && (m != null && m.length > 0);
    objEmailWarningIcon.style.visibility = (args.IsValid ? "hidden" : "visible");
    objEmailWarningIcon.title = objHelpTopics.email.exceptions = (!args.IsValid ? EmailValidator.errormessage : "");
}

function IsEmailReserved(email)
{
  if(!reservedEmails)
  {
    return false;
  }
  var mails = reservedEmails.split(/,/);
  for(i = 0; i < mails.length; i++)
  {
    if(email.toLowerCase().indexOf(mails[i]) != -1)
    {
      return true;
      break;
    }
  }
  return false;
}