

document.getElementsByClassName = function(cl) {
    var retnode = [];
    var myclass = new RegExp('\\b'+cl+'\\b');
    var elem = this.getElementsByTagName('*');
    for (var i = 0; i < elem.length; i++) {
        var classes = elem[i].className;
        if (myclass.test(classes)) retnode.push(elem[i]);
    }
    return retnode;
}; 
String.prototype.toTitleCase = function() {
    return this.replace(/([\w&`'‘’"“.@:\/\{\(\[<>_]+-? *)/g, function(match, p1, index, title) {
        if (index > 0 && title.charAt(index - 2) !== ":" &&
            match.search(/^(a(nd?|s|t)?|b(ut|y)|en|for|i[fn]|o[fnr]|t(he|o)|vs?\.?|via)[ \-]/i) > -1)
            return match.toLowerCase();
        if (title.substring(index - 1, index + 1).search(/['"_{(\[]/) > -1)
            return match.charAt(0) + match.charAt(1).toUpperCase() + match.substr(2);
        if (match.substr(1).search(/[A-Z]+|&|[\w]+[._][\w]+/) > -1 || 
            title.substring(index - 1, index + 1).search(/[\])}]/) > -1)
            return match;
        return match.charAt(0).toUpperCase() + match.substr(1);
    });
};

function trim(str) {
	str = str.replace(/^\s+/, '');
	for (var i = str.length - 1; i >= 0; i--) {
		if (/\S/.test(str.charAt(i))) {
			str = str.substring(0, i + 1);
			break;
		}
	}
	return str;
}

var hasSubmit = false;
var formErrors = new Array();
var formErrorCount = 0;
var formUploading = false;

function hideForm(id)
{
    var area = document.getElementById(id);
    if(area) {
    document.getElementById(id).style.display = 'none';
    document.getElementById('form-waitsubmit').style.display = 'block';
    }
}

function setTag(name,id)
{
    var tagbox = document.getElementById(id);
    var tags = tagbox.value.split(",");
    var trimmed_tag = trim(tagbox.value);
    var tag_exists = false;
    var seperator = "";
    name = trim(name);
    for (var i = 0; i < tags.length; i++) {
        if(tags[i]) {
            tags[i] = trim(tags[i].toLowerCase());
            if(name.toLowerCase() == tags[i]) {
                tag_exists = true;
            }
        }
    }
    
    if(!tag_exists) {
        if(!trimmed_tag || trimmed_tag.substring(-1) == ',') {
            seperator = "";
        } else {
            seperator = ", ";
        }
        
        tagbox.value += seperator + name;
    }
}

function showForm(id)
{
    var area = document.getElementById(id);
    if(area) {
    document.getElementById(id).style.display = 'block';
    document.getElementById('form-waitsubmit').style.display = 'none';
    }
}

function selectFormLicense(id)
{
    var i = 1;
    var ele;
    while(ele = document.getElementById("license_"+i)) {
        ele.className = "license";
        i++;
    }
    document.getElementById("license_"+id).className = "license selected";
    document.getElementById("license_field_"+id).checked='checked';
}

function switchFormUrl()
{
    document.getElementById("urluploader").style.display='block';
    document.getElementById("fileuploader").style.display='none';
}

function switchFormFile()
{
    document.getElementById("urluploader").style.display='none';
    document.getElementById("fileuploader").style.display='block';
}

function showFormOptions(id,clickid,unclickid)
{
    document.getElementById(id).style.display='block';
    document.getElementById(clickid).style.display='none';
    document.getElementById(unclickid).style.display='block';
}

function hideFormOptions(id,clickid,unclickid)
{
    document.getElementById(id).style.display='none';
    document.getElementById(clickid).style.display='block';
    document.getElementById(unclickid).style.display='none';
}

function formSubmit(id,bodyId)
{
    var reqFlds = document.getElementById(id).getElementsByClassName('required_field');
    formErrors     = new Array();
    formErrorCount = 0;
    
    for ( var i in reqFlds ) {
        if(reqFlds[i].type){
            reqFlds[i].className = "required_field";
            switch(reqFlds[i].type) {
                case 'text':
                    if(!reqFlds[i].value) 
                        formAddError(reqFlds[i]);
                    break;
            }
        }
    }
    if(formErrorCount) {
        formDisplayErrors();
        return false;
    }
    
    if(formUploading) {
        hideForm(bodyId);
        hasSubmit = true;
        return false;
    } else {
        return true;
    }
}

function formTitlize(n)
{
        n = n.replace(/[-_]/g,' ');
        n = n.replace(/  /g,' ');
        n = n.replace(/  /g,' ');
        n = n.replace(/\.[^\.]*$/,'');
        n = n.toTitleCase();
        return n;
}

function formAddError(obj)
{
    if(obj.className != "required_field field_error") {
        formErrors[formErrorCount] = formTitlize(obj.name);
        obj.className += " field_error";
        formErrorCount++;
    }
}
function formDisplayErrors()
{
    var message = "Please complete the following fields... \n";
    
    for (var i in formErrors) {
        message += "   - "+formErrors[i]+"\n";
    }
    
    alert(message);
}
