./javascript/form.js

function titleCase(string)
{
    return string.substr(0,1).toUpperCase()+string.substr(1);
}

function validate(url, fobj) 
{
    var out = "";
    var ok = true;
    var radio_array = new Array();
    var radio_name_array = new Array();
    var push = 0;
    var index = 0;

    for(var i = 0;i < fobj.elements.length;i++) 
    {
        var sh = 'true';
        var cond_val = 'false';
        switch(fobj.elements[i].type) 
        { 
                   case "text":

            if(document.getElementById('s_' + fobj.elements[i].name))
            {
                var cxt = document.getElementById('s_' + fobj.elements[i].name).value;
                var ext = document.getElementById(cxt).value;
                if(fobj.elements[i].value!=ext)
                {
                    ok = false;
                    out += '<li>' + titleCase(fobj.elements[i].name) + ' - the ' + fobj.elements[i].name + '\'s do not match</li>';
                }
            }

            if(document.getElementById('c_' + fobj.elements[i].name))
            {
                var cxp = document.getElementById('c_' + fobj.elements[i].name).value;
                var rxp = document.getElementById(cxp);
                var exp = document.getElementById('e_' + fobj.elements[i].name).value;

                if(rxp.type=="radio")
                {
                    if(rxp.checked==true)
                    {
                        var cond_val = 'true';
                    }
                }
                else if(rxp.type=="text")
                {
                    if(rxp.value==exp)
                    {
                        var cond_val = 'true';
                    }
                }
                else if(rxp.type=="select-one")
                {
                    if(rxp.value==exp)
                    {
                        var cond_val = 'true';
                    }
                }
            }
            else
            {
                var cond_val = 'true';
            }

            if(document.getElementById('v_' + fobj.elements[i].name))
            {
                var type = document.getElementById('v_' + fobj.elements[i].name).value;
                if(type=="text")
                {
                    var regex = "[^ \sa-zA-Z]";
                    var msg = 'You may only use letters';
                }
                else if(type=="number")
                {
                    var regex = "[^ \s0-9]";
                    var msg = 'You may only use numbers';
                }
                else if(type=="email")
                {
                    var regex = "^([0-9a-zA-Z]+([_.-]?[0-9a-zA-Z]+)*@[0-9a-zA-Z]+[0-9,a-z,A-Z,.,-]*(.){1}[a-zA-Z]{2,4})+$";
                    var msg = 'You must enter a valid email address';
                }
                else if(type=="url")
                {
                    var regex = "^(http[s]?://|ftp://)?(www\.)?[a-zA-Z0-9-\.]+\.[a-zA-Z\.]+[a-zA-Z0-9\./_-]?$";
                    var msg = 'You must enter a valid URL';
                }
                else if(type=="sortcode")
                {
                    var regex = "[^0-9-]";
                    var msg = 'You may only use numbers and the following character -';
                }
                else if(type=="fulltext")
                {
                    var regex = "[^ \sa-zA-Z0-9]";
                    var msg = 'You may only use letters and numbers';
                }
                else if(type=="anytext")
                {
                    var regex = "[^ \sa-zA-Z0-9-\"',.&%()_;:]";
                    var msg = 'You may only use letters, numbers and the following characters -"\',.&%()_;:';
                }
                var re = new RegExp(regex);

                if(document.getElementById('r_' + fobj.elements[i].name))
                {
                    if(fobj.elements[i].value!="")
                    {
                        if(fobj.elements[i].value.match(re))
                        {
                            if(type!="email" && type!="url")
                            {
                                var sh = 'false';
                            }
                        }
                        else
                        {
                            if(type=="email" || type=="url")
                            {
                                var sh = 'false';
                            }
                        }
                    }
                }
                else
                {
                    if(cond_val=='true')
                    {
                        if(fobj.elements[i].value=="")
                        {
                            var msg = 'The field is not optional';
                            var sh = 'false';
                        }
                        else
                        {
                            if(fobj.elements[i].value.match(re))
                            {
                                if(type!="email" && type!="url")
                                {
                                    var sh = 'false';
                                }
                            }
                            else
                            {
                                if(type=="email" || type=="url")
                                {
                                    var sh = 'false';
                                }

                                if(type=="number" || type=="price")
                                {
                                    if(fobj.elements[i].value==0)
                                    {
                                        var msg = 'You must enter an amount greater than 0';
                                        var sh = 'false';
                                    }
                                }
                            }
                        }
                    }
                }
            }
            
            
            if(sh=='false')
            {
                ok = false;
                out += '<li>' + titleCase(fobj.elements[i].name) + ' - ' + msg + '</li>';
            }
            break;

                   case "password": 
            if(document.getElementById('r_' + fobj.elements[i].name))
            {
            }
            else
            {
                if(fobj.elements[i].value=='')
                {
                    ok = false;
                    out += '<li>' + titleCase(fobj.elements[i].name) + ' - the field is not optional</li>';
                }
            }
            if(document.getElementById('s_' + fobj.elements[i].name))
            {
                var cxt = document.getElementById('s_' + fobj.elements[i].name).value;
                var ext = document.getElementById(cxt).value;
                if(fobj.elements[i].value!=ext)
                {
                    ok = false;
                    out += '<li>' + titleCase(fobj.elements[i].name) + ' - the passwords do not match</li>';
                }
            }
            break;

                   case "textarea": 
            if(document.getElementById('r_' + fobj.elements[i].name))
            {
            }
            else
            {
                if(fobj.elements[i].value=="")
                {
                    ok = false;
                    out += '<li>' + titleCase(fobj.elements[i].name) + ' - You must enter something</li>';
                }
            }
            break;

            case "checkbox":
            if(document.getElementById('r_' + fobj.elements[i].name))
            {
                if(fobj.elements[i].checked!=true)
                {
                    ok = false;
                    out += '<li>' + titleCase(fobj.elements[i].name) + ' - You must agree to the ' + fobj.elements[i].value + '</li>';
                }
            }
            break;
                   case "radio": 

            push = 0;
            for(var j = 0; j < radio_name_array.length; j++)
            {
                if(radio_name_array[j]==fobj.elements[i].name)
                {
                    index = j;
                    push = 1;
                }
            }

            if(push==0)
            {
                radio_name_array.push(fobj.elements[i].name);
                index = radio_array.push();
            }
            if(fobj.elements[i].checked==true)
            {
                radio_array[index] = fobj.elements[i].checked;
            }

            break;

            case "select-one":
            if(document.getElementById('r_' + fobj.elements[i].name))
            {
            }
            else
            {

            if(fobj.elements[i].value=='Please Select')
            {
                ok = false;
                out += '<li>' + titleCase(fobj.elements[i].name) + ' - You must select a option</li>';
            }

            if(fobj.elements[i].value=='-')
            {
                ok = false;
                out += '<li>' + titleCase(fobj.elements[i].name) + ' - You must select a option</li>';
            }
            }
            break;
        }
    }
    for(var i = 0;i < radio_name_array.length;i++) 
    {
        if(radio_array[i]!=true)
        {
            ok = false;
            out += '<li>' + titleCase(radio_name_array[i]) + ' - You must choose 1 option</li>';
        }
    }
    
    if(ok==true)
    {
        fobj.method = 'POST';
        fobj.action = url;
        fobj.submit();
    }
    else
    {
        var obj = document.getElementById('errors'); 
        obj.className = 'visible';
        obj.innerHTML = 'The following fields require corrections:<br><ul>' + out + '</ul>';
        scroll(0,0)
    }
}

function passwordStrength(password, targetIMG, targetDiv)
{
    var text = document.getElementById(targetDiv);
    var img = document.getElementById(targetIMG);
    var strongRegex = new RegExp("^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$", "g");
    var mediumRegex = new RegExp("^(?=.{7,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g");
    var enoughRegex = new RegExp("(?=.{6,}).*", "g");

    if (password.length==0) 
    {
        text.innerHTML = '';
        img.src = global_url_path + 'images/0.jpg';
    }
    else if (false == enoughRegex.test(password))
    {
        text.innerHTML = '<b>To short</b>';
        img.src = global_url_path + 'images/0.jpg';
    } 
    else if (strongRegex.test(password))
    {
        text.innerHTML = '<span style="color:green"><b>Strong</b></span>';
        img.src = global_url_path + 'images/3.jpg';
    }
    else if (mediumRegex.test(password))
    {
        text.innerHTML = '<span style="color:orange"><b>Medium</b></span>';
        img.src = global_url_path + 'images/2.jpg';
    } 
    else 
    {
        text.innerHTML = '<span style="color:red"><b>Weak</b></span>';
        img.src = global_url_path + 'images/1.jpg';
    }
}

function checkUser(username, field)
{
    var text = document.getElementById(field);
    text.innerHTML = 'Checking availability';
    if(window.XMLHttpRequest) 
    {
        var index = XMLHttpRequestObjects.push(new XMLHttpRequest());
    } 
    else if (window.ActiveXObject) 
    {
        var index = XMLHttpRequestObjects.push(new ActiveXObject("Microsoft.XMLHTTP"));
    }

    if(XMLHttpRequestObjects[index-1]) 
    {
        XMLHttpRequestObjects[index-1].open("GET", global_url_path + 'search.php?req=ajax&type=user&data=' + username);
        XMLHttpRequestObjects[index-1].onreadystatechange = function()
        {
            if (XMLHttpRequestObjects[index-1].readyState == 4 && 
            XMLHttpRequestObjects[index-1].status == 200) 
            {
                if(XMLHttpRequestObjects[index-1].responseText=="ok")
                {
                    text.innerHTML = '<b>Your username is available</b>';
                }
                else
                {
                    text.innerHTML = '<b>' + XMLHttpRequestObjects[index-1].responseText + '</b>';
                }
            }
        }
        
        XMLHttpRequestObjects[index-1].send(null);
    }
}

//*************************************************************************************************
//Image Manager
//*************************************************************************************************

function insertImg(url)
{
    url += "&count=" + document.forms['upload'].elements['counter'].value;

    document.forms['upload'].elements['counter'].value = (document.forms['upload'].elements['counter'].value * 1) + 1;
    document.forms['upload'].elements['total'].value = (document.forms['upload'].elements['total'].value * 1) + 1;

    if(document.forms['upload'].elements['counter'].value==1)
    {
        getContent(url, "image_box");
    }
    else
    {
        addContent(url, "image_box");
    }
}

function removeImg(id, url)
{
    placeContent('imgstatus', '<img src=\'%DOMAINimages/general/loading.gif\' width=\'20\' height=\'20\' align=\'absmiddle\' border=\'0\'>Please Wait');
    hideElement(id);
    addContent(url, "image_box");
    document.forms['upload'].elements['total'].value = (document.forms['upload'].elements['total'].value * 1) - 1;
    placeContent('imgstatus', 'Image deleted successfully.');

    if(document.forms['upload'].elements['total'].value==0)
    {
        document.forms['upload'].elements['counter'].value = 0;
    }
    toggleUpload();
}

function updateImg(id, url)
{
    alert(id);
    alert(url);
}


function toggleUpload()
{
    toggleDisable(document.forms['uploadone'].elements['b']);
    toggleDisable(document.forms['uploadmore'].elements['b']);
}

function clearFields()
{
    document.forms['uploadone'].elements['image'].value = "";
    
    for(var i = 1;i <11;i++)
    {
        document.forms['uploadmore'].elements['image' + i].value = "";
    } 
}

function closeEdit(control)
{
    tinyMCE.execCommand('mceRemoveControl', false, control);
}

function updatePrice() 
{
    if(document.forms['quantity'].quantity.value=="-")
    {
        document.forms['quantity'].elements['total'].value = '0.00';
        document.forms['quantity'].elements['price'].value = '0.00';
        document.forms['quantity'].elements['discount'].value = '0.00';
    }
    else
    {
        var quan = document.forms['quantity'].quantity.value;
        var price = document.forms['quantity'].staticprice.value;
        var dis = document.forms['quantity'].staticdis.value;

        var next = price*quan;
        var total = (next * 1);
        var discount = (dis * 1)*(quan - 1);
        var total = total - discount

        var total = total.toFixed(2);
        var next = next.toFixed(2);
        var discount = discount.toFixed(2);

        document.forms['quantity'].elements['total'].value = total;
        document.forms['quantity'].elements['price'].value = next;
        document.forms['quantity'].elements['discount'].value = discount;    
    }
}

function updateOffer() 
{
    if(document.forms['quantity'].quantity.value=="-")
    {
        document.forms['quantity'].elements['total'].value = '0.00';
    }
    else
    {
        var quan = document.forms['quantity'].quantity.value;
        var price = document.forms['quantity'].offer.value;

        var next = price*quan;
        var total = (next * 1);

        var total = total.toFixed(2);
        var next = next.toFixed(2);

        document.forms['quantity'].elements['total'].value = total;    
    }
}