/**
* @author chris
*/
var scriptsLoaded = false;
$(document).ready(function() {
$.support.cors = true;
$("#captchaImageDiv").load("/captchashow.cfm");
$("#reloadLink").click(function(e) {
$("#captchaImageDiv").load("/captchashow.cfm?new=" + Math.random());
e.preventDefault();
});
$.fn.serializeObject = function(){
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
/* new animation (for homepage) */
$.fn.fadeToggle = function(speed, easing, callback) {
return this.animate({opacity: 'toggle'}, speed, easing, callback);
};
$('#googleSearch').focus(function() {
this.value = '';
});
$('#googleSearch').blur(function() {
if (this.value == '') this.value = (this.defaultValue ? this.defaultValue : '');
});
$('#googleSearch').bind('keypress', function(e) {
if(e.keyCode==13){
var datastring = $("#cse-search-box").serialize();
$.ajax({
type:"post",
url: '/services/rfactor.cfc?method=saveSearch',
data: datastring,
success: function(data) {}
});
}
});
/* homepage featured mods tabs */
if(jQuery().tabs) {
$("#featured").tabs({fx:{opacity: "toggle"}});
}
$(".ui-tabs-nav-item").hover(
function(){
$(this).find("div.slideLabelA").slideToggle("fast");
$(this).find("div.slideLabelB").toggle();
$(this).find("div.slideLabelC").toggle();
},
function(){
$(this).find("div.slideLabelA").slideToggle("fast");
$(this).find("div.slideLabelB").toggle();
$(this).find("div.slideLabelC").toggle();
});
/* homepage news/videos/preferences tabs */
if(jQuery().tabs) {
$( "#homepage_tabs" ).tabs({ fx: { opacity: 'toggle' } });
}
/* new method for validation */
$.validator.addMethod("checkObscene",function(value,element){
var pattern = /fuck|bitch|penis|slut|whore|nigger|nigga|shit|asshole|chink|gook/gi;
var thisReturn = value.match(pattern);
if (value != ""){
if (thisReturn != null){
return false;
}else{
return true;
}
}else{
return true;
}
});
/* new method for validation */
$.validator.addMethod("AsciiNoSpace",function(value,element){
var pattern = /^[a-z0-9]+$/i;
var thisReturn = value.match(pattern);
if (value != "") {
if (thisReturn != null) {
return true;
}
else {
return false;
}
}else{
return true;
}
});
$.validator.addMethod("AsciiSpace",function(value,element){
var pattern = /^[ a-z0-9]+$/i;
var thisReturn = value.match(pattern);
if (value != "") {
if (thisReturn != null) {
return true;
}
else {
return false;
}
}else{
return true;
}
});
$.validator.addMethod("checkRFC",function(value,element){
var pattern = /rfc/gi;
var thisReturn = value.match(pattern);
if (thisReturn != null){
return false;
}else{
return true;
}
});
$.validator.addMethod("passwordUsername",function(value,element){
var pword = $('#pwordRegister').val();
var uname = $('#username').val();
if (pword == uname){
return false;
}else{
return true;
}
});
$.validator.addMethod("defaultEmail",function(value,element){
var email = $('#gameTeaserEmail').val();
if (email == 'Your E-Mail Address'){
return false;
}else{
return true;
}
});
/* $.validator.addMethod("emailSpamming",function(value,element){
var defvalue = $('#emailRegistration').val();
var datastring = 'actionofemail=' + defvalue;
$.ajax({
type:"post",
url: '/services/rfactorsecurity.cfc?method=spamemailcheck',
data: datastring,
success: function(data) {
if(data == 'true') {
return true;
}else {
return false;
}
}
});
});*/
/* for skin upload file size limitation to 15mb from 5mb */
$.validator.addMethod("fileSize",function(value,element){
var fileInput = $("#skinfile")[0];
var fileSize = fileInput.files[0].fileSize; /* Size returned in bytes. */
if (fileSize > 15360000){
return false;
}else{
return true;
}
});
$("#signinButton").click(function(){
$('#loginBox').fadeToggle('fast');
$('#forgotBox').hide();
var chevron = $("#chevronImage").attr('src');
var chevron_down = chevron.search("chevron_down");
if (chevron_down != -1){
$("#chevronImage").attr('src','/images/chevron_up.png');
}else{
$("#chevronImage").attr('src','/images/chevron_down.png');
}
});
$(".forgotLink").click(function(){
$("#email").val('');
$("#remindNotify").html('').removeClass('errormsg').removeClass('remindersuccessmsg');
$('#loginBox').fadeToggle('fast');
$('#forgotBox').show();
});
$("#logoutButton").click(function(){
$("#email").val('');
jAlert('success', 'See you soon!!', 'Logout successful', function(){window.location="/logout.cfm"});
});
/* Forgot login */
$("#remindMeForm").validate({
rules: {
email: {required:true, email:true}
},
messages:{
email:""
},
submitHandler: function(form){
var datastring = $(form).serialize();
$('#remindMe').ajaxStart(function() {
$("#remindNotify").removeClass('errormsg').html('
');
});
$('#remindMe').ajaxStop(function() {
/* $("#remindNotify").html(''); */
});
$.ajax({
type:"post",
url: '/services/rfactor.cfc?method=remindme',
data: datastring,
success: function(data) {
var obj = $.parseJSON(data);
var success = obj.SUCCESS;
if (success){
$("#remindNotify").removeClass('errormsg').addClass('remindersuccessmsg').html('An email has been sent to you');
setTimeout(function(){ $("#forgotBox").fadeOut() }, 2000);
}else{
$("#remindNotify").removeClass('remindersuccessmsg').addClass('errormsg').html('Your email address was not found');
}
}
});
}
});
/* Login validation */
$("#loginForm").validate({
rules: {
uname: {required:true},
pword: {required:true}
},
messages:{
uname:"",
pword:""
},
submitHandler: function(form) {
var datastring = $(form).serialize();
$.ajax({
type:"post",
url: '/services/rfactor.cfc?method=loginUser',
data: datastring,
dataType: 'json',
success: function(data) {
if (data.login == 'true'){
$("#ajaxNotify").removeClass('errormsg').html('');
jAlert('success', 'Welcome Back!', 'Login Successful', function(){window.location.reload()});
}else{
$("#ajaxNotify").addClass('errormsg').html('Try again');
}
}
});
}
});
/* Login validation */
$("#authenticateForm").validate({
rules: {
uname: {required:true},
pword: {required:true},
botcheck:{required:true, equalTo: "#botcode"}
},
messages:{
uname:{required:"Username is required"},
pword:{required:"Password is required"},
botcheck:{required:"Please enter the security code",
equalTo:"You code doesn't match"}
},
submitHandler: function(form) {
var datastring = $(form).serialize();
var dataObj = $(form).serializeObject();
$('#loginSubmit').ajaxStart(function() {
$("#ajaxNotify").html('
Checking....');
});
$('#loginSubmit').ajaxStop(function() {
$("#ajaxNotify").html('');
});
$.ajax({
type:"post",
url: '/services/rfactor.cfc?method=loginUser',
data: datastring,
dataType: 'json',
success: function(data) {
var relocate = "";
if (data.referer == "" || data.referer == "undefined" || data.referer == "https://www.rfactorcentral.com/login.cfm" || data.referer == "http://dev.rfactorcentral.com/login.cfm"){
relocate = "/index.cfm";
}else{
relocate = referer;
}
if (data.login == 'true'){
jAlert('success', 'Welcome Back!', 'Login Successful', function(){window.location = relocate});
}else{
jAlert('error', 'Try again', 'Login unsuccessful');
}
}
});
}
});
/* Registration validation */
$("#register").validate({
onkeyup: false,
rules: {
membership:{required:true},
firstname: {required:true, minlength:3, checkObscene:true,AsciiNoSpace:true},
lastname: {required:true, minlength:3, checkObscene:true,AsciiNoSpace:true},
emailRegistration: {required:true,email:true,
remote:{
url: "/services/rfactorsecurity.cfc?method=checkEmailDupe",
type: "post",
data: {
email: function() {
return $("#emailRegistration").val();
}
}
}
},
pwordRegister: {required:true, minlength:6, passwordUsername:true},
pwordconfirm: {required:true, minlength:6, passwordUsername:true,equalTo: "#pwordRegister"},
racecast: {required:true,checkObscene:true,AsciiNoSpace:true,
minlength:4,
remote:{
url: "/services/rfactorsecurity.cfc?method=checkRaceCastDupe",
type: "post",
data: {
racecast: function() {
return $("#racecast").val();
}
}
}
},
botcheck:{required:true},
zeroAbuse:{required:true},
username: {
required: true,
checkObscene:true,
AsciiNoSpace:true,
passwordUsername:true,
checkRFC:true,
minlength:4,
remote: {
url: "/services/rfactorsecurity.cfc?method=checkUsernameDupe",
type: "post",
data: {
username: function() {
return $("#username").val();
}
}
}
}
},
messages: {
firstname: {required:"Required",
minlength:"3 characters minimum",
checkObscene:"Please refrain from foul language",
AsciiNoSpace:"Only alphanumeric characters"},
lastname: {required:"Required",minlength:"3 characters minimum",checkObscene:"Please refrain from foul language",AsciiNoSpace:"Only alphanumeric characters"},
emailRegistration: {
required: "Email address required",
email: "Valid email required",
remote: "Duplicate email address",
AsciiNoSpace:"Only alphanumeric characters"
},
username: {required:"Required", minlength:"4 characters minimum",remote:"This username has been taken",checkObscene:"Please refrain from foul language",passwordUsername: "Please make your username and password different",checkRFC:"Please do not use RFC",AsciiNoSpace:"Only alphanumeric characters"},
pwordRegister: {required:"Required", minlength:"6 characters minimum",passwordUsername: "Please make your username and password different"},
pwordconfirm: {required:"Required", minlength:"6 characters minimum",passwordUsername: "Please make your username and password different",equalTo:"Passwords do not match"},
botcheck: {required:"Please enter the security code"},
zeroAbuse:{required:"Required"},
membership:{required:"Please choose a membership tier"},
racecast: {required:"Required",minlength:"4 characters minimum",remote:"This player name has been taken",checkObscene:"Please refrain from foul language",AsciiNoSpace:"Only alphanumeric characters"}
},
submitHandler: function(form) {
var datastring = $(form).serialize();
var membershipChoice = $("[name='membership']:checked").val();
$.ajax({
type:"post",
url: '/services/rfactor.cfc?method=registerUser',
data: datastring,
dataType:'json',
success: function(data) {
var obj = $.trim(data);
var valid = obj.valid;
var rfcid = obj.rfcid;
var email = obj.email;
var racecast = obj.racecast;
var message = obj.Message;
if (data.valid == "registered" && membershipChoice == "1") {
jAlert('success', 'Thank you for registering!\n\nYou\'ll be taken to your profile page now!\n', 'Registration Successful', function(){window.location = "/profile"});
}else if (data.valid == "registered" && membershipChoice == "2a"){
$("[name='os1']").val(obj.rfcid);
$("[name='os2']").val(obj.email);
$("[name='os3']").val(obj.racecast);
$("#os0 option[value=Monthly]").attr("selected", "selected");
jAlert('success', 'Thank you for registering!\n\nYou\'ll be taken to PayPal.\n', 'Registration Successful', function(){$('#registerAndPayPal').submit();});
}else if (data.valid == "registered" && membershipChoice == "2b"){
$("[name='os1']").val(obj.rfcid);
$("[name='os2']").val(obj.email);
$("[name='os3']").val(obj.racecast);
$("#os0 option[value=Yearly]").attr("selected", "selected");
jAlert('success', 'Thank you for registering!\n\nYou\'ll be taken to PayPal.\n', 'Registration Successful', function(){$('#registerAndPayPal').submit();});
} else if (data.valid == "false"){
jAlert('warning', message,'Registration unsuccessful');
}else{
jAlert('error', 'There was an error with your submission. Please try again.', 'Registration unsuccessful');
}
}
});
},
errorPlacement: function(error, element){
if (element.attr("name") == "zeroAbuse") {
error.appendTo("#abuseError");
}
if (element.attr("name") == "firstname") {
error.appendTo("#firstnameError");
}
if (element.attr("name") == "lastname") {
error.appendTo("#lastnameError");
}
if (element.attr("name") == "emailRegistration") {
error.appendTo("#emailError");
}
if (element.attr("name") == "username") {
error.appendTo("#unameResult");
}
if (element.attr("name") == "pwordRegister") {
error.appendTo("#pwordError");
}
if (element.attr("name") == "pwordconfirm") {
error.appendTo("#pwordConfirmError");
}
if (element.attr("name") == "racecast") {
error.appendTo("#racecastError");
}
if (element.attr("name") == "botcheck") {
error.appendTo("#botcheckError");
}
if (element.attr("name") == "membership") {
error.appendTo("#membershipError");
}
}
});
/* Track # of clicks on the DOWNLOAD CLIENT button in the footer */
$(".clientDownload").click(function(event){
$.post('/services/rfactor.cfc?method=updateClientDownload', function(data){});
});
/* Profile validation */
$("#profileEdit").validate({
rules: {
firstname: {required:true,minlength:3},
lastname: {required:true,minlength:3},
email:{required:true, email:true},
pword: {required:true, minlength:6, maxlength:15}
},
messages:{
firstname:{required:"First Name is required"},
lastname:{required:"Last Name is required"},
email:{required:"Email address is required",email:"A valid email address is required"},
pword:{required:"Password is required", minlength:"6 characters minimum", maxlength:"15 characters maximum"}
},
submitHandler: function(form) {
form.submit();
}
});
/* Contact validation */
$("#contactForm").validate({
rules: {
name: {required:true},
email: {required:true,email:true},
botcheck:{required:true, equalTo: "#botcode"},
subject:{required:true},
message:{required:true}
},
messages:{
name:{required:"Your name is required"},
email:{required:"Your email is required",email:"Valid email required"},
botcheck:{required:"Please enter the security code",equalTo:"You code doesn't match"},
subject:{required:"Please pick a subject matter"},
message:{required:"Please enter a message"}
},
submitHandler: function(form) {
form.submit();
}
});
/* slide description of mod on detail page */
$("#descHeader").click(function(){
$("#slideThis").slideToggle("slow");
});
$('a[rel*=lightbox]').lightBox({
imageLoading: '/images/lightbox-ico-loading.gif',
imageBtnClose: '/images/lightbox-btn-close-black.gif',
imageBtnPrev: '/images/lightbox-btn-prev.gif',
imageBtnNext: '/images/lightbox-btn-next.gif',
containerResizeSpeed: 350
});
/* Plaeholder for input fields
example: http://www.perfectline.co.uk/blog/change-input-field-placeholder-with-jquery */
$('.placeholder').each(function(i) {
var item = $(this);
var text = item.attr('rel');
var form = item.parents('form:first');
if (item.val() === ''){
item.val(text);
item.css('color', '#888');
}
item.bind('focus.placeholder', function(event) {
if (item.val() === text)
item.val('');
item.css('color', '');
});
item.bind('blur.placeholder', function(event) {
if (item.val() === '')
item.val(text);
item.css('color', '#888');
});
form.bind("submit.placeholder", function(event) {
if (item.val() === text)
item.val("");
});
});
/* validation for more buttons link */
$("#buttonlogin").click(function() {
location.href = '/login.cfm';
});
/* select 2 */
if(jQuery().niceSelect) {
$("#otherlogins").niceSelect();
$(document).on("change",".socialselection",function() {
var e = $(this);
var mode = $('div.nice-select.socialselection span.current').text();
if(e.val() == '') {
jAlert('warning', 'Please Choose the Service which you want to use for Login', 'Oops');
} else {
WinOpen('captcha.cfm?mode='+ mode,'page');
$("#otherlogins").val('Other Social Sites Login');
$('div.nice-select.socialselection span.current').text('Other Social Sites Login');
$('div.nice-select.socialselection').find('li:first, li.selected').toggleClass('selected');
}
});
}
/* form validation for rfactor2 pre-release */
$("#rFactor2PreRelease").validate({
rules: {
gameTeaserEmail: {required:true, email:true, defaultEmail:true}
},
messages:{
gameTeaserEmail:{required:"Email Address is required",
email: "A valid Email Address is required",
defaultEmail: "A valid Email Address is required"}
},
errorPlacement: function(error, element){
if (element.attr("name") == "gameTeaserEmail") {
error.appendTo("#rf2TeaserEmailError");
}
},
submitHandler: function(form) {
var datastring = $(form).serialize();
$.ajax({
type:"post",
url: '/services/rfactor.cfc?method=capturePreRelease',
data: datastring,
success: function(data) {
var obj = $.parseJSON(data);
if (obj.SUCCESS){
$("