
     
      var isvalid = true;
      var emailvalue ='';
      var securitynumberisvalid = true;
      var securitynumbervalue ='';
      function regExpValidation(sender, args, pattern)
      { 
        regexp = new RegExp(pattern);
        match = regexp.test(args.Value)
        if(match==false)
        { 
             args.IsValid = false;
             //addCssClass('validationerror',$get(sender.controltovalidate));
             //document.getElementById(sender.controltovalidate).className='validationerror';
        }
        else
        {
          args.IsValid = true;
          //removeCssClass('validationerror',$get(sender.controltovalidate));
          //document.getElementById(sender.controltovalidate).className='';
        }
      }
      

    function addCssClass (className, element){
	    var currentClass = element.className;
	    if(!new RegExp(("(^|\\s)" + className + "(\\s|$)"), "i").test(currentClass)){
		    element.className = currentClass + ((currentClass.length > 0)? " " : "") + className;
	    }
	    return element;
    }

   function removeCssClass (className, element){
	    var classToRemove = new RegExp(("(^|\\s)" + className + "(\\s|$)"), "i");
	    element.className = element.className.replace(classToRemove, function (match){
		    var retVal = "";
		    if(new RegExp("^\\s+.*\\s+$").test(match)){
			    retVal = match.replace(/(\s+).+/, "$1");
		    }
		    return retVal;
	    }).replace(/^\s+|\s+$/g, "");
	    return element;
        }
      function OnBlurHandler(element, arguments, defaultvalue, dynamicInfoLabelId)
      {
          if(element.value==defaultvalue)
          {
            element.onchange.apply(element,arguments);
          }
          HideValidationMessage(dynamicInfoLabelId);
      }
      function HideValidationMessage(elementId)
      {
        $get(elementId).style.display="none";
      }
      function ShowValidationMessage(elementId)
      {
         $get(elementId).style.display="inline";
      }
      function FindOkImage(siblingelement)
      {
        
        var parent = siblingelement.parentNode;
        for(i = 0; i < parent.childNodes.length;i++)
        {
            if(parent.childNodes[i].tagName=="IMG")
            {
                return parent.childNodes[i];
            }
        }
        return "notfound";
      }
      
      function FindErrorMessage(documentelement)
      {
        var retelement = null;
        var childIndex = 0;
        for(childIndex; childIndex < documentelement.childNodes.length;childIndex++)
        {
            var element = documentelement.childNodes[childIndex];
            try
            {
                if(element.id == 'ErrorMessage')
                {
                    retelement = element;
                    break;
                }
                else
                {
                    if(element.childNodes.length > 0)
                    {
                        retelement = FindErrorMessage(element);
                        if(retelement != null)break;
                    }
                }
            }
            catch(ex)
            {
                return null;
            }
        }
        return retelement;
      }
      
      function ToggleOkImage(sibling, display)
      {
        var okImage = FindOkImage(sibling);
        if(okImage!="notfound")
        {
            if(display) 
            {
                okImage.style.display='inline';
            }
            else
            {
                okImage.style.display='none';
            }
        }
      }
      
      function SetErrorMessage(element, message)
      {
      
        var el = FindErrorMessage(element);
        if(el != null)
        {
            el.innerHTML = message;
        }
      }
      
      function CustomValidationPassword(sender, args)
      { 
        if (args.Value.length > 3)
        {
            pattern = '^\\s*[^<>\'";\\s]+(\\s|[^<>\'";])*$';
            regExpValidation(sender,args,pattern);
        }
        else
        {
            args.IsValid = false;
        }
        ToggleOkImage(sender, args.IsValid);
        //Used to toggle the Ok image for the other password field...
        UpdateDependingFields(sender.controltovalidate, args.IsValid);
      }
      function CustomValidationPasswordConfirm(sender, args)
      { 
        pattern = '^\\s*[^<>\'";\\s]+(\\s|[^<>\'";])*$';
        regExpValidation(sender,args,pattern);
        var element=$get(sender.controltovalidate);
        var allValid=true; 
        for(var i = 0; i<element.Validators.length; i++)
        {
            if(!element.Validators[i].isvalid)
            {
                allValid =false;
                break;
            }
        }
        ToggleOkImage(sender, args.IsValid&&allValid);
        //Used to toggle the Ok image for the other password field...
        
      }
      function CustomValidationRequiredField(sender, args)
      { 
        pattern = '^\\s*[^<>\'";\\s]+(\\s|[^<>\'";])*$';
        regExpValidation(sender,args,pattern);
        ToggleOkImage(sender, args.IsValid);
      }
      function CustomValidationNotRequiredField(sender, args)
      { 
        pattern = '^[^<>\'";]*$';
        regExpValidation(sender,args,pattern);
        ToggleOkImage(sender, args.IsValid);
      }
      function CustomValidationEmail(sender, args)
      { 
        pattern = "\\S+@\\S+\.\\S+";
        regExpValidation(sender,args,pattern);
      }
      function CustomValidationSocialSecurityNumber(sender, args)
      {
        pattern = "^\\d{6}-\\d{4}$|^\\d{10}$";
        regExpValidation(sender,args,pattern);
      }
      function CustomValidationListboxNotEmpty(sender, args)
      {
          var target = $get(sender.controltovalidate);
          if(target.length>0)
          {
              removeCssClass("validation_error",target);
              removeCssClass("validation_error",target.parentNode);
              args.IsValid=true;
          }
          else
          { 
              addCssClass("validation_error",target);
              addCssClass("validation_error",target.parentNode);
              args.IsValid=false;
          }
      }
      function UpdateDependingFields(elementId, display)
      {
        element =  $get(elementId);
        for(var i = 0;i<element.Validators.length;  i++)
        {
            var dependingelementId = element.Validators[i].controltocompare;
            if(typeof dependingelementId!='undefined')
            {
                dependingelementId = element.Validators[i].controltovalidate;
                var dependingelement = $get(dependingelementId);
                ToggleOkImage(dependingelement, display&&(dependingelement.value==element.value));
            }
        }
      }
     function updateValidation(checked,valueId, validatorId)
     {
        element=$get(valueId);
        validator =$get(validatorId);
        if(checked)
        {
            element.value++;
            removeCssClass("validation_error",element.parentNode);
            validator.style.display="none";
            validator.style.visibility="hidden";
        }
        else
        {
            element.value--;
            if(element.value=="0")
            {
                addCssClass("validation_error",element.parentNode);
                validator.style.display="inline";
                validator.style.visibility="visible";
            }
        }
     }
    function validateMultiSelect(sender, args)
    {    
        var target = $get(sender.controltovalidate);
        if(target.value=="0")
        {
            args.IsValid=false;
            addCssClass("validation_error",target.parentNode);
        }
        else
        {
            args.IsValid=true;
            removeCssClass("validation_error",target.parentNode);
        }
        
    }
    
    
      function CustomValidationEmailRegistered(sender, args)
      { 
        CustomValidationEmail(sender, args);
        //if(args.IsValid)
        //{
            if(emailvalue!=args.Value) //check to avoid running unneccessary server calls if nothing has changed.
            { 
                 // Run clientemailcorrect check...
                 var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
                 if (!filter.test(args.Value))
                 {
                     sender.errormessage = 'Ej giltig epostadress';
                     args.IsValid = false;
                    
                 }else if(emailistaken(args.Value)=='true')
                 {
                     sender.errormessage = 'Din epostadress &auml;r finns redan registrerad hos oss. Var v&auml;nlig kontakta kundtj&auml;nst.';
                     args.IsValid= false;
                 }
                 else
                 {
                     args.IsValid= true;
                 }
                 emailvalue = args.Value;
                 
            }
            else
            {
              args.IsValid = isvalid;
            }
        //}
        isvalid=args.IsValid;
        ToggleOkImage(sender, args.IsValid);
        SetErrorMessage(sender.parentNode, sender.errormessage);
      }
      
      function CustomValidationSecurityNumberRegistered(sender, args)
      { 
        CustomValidationSocialSecurityNumber(sender, args);
        if(args.IsValid)
        {
            if(securitynumbervalue!=args.Value) //check to avoid running unneccessary server calls if nothing has changed.
            { 
                 if(securitynumberistaken(args.Value)=='true')
                 {
                     args.IsValid= false;
                 }
                 else
                 {
                     args.IsValid= true;
                 }
                 securitynumbervalue = args.Value;
                 
            }
            else
            {
              args.IsValid = securitynumberisvalid;
            }
        }
        securitynumberisvalid=args.IsValid;
        ToggleOkImage(sender, args.IsValid);
      }
     

      function emailistaken(email) //checks if the email is taken with a webservice call
      {
          var result = SynchCall('EmailIsTaken','email='+email);
          return result.documentElement.childNodes[0].data;
      }
      function securitynumberistaken(number) //checks if the securitynumber is taken with a webservice call
      {
          var result = SynchCall('SecurityNumberIsTaken','securityNumber='+number);
          return result.documentElement.childNodes[0].data;
      }
         
      function SynchCall(method, passData)
      {
          //sends an xmlhttprequest
          url = "/CarreraFramework/CarreraServices.asmx/" + method + "?"+passData;
          if (window.XMLHttpRequest)
          {
              xmlhttp=new XMLHttpRequest();
          }
          else
          {
              xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
          } 
          if (xmlhttp)
          {
              try
              {
                  xmlhttp.open("GET", url, false);
                  xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                  xmlhttp.send(passData);
                  return xmlhttp.responseXML;
              }
              catch(ex)
              {
                  alert(ex);
              }
          }
          else
          {
              alert("Not able to create HTTP request");
          }
      }
      if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
      
    

