/////////////////////////////////////////////////////////////////////////////////////////
// Removes the leading and trailing spaces in a strings and returns the trimmed string
/////////////////////////////////////////////////////////////////////////////////////////
function trimSpaces(stringValue) {
    // Checks the first occurance of spaces and removes them
    for(i = 0; i < stringValue.length; i++) {
        if(stringValue.charAt(i) != " ") {
            break;
        }
    }
    if(i > 0) {
        stringValue = stringValue.substring(i);
    }
    
    // Checks the last occurance of spaces and removes them
    strLength = stringValue.length - 1;
    for(i = strLength; i >= 0; i--) {
        if(stringValue.charAt(i) != " ") {
            break;
        }
    }
    if(i < strLength) {
        stringValue = stringValue.substring(0, i + 1);
    }
    
    // Returns the string after removing leading and trailing spaces.
    return stringValue;
}

/////////////////////////////////////////////////////////////////////////////////////////
// Checks whether a string is a valid email address.
/////////////////////////////////////////////////////////////////////////////////////////
function checkEmail(emailString) {
	
	   splitVal = emailString.split('@');
    
    if(splitVal.length <= 1) {
        alert("Please enter a valid email address");
        return false;
    }
    if(splitVal[0].length <= 0 || splitVal[1].length <= 0) {
        alert("Please enter a valid email address");
        return false;
    }
    
    splitDomain = splitVal[1].split('.');
    if(splitDomain.length <= 1) {
        alert("Please enter a valid email address");
        return false;
    }
    if(splitDomain[0].length <= 0 || splitDomain[1].length <= 1) {
        alert("Please enter a valid email address");
        return false;
    }
    return true;
}

/////////////////////////////////////////////////////////////////////////////////////////
// Check whether a string contain permitted characters only
/////////////////////////////////////////////////////////////////////////////////////////
function checkAllowedChars(strToCheck, allowedChars)
{
     var acLen     = allowedChars.length;
     var stcLen     = strToCheck.length;
     strToCheck     = strToCheck.toLowerCase();
     var i;
     var j;
     var rightCount = 0;
     for(i = 0; i < acLen; i++)
     {
          switch(allowedChars.charAt(i))
          {
          case 'A':
               for(j = 0; j< stcLen; j++)
               {
                    rightCount += strToCheck.charAt(j) >= 'a' && strToCheck.charAt(j) <= 'z';
               }
               break;
          case 'N':
               for(j = 0; j< stcLen; j++)
               {
                    rightCount += strToCheck.charAt(j) >= '0' && strToCheck.charAt(j) <= '9';
               }
               break;
          default:
               for(j = -1; -1 != (j = strToCheck.indexOf(allowedChars.charAt(i), j + 1)); rightCount++);
               break;
          }
     }
     if(rightCount == stcLen)
     {
          return true;
     }
     return false;
}

function changeValue(field_name,default_value,flag)
{
    if(flag==1 && field_name.value==default_value)
        field_name.value = '';
    else if(flag==2 && field_name.value=='')
        field_name.value = default_value;
}

var ajax_file = 'common_ajax.php';
/* User Side */ 
function leftSearch()
{
    var search = trimSpaces(document.left_side_form.search.value);
    if(search!='' && search.length>=3)
        window.location = search_root + search;
    else
    {
        if(search=='')
            alert("Please enter any keyword !.")
        else if(search.length<3)
            alert("Keyword must be minimum 3 characters !.")
        document.getElementById('search').focus();
    }
}
function checkLogin()
{
    animatedcollapse.hide("error_message_top");
    if(trimSpaces(document.userlogin.username.value)=='')
    {
        document.getElementById('error_message_top').innerHTML = "Username is required !.";
        animatedcollapse.show("error_message_top");
        document.userlogin.username.focus();
        return false;
    }
    else if(trimSpaces(document.userlogin.password.value)=='')
    {
        document.getElementById('error_message_top').innerHTML = "Password is required !.";
        animatedcollapse.show("error_message_top");
        document.userlogin.password.focus();
        return false;
    }
    else
    {
        JQuery.post(ajax_file, {
            task     : 'userlogin',
            username : trimSpaces(document.userlogin.username.value),
            password : trimSpaces(document.userlogin.password.value)
        },
        function(data)
        {
            if(data.result=='success')
                window.location.reload();
            else
            {
                document.getElementById('error_message_top').innerHTML = data.error;
                animatedcollapse.show('error_message_top'); 
            }
        }, "json");
    }
}
function packageDetails(package_id)
{
    package_ids_new = package_ids.split(',');
    var cur_tab, new_tab;
    cur_tab = new_tab = package_id;
    for(i=1;i<package_ids_new.length;i++)
    {
        if(document.getElementById('package_'+package_ids_new[i]).className=='selected')
            cur_tab = package_ids_new[i];
    }
    if(cur_tab!=new_tab)
    {
        animatedcollapse.hide('package_details_'+cur_tab); 
        animatedcollapse.show('package_details_'+new_tab); 
        
        document.getElementById('package_'+cur_tab).className = '';
        document.getElementById('package_'+new_tab).className = 'selected';
    }
}
function checkPackage()
{
    var subscription_id = document.getElementsByName('subscription_id'),flag=false;
    for(i=0;i<subscription_id.length;i++)
    {
        if(subscription_id[i].checked)
            flag = true;
    }
    if(flag==false)
    {
        document.getElementById('error_message_middle').innerHTML = "Select any package to continue registration !.";
        animatedcollapse.show('error_message_middle');
        return false;
    }
}
function userSignUp()
{
    animatedcollapse.hide('error_message_middle');
    
    var payment_site = document.getElementsByName('payment_site'), payment_site_val;
    for(var i=0;i<payment_site.length;i++)
    {
        if(payment_site[i].checked)
            payment_site_val = payment_site[i].value;
    }
    
    if(trimSpaces(document.usersignup.user_fname.value)=='')
    {
        document.getElementById('error_message_middle').innerHTML = "Your First name is required !.";
        animatedcollapse.show('error_message_middle');
        document.usersignup.username.focus();
        return false;
    }
    else if(trimSpaces(document.usersignup.user_uname.value)=='')
    {
        document.getElementById('error_message_middle').innerHTML = "Log In Name is required !.";
        animatedcollapse.show('error_message_middle');
        document.usersignup.user_uname.focus();
        return false;
    }
    else if(trimSpaces(document.usersignup.user_pass.value)=='')
    {
        document.getElementById('error_message_middle').innerHTML = "Password is required !.";
        animatedcollapse.show('error_message_middle');
        document.usersignup.user_pass.focus();
        return false;
    }
    else if(trimSpaces(document.usersignup.user_pass.value)!=trimSpaces(document.usersignup.user_pass1.value))
    {
        document.getElementById('error_message_middle').innerHTML = "Password mismatch !.";
        animatedcollapse.show('error_message_middle');
        document.usersignup.user_pass.focus();
        return false;
    }
    else if(trimSpaces(document.usersignup.user_email.value)=='')
    {
        document.getElementById('error_message_middle').innerHTML = "Email is required !.";
        animatedcollapse.show('error_message_middle');
        document.usersignup.user_email.focus();
        return false;
    }
    else if(!checkEmail(document.usersignup.user_email.value))
    {
        document.usersignup.user_email.focus();
        return false;
    }
    else if(trimSpaces(document.usersignup.user_email.value)!=trimSpaces(document.usersignup.user_email1.value))
    {
        document.getElementById('error_message_middle').innerHTML = "Email mismatch !.";
        animatedcollapse.show('error_message_middle');
        document.usersignup.user_email.focus();
        return false;
    }
    else if(payment_site_val=='F' && trimSpaces(document.usersignup.card_number.value)=='')
    {
        document.getElementById('error_message_middle').innerHTML = "Card Number is required !.";
        animatedcollapse.show('error_message_middle');
        document.usersignup.card_number.focus();
        return false;
    }
    else if(payment_site_val=='F' && trimSpaces(document.usersignup.card_cvv.value)=='')
    {
        document.getElementById('error_message_middle').innerHTML = "Card CVV Code is required !.";
        animatedcollapse.show('error_message_middle');
        document.usersignup.card_cvv.focus();
        return false;
    }
    else if(payment_site_val=='F' && trimSpaces(document.usersignup.card_address.value)=='')
    {
        document.getElementById('error_message_middle').innerHTML = "Address is required !.";
        animatedcollapse.show('error_message_middle');
        document.usersignup.card_address.focus();
        return false;
    }
    else if(payment_site_val=='F' && trimSpaces(document.usersignup.card_city.value)=='')
    {
        document.getElementById('error_message_middle').innerHTML = "City is required !.";
        animatedcollapse.show('error_message_middle');
        document.usersignup.card_city.focus();
        return false;
    }
    else if(payment_site_val=='F' && trimSpaces(document.usersignup.card_state.value)=='')
    {
        document.getElementById('error_message_middle').innerHTML = "State is required !.";
        animatedcollapse.show('error_message_middle');
        document.usersignup.card_state.focus();
        return false;
    }
    else if(payment_site_val=='F' && trimSpaces(document.usersignup.card_zip.value)=='')
    {
        document.getElementById('error_message_middle').innerHTML = "Zip Code is required !.";
        animatedcollapse.show('error_message_middle');
        document.usersignup.card_zip.focus();
        return false;
    }
    else if(payment_site_val=='F' && trimSpaces(document.usersignup.card_country.value)=='')
    {
        document.getElementById('error_message_middle').innerHTML = "Country is required !.";
        animatedcollapse.show('error_message_middle');
        document.usersignup.card_country.focus();
        return false;
    }
    else if(!document.usersignup.user_terms.checked)
    {
        document.getElementById('error_message_middle').innerHTML = "Agree Terms & Conditions for registration !.";
        animatedcollapse.show('error_message_middle');
        document.usersignup.user_email.focus();
        return false;
    }
    else if(!document.usersignup.user_terms2.checked)
    {
        document.getElementById('error_message_middle').innerHTML = "Agree Payment Terms for registration !.";
        animatedcollapse.show('error_message_middle');
        document.usersignup.user_terms2.focus();
        return false;
    }
    else
    {
        JQuery.post(ajax_file, {
            task     : 'usersignup',
            username : trimSpaces(document.usersignup.user_uname.value),
            email    : trimSpaces(document.usersignup.user_email.value)
        },
        function(data)
        {
            if(data.result=='success')
            {
                if(payment_site_val=='F')
                {
                    JQuery.post(ajax_file, {
                        task        : 'creditcard',
                        card_type   : trimSpaces(document.usersignup.card_type.value),
                        card_month  : trimSpaces(document.usersignup.card_month.value),
                        card_year   : trimSpaces(document.usersignup.card_year.value),
                        card_number : trimSpaces(document.usersignup.card_number.value),
                        card_cvv    : trimSpaces(document.usersignup.card_cvv.value)
                    },
                    function(data)
                    {
                        if(data.result=='success')
                        {
                            document.usersignup.submit();
                        }
                        else
                        {
                            document.getElementById('error_message_middle').innerHTML = data.error;
                            animatedcollapse.show('error_message_middle'); 
                        }
                    }, "json");
                }
                else
                    document.usersignup.submit();
            }
            else
            {
                document.getElementById('error_message_middle').innerHTML = data.error;
                animatedcollapse.show('error_message_middle'); 
            }
        }, "json");        
    }
}
function myAccount()
{
    animatedcollapse.hide('error_message_middle');
    if(trimSpaces(document.myaccount.user_fname.value)=='')
    {
        document.getElementById('error_message_middle').innerHTML = "Your First name is required !.";
        animatedcollapse.show('error_message_middle');
        document.myaccount.username.focus();
        return false;
    }
    else if(trimSpaces(document.myaccount.user_uname.value)=='')
    {
        document.getElementById('error_message_middle').innerHTML = "Log In Name is required !.";
        animatedcollapse.show('error_message_middle');
        document.myaccount.user_uname.focus();
        return false;
    }
    else if(trimSpaces(document.myaccount.user_email.value)=='')
    {
        document.getElementById('error_message_middle').innerHTML = "Email is required !.";
        animatedcollapse.show('error_message_middle');
        document.myaccount.user_email.focus();
        return false;
    }
    else if(!checkEmail(document.myaccount.user_email.value))
    {
        document.myaccount.user_email.focus();
        return false;
    }
    else
    {
        JQuery.post(ajax_file, {
            task     : 'usersignup',
            username : trimSpaces(document.myaccount.user_uname.value),
            email    : trimSpaces(document.myaccount.user_email.value)
        },
        function(data)
        {
            if(data.result=='success')
                document.myaccount.submit();
            else
            {
                document.getElementById('error_message_middle').innerHTML = data.error;
                animatedcollapse.show('error_message_middle'); 
            }
        }, "json");        
    }
}
function changePassword()
{
    animatedcollapse.hide('error_message_middle');
    if(trimSpaces(document.changepassword.current_pass.value)=='')
    {
        document.getElementById('error_message_middle').innerHTML = "Current password is required !.";
        animatedcollapse.show('error_message_middle');
        document.changepassword.current_pass.focus();
        return false;
    }
    else if(trimSpaces(document.changepassword.new_pass.value)=='')
    {
        document.getElementById('error_message_middle').innerHTML = "New password is required !.";
        animatedcollapse.show('error_message_middle');
        document.changepassword.new_pass.focus();
        return false;
    }
    else if(trimSpaces(document.changepassword.new_pass.value)!=trimSpaces(document.changepassword.new_pass1.value))
    {
        document.getElementById('error_message_middle').innerHTML = "Password mismatch !.";
        animatedcollapse.show('error_message_middle');
        document.changepassword.new_pass.focus();
        return false;
    }
    else
    {
        JQuery.post(ajax_file, {
            task     : 'changepassword',
            password : trimSpaces(document.changepassword.current_pass.value)
        },
        function(data)
        {
            if(data.result=='success')
                document.changepassword.submit();
            else
            {
                document.getElementById('error_message_middle').innerHTML = data.error;
                animatedcollapse.show('error_message_middle'); 
            }
        }, "json");    
    }
}

function forgotPassword()
{
    if(trimSpaces(document.forgotpassword.user_email.value)=='')
    {
        document.getElementById('error_message_middle').innerHTML = "Email is required !.";
        animatedcollapse.show('error_message_middle');
        document.forgotpassword.user_email.focus();
        return false;
    }
    else if(!checkEmail(document.forgotpassword.user_email.value))
    {
        document.forgotpassword.user_email.focus();
        return false;
    }
    else
    {
        JQuery.post(ajax_file, {
            task     : 'forgotpassword',
            email    : trimSpaces(document.forgotpassword.user_email.value)
        },
        function(data)
        {
            if(data.result=='success')
                document.forgotpassword.submit();
            else
            {
                document.getElementById('error_message_middle').innerHTML = data.error;
                animatedcollapse.show('error_message_middle'); 
            }
        }, "json");        
    }
}
function authenticatorDetails(authenticator_id)
{
    authenticator_ids_new = authenticator_ids.split(',');
    var cur_tab, new_tab;
    cur_tab = new_tab = authenticator_id;
    for(i=1;i<authenticator_ids_new.length;i++)
    {
        if(document.getElementById('authenticator_'+authenticator_ids_new[i]).className=='selected')
            cur_tab = authenticator_ids_new[i];
    }
    if(cur_tab!=new_tab)
    {
        animatedcollapse.hide('authenticator_details_'+cur_tab); 
        animatedcollapse.show('authenticator_details_'+new_tab); 
        
        document.getElementById('authenticator_'+cur_tab).className = '';
        document.getElementById('authenticator_'+new_tab).className = 'selected';
    }
}
var auth_ids = 0;

function productPrice(auth_id)
{
    var auth_ids_new,i,cur_tab = '',new_tab = '',cur_tab_div = '', new_tab_div = '';
    
    tabs = auth_ids.split(',');
    for(i=1;i<tabs.length;i++)
    {
        if(document.getElementById('authenticator_'+tabs[i]) && document.getElementById('authenticator_'+tabs[i]).className=='selected')
        {
            cur_tab     = 'authenticator_'+tabs[i];
            cur_tab_div = 'authenticator_details_'+tabs[i];
        }
        if(tabs[i]==auth_id)
        {
            new_tab     = 'authenticator_'+tabs[i];
            new_tab_div = 'authenticator_details_'+tabs[i];
        }
    }
    
    if(cur_tab!=new_tab)
    {
        document.getElementById(cur_tab).className = '';
        document.getElementById(new_tab).className = 'selected';
        
        animatedcollapse.hide(cur_tab_div);
        animatedcollapse.show(new_tab_div);
    }    
}


function advancedSearch()
{
    var search  = '';
    
    if(trimSpaces(document.advanced_search_form.playername.value)=='')
        search = ' ';
    else
        search = trimSpaces(document.advanced_search_form.playername.value);
    search += '/' + trimSpaces(document.advanced_search_form.category.value);
    search += '/' + trimSpaces(document.advanced_search_form.grader.value);
    search += '/' + trimSpaces(document.advanced_search_form.type.value);
    search += '/' + trimSpaces(document.advanced_search_form.grade1.value) + '-' + trimSpaces(document.advanced_search_form.grade2.value);
    
    window.location = advanced_search_root + search;
}

function checkPackageSubscription()
{
    var flag                    = true;
    var subscription_id         = document.getElementsByName('subscription_id');
    var user_option             = document.getElementsByName('user_option');
    var payment_site            = document.getElementsByName('payment_site');
    
    var new_subscription_id     = 0;
    var new_user_option         = '';
    var new_payment_site        = '';
    var current_subscription_id = document.getElementById('current_subscription_id').value;
    var current_user_option     = document.getElementById('current_user_option').value;
    var current_payment_site    = document.getElementById('current_payment_site').value;
    
    
    for(i=0;i<subscription_id.length;i++)
    {
        if(subscription_id[i].checked)
            new_subscription_id = subscription_id[i].value;
    }
    for(i=0;i<user_option.length;i++)
    {
        if(user_option[i].checked)
            new_user_option = user_option[i].value;
    }
    for(i=0;i<payment_site.length;i++)
    {
        if(payment_site[i].checked)
            new_payment_site = payment_site[i].value;
    }
    
    if(new_subscription_id!=current_subscription_id)
        flag = window.confirm("Do you really want to change the plan ?");
    else if(new_user_option!=current_user_option)
        flag = window.confirm("Do you really want to change the payment option ?");
    else if(new_payment_site!=current_payment_site)
        flag = window.confirm("Do you really want to change the payment gateway ?");
    
    if(flag && new_payment_site=='F')
    {
        if(trimSpaces(document.usersubscription.card_number.value)=='')
        {
            document.getElementById('error_message_middle').innerHTML = "Card Number is required !.";
            animatedcollapse.show('error_message_middle');
            document.usersubscription.card_number.focus();
            return false;
        }
        else if(trimSpaces(document.usersubscription.card_cvv.value)=='')
        {
            document.getElementById('error_message_middle').innerHTML = "Card CVV Code is required !.";
            animatedcollapse.show('error_message_middle');
            document.usersubscription.card_cvv.focus();
            return false;
        }
        else if(trimSpaces(document.usersubscription.card_address.value)=='')
        {
            document.getElementById('error_message_middle').innerHTML = "Address Code is required !.";
            animatedcollapse.show('error_message_middle');
            document.usersubscription.card_address.focus();
            return false;
        }
        else if(trimSpaces(document.usersubscription.card_city.value)=='')
        {
            document.getElementById('error_message_middle').innerHTML = "City Code is required !.";
            animatedcollapse.show('error_message_middle');
            document.usersubscription.card_city.focus();
            return false;
        }
        else if(trimSpaces(document.usersubscription.card_state.value)=='')
        {
            document.getElementById('error_message_middle').innerHTML = "State Code is required !.";
            animatedcollapse.show('error_message_middle');
            document.usersubscription.card_state.focus();
            return false;
        }
        else if(trimSpaces(document.usersubscription.card_zip.value)=='')
        {
            document.getElementById('error_message_middle').innerHTML = "Zip is required !.";
            animatedcollapse.show('error_message_middle');
            document.usersubscription.card_zip.focus();
            return false;
        }
        else if(trimSpaces(document.usersubscription.card_country.value)=='')
        {
            document.getElementById('error_message_middle').innerHTML = "Country is required !.";
            animatedcollapse.show('error_message_middle');
            document.usersubscription.card_country.focus();
            return false;
        }
            
        else
        {
            JQuery.post(ajax_file, {
                task        : 'creditcard',
                card_type   : trimSpaces(document.usersubscription.card_type.value),
                card_month  : trimSpaces(document.usersubscription.card_month.value),
                card_year   : trimSpaces(document.usersubscription.card_year.value),
                card_number : trimSpaces(document.usersubscription.card_number.value),
                card_cvv    : trimSpaces(document.usersubscription.card_cvv.value)
            },
            function(data)
            {
                if(data.result=='success')
                    document.usersubscription.submit();
                else
                {
                    document.getElementById('error_message_middle').innerHTML = data.error;
                    animatedcollapse.show('error_message_middle'); 
                }
            }, "json");
        }
    }
    else if(flag)
        document.usersubscription.submit();
}

function checkPayment()
{    
    var payment_site = document.getElementsByName('payment_site'), payment_site_val;
    for(var i=0;i<payment_site.length;i++)
    {
        if(payment_site[i].checked)
            payment_site_val = payment_site[i].value;
    }
    if(payment_site_val=='P')
        animatedcollapse.hide('payment_div');
    else
        animatedcollapse.show('payment_div');
}
