Hi guys,
I have a slight problem, I’ve been coding a simply little site for a downhill mountain bike race im holding. Unfortunately I cant get any of the functionality to work in any browser but safari…Stupidly I used apple dashcode (apple dashboard widget editor) to help me code the javascript as it is pretty much designed for css, javascript and html. But as its built for safari, im guessing the problem has something to with cross-browser compatibility and the way the different browsers handle the DOM. (My fault for using it I know )
Unfortunately thats as far as my theory on whats wrong goes, so I’m hoping that anyone might be able to help. Sorry for the long post, and please excuse the code, its the first proper bit of javascript i’ve done lol.
Thanks in advance.
Legion.
code:
//--Variables for Fields--//
var F_name, S_name, Email, Age, p_Code;
//--Validating warning Fields--//
var NwarningTxt1 = "Thats your first Name, I dont think so bub!";
var NwarningTxt2 = "pshhh......yeh whatever..";
var EwarningTxt = "Not a valid Email address numnuts";
var AwarningTxt = "Hahaha, what ever!?! That cant be your age ..do it Again!";
var PwarningTxt = "Not a valid postcode..";
var BwarningTxt = "Sorry dude, no funny symbols in the bike name please!";
//--Bike awesome Messages--// yet to be implemented//
var BcongratsTxt = "Dude! nice bike!";
//--Regular Expressions for validating fields--//
var Aexp = /^[a-z]+$/i;
var AregExp = /^[0-4]+[0-8]$/;
var EregExp = /^[\w\-\.\+]+\@[a-z0-9\.\-]+\.[a-z0-9]{2,4}$/i;
var PregExp = /^[A-Z]{1,2}+[0-9A-Z]{1,2}[0-9]{1}+[A-Z]{2}$/;
var BregExp = /^[\@\+\.\&\^\%\$\\\(\)\*\+\_]$/i;
//--Element creation and check variables--//
var SCL;
var NoLCheck = false;
var check = false;
//--Functions--// Note: Alerts are for debug only! //
function SubmitDetails()
{
F_name = document.RegForm.FirstN.value;
S_name = document.RegForm.SecondN.value;
Email = document.RegForm.Email.value;
Age = document.RegForm.AGE.value;
p_Code = document.RegForm.POSTCODE.value;
g_Machine = document.RegForm.BIKE.value;
//Assigns the values entered in the fields.
var PCL = document.getElementById("Clayer");
do
{
validationP_FunctionModule(F_name, S_name);
}while(check = false)
ArrayData(PCL, F_name, S_name, Email, Age, p_Code, g_Machine);
}
function validationP_FunctionModule(Va1,Va2)
{
if (Va1.match(Aexp))
{
//alert("Va1 matches");
if (Va2.match(Aexp))
{
//alert("Va2 matches");
RemoveAlerts();
validationCheckE(Email);
}else{
popupAlert("Va2", NwarningTxt2);
}
}else{
popupAlert("Va1", NwarningTxt1);
}
}
function validationCheckE(EmF)
{
if (EmF.match(EregExp))
{
//alert("Suitable Email");
RemoveAlerts();
validationCheckA(Age);
}else{
//alert("Email invalid format");
popupAlert("EmF", EwarningTxt);
}
}
function validationCheckA(AgeF)
{
if (AgeF.match(AregExp))
{
//alert("age accepted");
RemoveAlerts();
validationCheckP(p_Code);
}else{
//alert("age denied!");
popupAlert("AgeF", AwarningTxt);
}
}
function validationCheckP(PostCF)
{
if (PostCF.match(PregExp))
{
//alert("post code accepted");
RemoveAlerts();
validationCheckBike(g_Machine);
}else{
//alert("Post code not accepted");
popupAlert("PostCF", PwarningTxt);
}
}
function validationCheckBike(type)
{
if(type.match(BregExp))
{
//alert("bike name contains unwanted character");
popupAlert("Type", BwarningTxt);
}else{
//alert("bike name suitable")
RemoveAlerts();
// put in nice bike +name of bike that matches list of manufactors+ popup box//
check = true;
return check;
}
}
function popupAlert(Field, txt)
{
switch(Field)
{
case "Va1":
MoveErrorBox("89px");
break
case "Va2":
MoveErrorBox("116px");
break
case "EmF":
MoveErrorBox("143px");
break
case "AgeF":
MoveErrorBox("207px");
break
case "PostCF":
MoveErrorBox("234px");
break
case "Type":
MoveErrorBox("262px");
default:
document.getElementById("ErrBox").style.display="none";
}
PUA = document.getElementById("PUAbox");
PUA.innerHTML = txt;
document.getElementById("PUAbox").style.display="block";
}
function MoveErrorBox(position)
{
document.getElementById("ErrBox").style.top= position;
document.getElementById("PUAbox").style.top= position;
document.getElementById("ErrBox").style.display="block";
}
function RemoveAlerts()
{
document.getElementById("PUAbox").style.display="none";
document.getElementById("ErrBox").style.display="none";
}
function ArrayData(elem2, var1, var2, var3, var4, var5, var6)
{
var arrayN = new Array(var1, var2, var3, var4, var5, var6); //(0, 1, 2, 3, 4, 5)//
SCL = document.createElement("div");
elem2.appendChild(SCL);
SCL.innerHTML = arrayN[0]+" "+arrayN[1]+" "+arrayN[5];
// var nl = elem.getElementsByTagName("Div");
// alert(nl.length);
}
function CountLayers() //call from when user press register for race button(just before 'RegsiterPOPUP' Appears). Saves complicafting things.
{
var PCL2 = document.getElementById("Clayer");
var Nlayers = PCL2.getElementsByTagName("Div");
alert(Nlayers.length);
if (Nlayers.length == 21)
{
//alert("max number of victims regsitered");
NoLCheck = true;
return NoLCheck;
}else{
NoLCheck = false;
return NoLCheck;
}
}
function PullIt_Together()
{
// var RegLayer = document.getElementById("RegisterPOPUP");
// var MaxVic = document.getElementById("MaxVictims");
// CountLayers();
// if(NoLCheck = False)
// {
document.getElementById("RegisterPOPUP").style.display = "block";
// }else{
// MaxVic.innerHTML = "Sorry dude, Max number of victims has been reached. Try again next time";
// MaxVic.style.display = "block";
}
var futureDate = new Date(2007, 6, 17, 18, 44, 30);
function Countdown()
{
CurrentDate = new Date();
timeleft = futureDate.getTime() - CurrentDate.getTime();
delete CurrentDate;
if(timeleft < 0)
{
document.getElementById("RaceNow").style.display="block";
}else{
var days = 0;
var hours = 0;
var mins= 0;
var secs = 0;
var out="";
timeleft = Math.floor(timeleft/1000);
days = Math.floor(timeleft/86400);
timeleft = timeleft%86400;
hours = Math.floor(timeleft/3600);
timeleft = timeleft%3600;
mins = Math.floor(timeleft/60);
timeleft = timeleft%60;
secs = Math.floor(timeleft);
if(days != 0)
{
out += days +" day"+((days!=1)?"s":"")+", ";
}
if(days != 0 || hours != 0)
{
out += hours +" hour"+((hours!=1)?"s":"")+", ";
}
if(days != 0 || hours != 0 || mins != 0)
{
out += mins +" minute"+((mins!=1)?"s":"")+", ";
}
out += secs +" seconds";
document.getElementById("TimerCont").innerHTML = out;
setTimeout("Countdown()", 1000);
}
}