﻿//<summary>Update for security enhancement and risk fixing</summary>
//<author>Ramazan Aksoy</author>
//<date>Dec 23, 2009</date>
//<details>
//<risk class="A8">
//<desc>Password Strength</desc>
//<mitigation>Enforced password strength and also enforces to change every year.</mitigation>
//</risk>
//</details>

//xmlhttp cross browser (new IE / new Mozilla)

var xmlhttp
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
  try {
  xmlhttp=new ActiveXObject("Msxml2.XMLHTTP")
 } catch (e) {
  try {
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
  } catch (E) {
   xmlhttp=false
  }
 }
@else
 xmlhttp=false
@end @*/

if (!xmlhttp && typeof XMLHttpRequest!='undefined') 
{
    try
    {
        xmlhttp = new XMLHttpRequest();
    } 
    catch (e) 
    {             
        xmlhttp=false;
    }
}
     
var ErrorMessage; 
var datareturned;

var Email;
var ConfirmEmail;
var FriendEmail;
var Password;
var ConfirmPassword  
var OldPassword
var ScreenName; 
var Comment;
var Terms;
var CaptchaInput;
var CaptchaValue;
var OSTAbout_0;
var OSTAbout_1;
var OSTAbout_2;
var OSTText;
var Reason;
var Name;
var FriendName;
var SpreadMessage;
var FirstName;
var LastName;
var Postal;
var HHL;
var chkPasswordChange;

var divError;
var divPassword;  
var divTerms;
var divPostal;
var divPassword;
/***********************************************************************************************/
/*Modal Validate Functions*/
/***********************************************************************************************/
function ValidateCommentOnWebisode()
{

    ErrorMessage = "";
    Email = document.getElementById('txtEmailAddress'); 
    Password = document.getElementById("txtPassword");
    ScreenName = document.getElementById("txtScreenName");
    Comment = document.getElementById("txtComment");
    Terms = document.getElementById("chkTerms");
    CaptchaInput = document.getElementById("txtCaptcha");
    CaptchaValue = document.getElementById("hdnCaptcha");
    
    divError = document.getElementById("divErrorMessage") ;
    divPassword = document.getElementById("divPassword"); 
    divTerms= document.getElementById("divTerms"); 
    
    if(IsUserLoggedIn() != true)
    {
        ValidateEmail();
        ValidatePassword();
        ValidateScreenName();        
    }
    ValidateComment();
    ValidateTerms();
    ValidateCaptcha();
    
    if(ErrorMessage == "")
    {
       document.getElementById("txtScreenName").disabled = false;
       return true;       
    }
    else
    {
        divError.innerHTML=ErrorMessage;
        return false;
    }
}

function ValidateOSTSubmission()
{
    ErrorMessage = "";
    Email = document.getElementById('txtEmailAddress'); 
    Password = document.getElementById("txtPassword");
    ScreenName = document.getElementById("txtScreenName");
    OSTAbout_0 = document.getElementById("radCategoryType_0");
    OSTAbout_1 = document.getElementById("radCategoryType_1");
    OSTAbout_2 = document.getElementById("radCategoryType_2");
    OSTText = document.getElementById("txtOST");
    Terms = document.getElementById("chkTerms");
    CaptchaInput = document.getElementById("txtCaptcha");
    CaptchaValue = document.getElementById("hdnCaptcha");

    
    divError = document.getElementById("divErrorMessage"); 
    divPassword = document.getElementById("divPassword"); 
    divTerms= document.getElementById("divTerms"); 
    
    if(IsUserLoggedIn() != true)
    {
        ValidateEmail();
        ValidatePassword();
        ValidateScreenName();        
    }
    ValidateOSTAbout();
    ValidateOSTText();
    ValidateTerms();
    ValidateCaptcha();
    
    if(ErrorMessage == "")
    {
        ScreenName.disabled = false;
        return true;
    }
    else
    {
        divError.innerHTML=ErrorMessage;
        return false;
    }

}

function ValidateFlagInappropriate()
{
    ErrorMessage = "";
    Email = document.getElementById('txtEmailAddress'); 
    Password = document.getElementById("txtPassword");
    ScreenName = document.getElementById("txtScreenName");
    Reason = document.getElementById("ddlReason");
    CaptchaInput = document.getElementById("txtCaptcha");
    CaptchaValue = document.getElementById("hdnCaptcha");
    
    divError = document.getElementById("divErrorMessage");
    divPassword = document.getElementById("divPassword"); 
    
    if(IsUserLoggedIn() != true)
    {
        ValidateEmail();
        ValidatePassword();
        ValidateScreenName();        
    }
    ValidateFlagInappropriateReason();
    ValidateCaptcha();
    
    if(ErrorMessage == "")
    {
        ScreenName.disabled = false;
        return true;
    }
    else
    {
        divError.innerHTML=ErrorMessage;
        return false;
    }
    
}

function ValidateSpreadTheWord()
{
    ErrorMessage = "";
    Email = document.getElementById('txtEmailAddress'); 
    FriendEmail = document.getElementById('txtFriendEmailAddress'); 
    Name = document.getElementById('txtName'); 
    FriendName = document.getElementById('txtFriendName'); 
    SpreadMessage = document.getElementById('txtMessage'); 
    
    divError = document.getElementById("divErrorMessage");
    
    ValidateEmail();
    ValidateFriendEmail();
    ValidateName(Name.value, "");
    ValidateName(FriendName.value, "friend's ");
    ValidateSpreadMessage();

    if(ErrorMessage == "")
    {
        return true;
    }
    else
    {
        divError.innerHTML=ErrorMessage;
        return false;
    }
}

function ValidateSignUp()
{
    ErrorMessage = "";
    
    FirstName = document.getElementById('txtFirstName'); 
    LastName = document.getElementById('txtLastName'); 
    ScreenName = document.getElementById("txtScreenName");
    Email = document.getElementById('txtEmailAddress'); 
    ConfirmEmail = document.getElementById('txtEmailAddress2'); 
    Password = document.getElementById('txtPassword'); 
    ConfirmPassword = document.getElementById('txtPassword2'); 
    Terms = document.getElementById("chkTerms");
    CaptchaInput = document.getElementById("txtCaptcha");
    CaptchaValue = document.getElementById("hdnCaptcha");
    
    divPostal = document.getElementById("divPostal"); 
    divError = document.getElementById("divErrorMessage");
    
    ValidateName(FirstName.value, "first ");
    ValidateName(FirstName.value, "last ");
    ValidateScreenName(); 
    ValidateEmail();
    ValidateConfirmEmail(); 
    PasswordCheck();
    ValidatePostal();
    ValidateSignUpTerms();
    AlreadySignedUp();    
    ValidateCaptcha();
    
        
    if(ErrorMessage == "")
    {
        return true;
    }
    else
    {
        divError.innerHTML=ErrorMessage;
        return false;
    }
}

function ValidateUpdateSignUp()
{
   ErrorMessage = "";
    
    FirstName = document.getElementById('txtFirstName'); 
    LastName = document.getElementById('txtLastName'); 
    ScreenName = document.getElementById("txtScreenName");
    Email = document.getElementById('txtEmailAddress'); 
    ConfirmEmail = document.getElementById('txtEmailAddress2'); 
    OldPassword = document.getElementById('txtOldPassword'); 
    Password = document.getElementById('txtPassword'); 
    ConfirmPassword = document.getElementById('txtPassword2'); 
    CaptchaInput = document.getElementById("txtCaptcha");
    CaptchaValue = document.getElementById("hdnCaptcha");
    chkPasswordChange = document.getElementById("chkPasswordChange"); 
    Terms = document.getElementById("chkTerms");
    
    divError = document.getElementById("divErrorMessage");
    
    
    ValidateName(FirstName.value, "first ");
    ValidateName(FirstName.value, "last ");
    ValidateScreenName(); 
    ValidateEmail();
    ValidateConfirmEmail(); 
    ValidateSignUpTerms(); 
    
    if(chkPasswordChange.checked == true)
    {   
        VerifyOldPassword();
        PasswordCheck(); 
    }
    ValidateCaptcha();
    
    
        
    if(ErrorMessage == "")
    {
        return true;
    }
    else
    {
        divError.innerHTML=ErrorMessage;
        return false;
    }  
}

/***********************************************************************************************/
/*End Modal Validate Functions*/
/***********************************************************************************************/




/***********************************************************************************************/
/*Helper Validate Functions*/
/***********************************************************************************************/
function IsUserLoggedIn()
{
    xmlhttp.open("POST","../../AJAX/IsUserLoggedIn.aspx",false);
    xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
    var datatosend = "";
    xmlhttp.send(datatosend);    
    
    datareturned = xmlhttp.responseText;                           
    
    if (datareturned != "TRUE")
    {
        return false;
    }
    else
    {
        return true;
    }    

}

function ValidateEmail() 
{    
    if(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(Email.value))          
    {
       // return true;    
    }
    else
    {
        ErrorMessage = ErrorMessage + "* Please enter a valid email address.<br />";
    }
}

function ValidateConfirmEmail() 
{    
    if(Email.value != ConfirmEmail.value)          
    {
        ErrorMessage = ErrorMessage + "* The email addresses provided do not match<br />";
    }
}

function ValidateFriendEmail() 
{        
    if(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(Email.value))          
    {
       // return true;    
    }
    else
    {
        ErrorMessage = ErrorMessage + "* Please enter a valid email address for your friend.<br />";
    }
}

function ValidatePostal()
{
    if(divPostal.style.display=="block")
    {   
        if(/^([a-z]\d){3}$/i.test(Postal.value))          
        {
           // return true;    
        }
        else
        {
           ErrorMessage = ErrorMessage + "* Please enter a valid postal code (use format a9a9a9)<br />"; 
        }
    }    
}

function PasswordCheck()
{
    //if(Password.value.length < 6 || ConfirmPassword.value.length > 10)
    //{
    //    ErrorMessage = ErrorMessage + "* The password should be between 6 to 10 characters in length<br />";
   // }
    //else
    //{
    if(Password.value != ConfirmPassword.value)
    {
        ErrorMessage = ErrorMessage + "* The passwords do not match<br />";
    }
    //}
    xmlhttp.open("POST","../../AJAX/CheckPasswordStrength.aspx",false);
    xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
    var datatosend = "FirstName="+FirstName.value+"&Password="+escape(Password.value)+"&LastName=" +LastName.value;
    xmlhttp.send(datatosend);    
    
    datareturned = xmlhttp.responseText;                            
    
    if (datareturned != "")
    {
        //alert(datareturned);
        ErrorMessage = ErrorMessage + datareturned +"<br/>";
    }           
}

function ValidatePassword()
{                
    if(divPassword.style.display=="block")
    {               
        if(Password.value == "")
        {
            ErrorMessage = ErrorMessage + "* Please enter a valid password.<br />";
        } 
        else
        {
            xmlhttp.open("POST","../../AJAX/ValidatePassword.aspx",false);
            xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
            var datatosend = "EmailAddress="+Email.value+"&Password="+escape(Password.value);
            xmlhttp.send(datatosend);    
            
            datareturned = xmlhttp.responseText;                            
            
            if (datareturned != "TRUE")
            {
                ErrorMessage = ErrorMessage + "* Please enter a valid password.<br />";
            }           
        }
    }        
}

function ValidateScreenName()
{
    if(ScreenName.value.length < 1)
    {
        ErrorMessage = ErrorMessage + "* Please enter a screen name.<br />";
    }
    else if(ScreenName.value.length > 20)
    {
        ErrorMessage = ErrorMessage + "* Your screen name exceeds 20 characters <br />";
    }
    else
    {
        xmlhttp.open("POST","../../AJAX/ScreenNameInUse.aspx",false);
        xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
        var datatosend = "EmailAddress="+Email.value+"&ScreenName="+ScreenName.value;
        xmlhttp.send(datatosend);    
        
        datareturned = xmlhttp.responseText;
        
        if (datareturned != "FALSE")
        {		
               ErrorMessage = ErrorMessage + "* Oops! This screen name is already being used. Please try another.<br />";
        }
        else
        {
            ProfanityCheck(ScreenName.value, "screen name")
        } 
    }  
}

function ProfanityCheck(StringToCheck, Source)
{
    xmlhttp.open("POST","../../AJAX/ProfanityFilter.aspx",false);
    xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
    var datatosend = "StringToCheck="+StringToCheck;
    xmlhttp.send(datatosend);                
    
    datareturned = xmlhttp.responseText;
    
    if (datareturned != "FALSE")
    {		
           ErrorMessage = ErrorMessage + "* Your " + Source + " contains profanities and will not be posted. Please edit your " + Source + " before resubmitting.<br />";
    }   
}

function ValidateComment()
{
    if(Comment.value.length < 1)
    {
        ErrorMessage = ErrorMessage + "* Please check your comments.<br />";
    }
    else
    {
        if(Comment.value.length > 500)
        {
            ErrorMessage = ErrorMessage + "* Your comment exceeds 500 characters<br />";
        }
        else
        {
            ProfanityCheck(Comment.value, "Comment");
        }
        
    }
}

function ValidateTerms()
{
    if(divTerms.style.display=="block")
    {
        if(Terms.checked == false)
        {
            ErrorMessage = ErrorMessage + "* In order to submit your comment, you must agree to the terms and conditions as outlined in the Community Guidelines. Please check this before proceeding.<br />"
            
        }
    }

}

function ValidateSignUpTerms()
{
    if(Terms.checked == false)
    {
        ErrorMessage = ErrorMessage + "* In order to submit your sign up, you must agree to the terms and conditions as outlined in the Community Guidelines. Please check this before proceeding.<br />"
    }
}

function ValidateCaptcha()
{
    if(CaptchaInput.value.length < 1)
    {
        ErrorMessage = ErrorMessage + "* The code submitted does not match the one that's displayed. Please try again.<br />";
    }
    else
    {
        xmlhttp.open("POST","../../AJAX/ValidateCaptcha.aspx",false);
        xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
        var datatosend = "CaptchaInput="+CaptchaInput.value+"&CaptchaValue="+CaptchaValue.value;
        xmlhttp.send(datatosend);    
        
        datareturned = xmlhttp.responseText;                           
        
        if (datareturned != "TRUE")
        {
            ErrorMessage = ErrorMessage + "* The code submitted does not match the one that's displayed. Please try again.<br />"    
        }
    }
}

function ValidateOSTAbout()
{
    //alert(OSTAbout.selectedIndex);
    if(OSTAbout_0.checked == false && OSTAbout_1.checked == false && OSTAbout_2.checked == false)
    {
        ErrorMessage = ErrorMessage + "* Please select what your one small thing is about.<br />";
    }
}

function ValidateOSTText()
{
    if(OSTText.value.length < 1)
    {
        ErrorMessage = ErrorMessage + "* Please check your comments.<br />";
    }
    else
    {
        if(OSTText.value.length > 100)
        {
            ErrorMessage = ErrorMessage + "* Your comment exceeds 100 characters<br />";
        }
        else
        {
            ProfanityCheck(OSTText.value, "Comment");
        }
        
    }
}

function ValidateFlagInappropriateReason()
{
    if(Reason.selectedIndex == 0)
    {
        ErrorMessage = ErrorMessage + "* Please select a reason why this content is inappropriate<br />"
    }
}

function ValidateName(TheName, TheType)
{
    if(TheName.length < 1)
    {
        ErrorMessage = ErrorMessage + "* Please enter your " + TheType + "name.<br />";
    }
}

function ValidateSpreadMessage()
{
    if(SpreadMessage.value.length < 1)
    {
        ErrorMessage = ErrorMessage + "* Please enter a message.<br />";
    }
    else
    {
        if(SpreadMessage.value.length > 1000)
        {
            ErrorMessage = ErrorMessage + "* Your message exceeds 1000 characters<br />";
        }      
        
    }
}

function AlreadySignedUp()
{
    xmlhttp.open("POST","../../AJAX/EmailAddressInUse.aspx",false);
    xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
    var datatosend = "EmailAddress="+Email.value;
    xmlhttp.send(datatosend);    
    
    datareturned = xmlhttp.responseText;
    if(datareturned != "")
    {
        ErrorMessage = ErrorMessage + "* Oops! You have already signed up.  Please <a href=\"login.aspx\">login</a> instead <br />";
    
    }
}

function VerifyOldPassword()
{
    xmlhttp.open("POST","../../AJAX/VerifyOldPassword.aspx",false);
    xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
    var datatosend = "OldPassword="+escape(OldPassword.value);
    xmlhttp.send(datatosend);    
    
    datareturned = xmlhttp.responseText;
    if(datareturned != "TRUE")
    {
        ErrorMessage = ErrorMessage + "* Your old password is incorrect. <a href=\"ForgotPassword.aspx\"><strong>Forgot your password?</strong></a><br />";
        //ErrorMessage = ErrorMessage + datareturned //"* Old password is incorrect <br />";
    
    }
}

/*End Helper Validate Functions*/


/*Miscellaneous Functions*/
function GenerateNewCaptcha()
{
    xmlhttp.open("POST","../../AJAX/GenerateNewCaptcha.aspx",false);
    xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
    var datatosend = "";
    xmlhttp.send(datatosend);
    
    
    datareturned = xmlhttp.responseText;
    document.getElementById("hdnCaptcha").value = datareturned;
    document.getElementById("imgCaptcha").src="../../Captcha.aspx?SecurityCode="+datareturned;

    return false;
}

function EmailAddressInUse()
{
    xmlhttp.open("POST","../../AJAX/EmailAddressInUse.aspx",false);
    xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
    var datatosend = "EmailAddress="+document.getElementById("txtEmailAddress").value;
    xmlhttp.send(datatosend);
    
    
    datareturned = xmlhttp.responseText;
    
    var divPassword = document.getElementById("divPassword");                               
    
    if (datareturned != "")
    {		
           divPassword.style.display="block";
           document.getElementById("txtScreenName").value=datareturned
           document.getElementById("txtScreenName").disabled = true;
    }
    else
    {
        divPassword.style.display="none"; 
        document.getElementById("txtPassword").value="";  
        document.getElementById("txtScreenName").disabled = false;
    }            
}


function ShowHideHHLPostal()
{
    divPostal = document.getElementById("divPostal");  
    HHL = document.getElementById("chkHHL"); 
    Postal = document.getElementById("txtPostal"); 
    if(HHL.checked == false)
    {
        divPostal.style.display="none";
        Postal.value = "";
    }
    else
    {
        divPostal.style.display="block";
    }
}

function ShowHideEditPassword()
{
    divPassword = document.getElementById("divPassword"); 
    chkPasswordChange = document.getElementById("chkPasswordChange"); 
    Password = document.getElementById("txtPassword"); 
    ConfirmPassword = document.getElementById("txtPassword2");  
    OldPassword = document.getElementById("txtOldPassword"); 
    
    if(chkPasswordChange.checked == false)
    {
        divPassword.style.display="none";
        Password.value = "";
        ConfirmPassword.value = "";
        OldPassword.value = "";
    }
    else
    {
        divPassword.style.display="block";
    }
    
}
/*End Miscellaneous Functions*/
