I spent the whole morning struggling with GoDaddy’s payment page. I bought my domain name from GoDaddy. All of my friends suggest it. Maybe because it’s DNS service is stable? Or just all others sucks more? But one thing I have to say is that the website of GoDaddy is really very very bad. It’s very complicated and full of advertisements. You’ll be interrupted several times by advertising pages during the process of purchasing. And the DNS management panel is so powerful that I have to spend at least 5 minutes to find out where is the link to the page for adding new DNS entry.

And that’s not the whole story. I’m feeling even more frustrated when I decide to renew my domain name. Finally when I was in the last step filled the forms for my payment card and clicked submit, I got an error saying that I should fill the “name” field.

I definitely filled that field. I tried to fill in only the first name and only the last name, but still get the same error. I noticed that the verification is done through javascript. Maybe there’s some bug in the code that isn’t compatible with Firefox, I thought. So I tried Chrome and Internet Explorer. But got the same error.

Then I open Firefox again (when I open a new browser with GoDaddy homepage, I can not find a link to something like shopping basket. So I had to repeat the steps for renewing. And at the last step, GoDaddy finally noticed that I was renewing the same domain and gave me a link to my final payment). This time I opened firebug and search for the error message in the javascript files (many of them). Then I found that the error message was set as a customized attribute of the textfield — Ah! They put data separate to code, good programming practice!

After some more research, I finally found the function validate(). I couldn’t hesitate to evaluate the following code in the firebug console:

validate = function() { return true; }

And finally I successfully submitted my form. But I was still curious about the validating code the use. So I looked at the code snippet they used to validate this field:

frm.bl_cc_name.value = Trim(frm.bl_cc_name.value); tmpErrDisplay = "bl_cc_name_err"; toggleHideViewByName(tmpErrDisplay); if (frm.bl_cc_name.value.length==0) { if (btype) { writeToPageV2(divErrorList, frm.bl_cc_name, tmpErrDisplay, true) } else addErrMessage("Please Enter in the name on the Credit Card");   b_OK = false; } if (hasNumber(removeSpaces(frm.bl_cc_name.value))) { if (btype) { writeToPageV2(divErrorList, frm.bl_cc_name, tmpErrDisplay, true) } else addErrMessage("Please Enter in the name on the Credit Card");   b_OK = false; }

The programmer is very clever. He noticed that no one use number for his name. So he think if someone typed some number in that field, the error message Please Enter in the name on the Credit Card should be displayed. Cool! The problem is: the card I’m using is the one from Google with payment of Google Summer of Code 2008. They set the name to be ID GSOC 2008 STUDENT so both the first name and the last name contains numbers.

That’s what wasted my whole morning. The web page was loading very slowly. And even firebug bugs me: the searching is not convenient to use; it only load parts of the scripts sometimes; and I can not copy the code out from the firebug pane. Maybe my RP should really be elevated.