var oldvalue='';
var oldcaretpos='';
function dodashes(id)
{
	var object=document.getElementById(id);
	var caretPos=getCaretPosition(object);
	var str=object.value;
	var tmpCaretPos=caretPos;
	for(i=0;i<tmpCaretPos;i++)
	{
		
		if(str.substr(i,1)=='-')
		{
			caretPos--;
		}
	}
	str=str.replace(/\-/g,'');
	var newstr='';
	var j=0;
	var k=0;
	tmpCaretPos=caretPos;
	for(i=0;i<str.length;i++)
	{
		j=i % 5;
		if(j==0 && i>0)
		{
			newstr=newstr+'-';
			if(i<tmpCaretPos) caretPos++;			
		}
		newstr=newstr+str.substr(i,1);
	}
	if(oldvalue.length<newstr.length && newstr[caretPos-1]=='-') caretPos++;
	else if(oldvalue.length>newstr.length && newstr[caretPos-1]=='-') caretPos--;
	else if(oldcaretpos<=caretPos && (caretPos+1) % 6==0)	caretPos++;
	oldvalue=newstr;
	oldcaretpos=caretPos;
	object.value=newstr;
	setCaretPosition(id, caretPos)
}

function setCaretPosition(elemId, caretPos) {
    var elem = document.getElementById(elemId);

    if(elem != null) {
        if(elem.createTextRange) {
            var range = elem.createTextRange();
            range.move('character', caretPos);
            range.select();
        }
        else {
            if(elem.selectionStart) {
                elem.focus();
                elem.setSelectionRange(caretPos, caretPos);
            }
            else
                elem.focus();
        }
    }
}

function getCaretPosition(TxtObj) {
var pos = 0;
if (TxtObj.createTextRange) {
rg = document.selection.createRange().duplicate();
rg.moveStart('textedit',-1);
pos = rg.text.length;
} else if (TxtObj.setSelectionRange) {
pos = TxtObj.selectionEnd;
}
return pos;
}



function showBox(oObj) // Show message balloon
{
    var pos=findPos(oObj);

    var messages = new Array;
    messages['suusername']  = "Please enter your desired username.<div id=\"ajaxbox\"></div>";
    messages['supassword']  = "Choose your password.<div id=\"box\"></div>";
    messages['passwdcf']    = "Please retype your password to make sure you typed is correctly above. <div id=\"box\"></div>";
    messages['name']        = "Your full name.<div id=\"box\"></div>";
    messages['email']       = "Enter your email address.<div id=\"box\"></div>";

    messages['pmpp']        = "Payment by PayPal.";
    messages['pmwp']        = "Payment by by Credit or Debit card.";
    messages['pmpf']        = "Payment by your mobile phone via PayForIt the quick and easy payment service, supported by all licenced UK mobile operators.";

    messages['annual']      = "Get a 12 months access for just &#163;20.00 when you sign up for our annual membership.<br /><br />Note: Only available for PayPal and Card payments.";
    messages['annualmo']    = "We regret this is only available for PayPal and card payments.";

    messages['ig_username'] = "Enter the User Name you gave when you signed up<br /><br />Mobile Subscribers, enter your mobile number";
    messages['ig_password'] = "Enter your password<br /><br />Mobile Subscribers leave this blank.";

    if(pos != false)
    {
        oMsg = document.getElementById('msgbox');

        var offsetx = oObj.type=='radio' || oObj.type=='checkbox' ? 13 : (oObj.className.indexOf('checkboxparent')>=0 ? 20 : 103);
        var offsety = oObj.type=='radio' || oObj.type=='checkbox' ? -2 : (oObj.className.indexOf('checkboxparent')>=0 ? -2 :   3);

        oMsg.style.left    = (pos[0] + offsetx) + "px";
        oMsg.style.top     = (pos[1] + offsety) + "px";

        oMsg.style.display    = "block";
        oMsg.style.visibility = "visible";

        var oObjid = oObj.id;
        if(oObjid.substr(0, 11) == 'ig_username') oObjid = 'ig_username';
        if(oObjid.substr(0, 11) == 'ig_password') oObjid = 'ig_password';

        document.getElementById('msgboxcontent').innerHTML = messages[oObjid];
    }
}


function hideBox(oObj) // Show message balloon
{
    oMsg = document.getElementById('msgbox');
    oMsg.style.left = "-1000px";
    oMsg.style.top  = "-1000px";

    oMsg.style.display    = "none";
    oMsg.style.visibility = "hidden";

    document.getElementById('msgboxcontent').innerHTML = '';
}

function getElementsByClass(theClass,node)
{
    var classElements = [];
    var i;
    if ( node == null )
    {
        node = document
    }

    if (node.getElementsByClassName)
    {
        var tempCollection = node.getElementsByClassName(theClass);
        for (i = 0; i < tempCollection.length ; i++)
        {
            classElements.push(tempCollection[i])
        }
    }
    else
    {
        var els = node.getElementsByTagName("*");
        var elsLen = els.length;
        var pattern = new RegExp("(^|\\s)"+theClass+"(\\s|$)");
        for (i = 0; i < elsLen; i++)
        {
            if ( pattern.test(els[i].className) )
            {
                classElements.push(els[i]);
            }
        }
    }
    return classElements;
};

function validateField(oObj, doValidateForm)
{
    var fieldId = oObj.id;
    var formId = oObj.form.id;

    var messages = '';

    switch(fieldId)
    {
        case 'suusername':
            if(oObj.readOnly != true)
            {
                if(oObj.previousValue && oObj.previousValue == oObj.value)
                {
                    // Do nothing, for now!
                     messages = 'FALSE';
                }
                else
                {
                    if(validateUsernameKeyUp) clearTimeout(validateUsernameKeyUp);
                    oObj.validated = false;
                    if(oObj.value.length<4)
                    {
                        messages+='<img src="img/small_alert.gif" alt=" ! " border="0" /> Your user name must be 4 letters or longer';
                    }
                    else
                    {
                        var compare = oObj.value.replace('<', '');
                        compare = compare.replace('>', '');
//                        compare = compare.replace('@', '');

                        if(compare != oObj.value)
                        {
                            messages+='<img src="img/small_alert.gif" alt=" ! " border="0" /> Your user name must not contain &lt; or &gt;';
                        }
                        else
                        {
                            messages+='<img src="img/ajax_active_dark.gif" alt="Checking..." /> Checking...';
                            validateUsernameKeyUp = setTimeout("ajaxLoad('ajaxusersearch.php?username="+oObj.value+"&formid="+formId+"&fieldid="+fieldId+"', 'ajaxbox')", 750);
                        }
                    }
                    oObj.previousValue = oObj.value;
                }
            }
            else oObj.validated = true;
        break;

        case 'supassword':
            if(oObj.value.length<5)
            {
                messages+='<img src="img/small_alert.gif" alt=" ! " border="0" /> Your password must be 5 letters or longer';
                oObj.validated = false;
            }
            else
            {
                messages+='';
                oObj.validated = true;
            }
        break;

        case 'name':
            if(oObj.value.length<1)
            {
                oObj.validated = false;
            }
            else
            {
                oObj.validated = true;
            }
        break;

        case 'passwdcf':
            var password = document.getElementById('supassword').value;
            if(oObj.value.length>0)
            {
                if(oObj.value!=password)
                {
                    messages+='<img src="img/small_alert.gif" alt=" ! " border="0" /> Your passwords do not match.';
                    oObj.validated = false;
                }
                else
                {
                    messages+='<img src="img/small_tick.gif" alt=" ! " border="0" /> Your passwords match';
                    oObj.validated = true;
                }
            }
            else oObj.validated = false;
        break;

        case 'email':

            if(oObj.value.length<1 || (oObj.value.length>0 && !((oObj.value.indexOf(".", oObj.value.indexOf("@")) > 1) && (oObj.value.indexOf("@") > 0) && (oObj.value.length>oObj.value.indexOf(".", oObj.value.indexOf("@"))+1))))
            {
                messages+='<img src="img/small_alert.gif" alt=" ! " border="0" /> Please enter a valid email address.';
                oObj.validated = false;
            }
            else
            {
                oObj.validated = true;
            }
        break;


        case 'lengthyr':
            document.getElementById('pmpf').disabled=true;
            document.getElementById('pmpf').checked=false;
        break;

        case 'length24':
        case 'lengthmo':
            document.getElementById('pmpf').disabled=false;
        break;


        case 'pmpp':
        case 'pmwp':
            //document.getElementById('annualspan').style.display = 'inline';
            //document.getElementById('annual').disabled=false;
            document.getElementById('lengthyr').disabled=false;
            //document.getElementById('annualmo').onmouseover='';
            //document.getElementById('annualmo').onmouseout='';
            //document.getElementById('annualmo').innerHTML = '';
        break;

        case 'pmpf':
            //document.getElementById('annual').disabled=true;
            document.getElementById('lengthyr').disabled=true;
            document.getElementById('lengthyr').checked=false;
            //document.getElementById('annual').checked=false;
            //document.getElementById('annualmo').onmouseover = function() { showBox(this); }
            //document.getElementById('annualmo').onmouseout  = function() { hideBox(this); }
            //document.getElementById('annualmo').innerHTML = 'N/A';

            //document.getElementById('annualspan').style.display = 'none';
        break;
    }

    //changePrice(document.getElementById('annual'));

    if(messages != 'FALSE' && doValidateForm && document.getElementById('box')) document.getElementById('box').innerHTML = messages;
    if(messages != 'FALSE' && doValidateForm && document.getElementById('ajaxbox')) document.getElementById('ajaxbox').innerHTML = messages;

    if(doValidateForm!=false) validateForm(oObj.parentNode);

}
validateUsernameKeyUp=false;

function validateForm(oForm)
{
    children = oForm.getElementsByTagName('input');

    var validated = true;
    var submit = false;

    for(i=0; i<children.length; i++)
    {
        var id = children[i].getAttribute('id');

        if(id == 'suusername' || id == 'supassword' || id == 'passwdcf' || id == 'name' || id == 'email')
        {
            validateField(children[i], false);
            validated = validated && children[i].validated;

            if(!children[i].validated)children[i].style.backgroundImage = "url('img/textinput_bg_red.gif')";
            else children[i].style.backgroundImage = "url(img/textinput_bg.gif)";
        }

        if(id == 'submit') submit = children[i];
    }



    if(submit)
    {
        if(!validated)
        {
            submit.disabled=true;
            submit.src="img/sign_up_disabled.gif";
            submit.style.borderColor='#cccccc';
        }
        else
        {
            submit.disabled=false;
            submit.src="img/sign_up.gif";
            submit.style.borderColor='#333333';
        }
    }
}


xmlHttp = false;
xmlHttpLoading = false;
function ajaxLoad(url, objectId, method, params)
{
    if(!method) method = "GET";
    if(!params) params = "";

    try
    {
        // Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
    }
    catch (e)
    {
        // Internet Explorer
        try
        {
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            try
            {
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e)
            {
                //alert("Your browser does not support AJAX!");
                return false;
            }
        }
    }

    xmlHttp.onreadystatechange=function()
    {
        if(xmlHttp.readyState==0) // not ready
        {
        }

        if(xmlHttp.readyState==1) // loading
        {
            xmlHttpLoading = true;
            if(document.getElementById('ajaxbox')) document.getElementById('ajaxbox').innerHTML = '<img src="img/ajax_active_dark.gif" alt="Checking..." /> Checking...';
        }

        if(xmlHttp.readyState==2) // loaded
        {
        }

        if(xmlHttp.readyState==3) // interactive
        {
        }

        if(xmlHttp.readyState==4) // complete
        {
            //document.getElementById('loading').style.display="none";
            xmlHttpLoading = false;

            if(xmlHttp.responseText != "")
            {
                var response = xmlHttp.responseText;

                if(response.indexOf('script type="text/javascript">'))
                {
                    var script = response.substr(response.indexOf('<script type="text/javascript">')+31, response.indexOf('</script>')-(response.indexOf('script type="text/javascript">')+31))
                    eval(script);

                    response = response.substr(0, response.indexOf('<script type="text/javascript">'));
                }

                if(document.getElementById(objectId)) document.getElementById(objectId).innerHTML=response;

            }
        }
    }

    if(method=="POST")
    {
        xmlHttp.open("POST", url, true);
        xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlHttp.setRequestHeader("Content-length", params.length);
        xmlHttp.setRequestHeader("Connection", "close");
        xmlHttp.send(params);
    }
    else
    {
        xmlHttp.open("GET",url,true);
        xmlHttp.send(null);
    }
}

function redirectLoad()
{
    setTimeout('document.getElementById("redirectform").submit();', 100);
}

function signUpBox(showhide)
{
    box = document.getElementById('signup_popup_background');
    if(!box) return false;

    if(showhide == 'show')
    {
        box.style.display='block';
        box.style.left='0px';
        box.style.top='0px';
        box.style.width='100%';
        box.style.height='2000px';
    }

    if(showhide == 'hide')
    {
        box.style.display='none';
        box.style.left='-110%';
        box.style.top='-110%';
    }
}

function changePrice(oObj)
{
    formId=oObj.form.id;
    if(oObj.checked == true) var price='&#163;20.00 per year';
    else var price='&#163;3.00 per month';

    document.getElementById(formId+'price').innerHTML = price;
}