//while testing please change this email address
var toEmailAddress="insight-submission@on24.com";

var reEmail = /^((\"[^\"\f\n\r\t\v\b]+\")|([\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/;

String.prototype.trim = function(){
    return this.replace(/^\s+/,'').replace(/\s+$/,'');            
}

var agt=navigator.userAgent.toLowerCase();
var isFirefox=agt.indexOf('firefox')!=-1 || navigator.vendor=="Firefox";

var NonON24ItemCount=1,ON24ItemCount=1;
var itemLimit=10;
var singleNonON24Content="", singleON24Content="";

function init(){
	singleNonON24Content = document.getElementById("videoFormsContent").innerHTML;
	singleON24Content = document.getElementById("eventFormsContent").innerHTML
}

function showHideDivs(showDiv,hideDiv){
	document.getElementById(showDiv).style.display="block";
	document.getElementById(hideDiv).style.display="none";
}

function gotolocation(pagename) {
    location.href = 'http://www.on24.com/' + loctostatic + '/' + pagename + '.html';
}

var videoItemElements = new Array();
var videoItemCount = 1;
function addVideoItemForm() {
    var itemId = "videoItem_" + videoItemCount;
    var itemElement = showElement(itemId);
    if (itemElement != null) {
        videoItemElements[videoItemCount] = itemElement;
        videoItemCount++;
    } else {
        alert("You can only sumbit " + videoItemCount + " items at a time.");
    }
}

var eventItemElements = new Array();
var eventItemCount = 1;
function addEventItemForm() {
    var itemId = "eventItem_" + eventItemCount;
    var itemElement = showElement(itemId);
    if (itemElement != null) {
        eventItemElements[eventItemCount] = itemElement;
        eventItemCount++;
    } else {
        alert("You can only sumbit " + eventItemCount + " items at a time.");
    }
}

function hideElement(id) {
    var element = document.getElementById(id);
    if (element != null && element != 'undefined') {
        element.className = 'hidden';
        return true;
    }
    return false;
}

function showElement(id) {
    var element = document.getElementById(id);
    if (element != null && element != 'undefined') {
        element.className = 'visible';
        return element;
    }
    return null;
}

function showElementInline(id) {
    var element = document.getElementById(id);
    if (element != null && element != 'undefined') {
        element.className = 'visibleInline';
        return true;
    }
    return false;
}

var maxEmailLength = 1000;
var maxDescriptionLength = 1500;
var defaultDescription = '(' + (maxDescriptionLength - 500) + ' characters max)';

var requiredInputs = new Array();
requiredInputs["firstName"] = true;
requiredInputs["lastName"] = true;
requiredInputs["phone"] = true;
requiredInputs["email"] = true;
requiredInputs["job"] = true;
requiredInputs["country"] = true;
requiredInputs["company"] = true;
requiredInputs["industry"] = true;
requiredInputs["policy"] = true;

var requiredVideoInputNames = new Array("video", "url", "title", "videoType", "videoCategory1");
var requiredVideoInputs = new Array();
for (var i = 0; i < requiredVideoInputNames.length; i++) {
    var name = requiredVideoInputNames[i];
    requiredVideoInputs[name] = true;
}

var flashExtensions = new Array(".swf", ".flv");

var requiredEventInputNames = new Array("eventId", "eventCategory1");
var requiredEventInputs = new Array();
for (var i = 0; i < requiredEventInputNames.length; i++) {
    var name = requiredEventInputNames[i];
    requiredEventInputs[name] = true;
}

var descriptionInputs = new Array();
var descriptionInputCount = 0;
function submitItemForms(formName) {

    var form = document.forms[formName];
    if (form != null && form != 'undefined') {

        // set the email address...
        form.toAddress.value = toEmailAddress;

        // determine which tab is open...
        var isVideoTab = false;
        var videoForms = document.getElementById('videoForms');
        if (videoForms != null && videoForms.style.display == 'block') {
            isVideoTab = true;
        }

        // validate required form inputs...
        var inputs = form.elements;
        for (var i = 0; i < inputs.length; i++) {
            var input = inputs[i];
            var name = input.name;
            if (name == 'description' || name.slice(0, name.indexOf("_")) == 'description') {
                descriptionInputs[descriptionInputCount++] = input;
            }
            if (requiredInputs[name]) {
                if (!validatetext(input, true)) {
                    return false;
                } else if (name == 'phone' && !validatephone(input, true)) {
                    return false;
                } else if (name == 'email' && !validateemail(input, true, maxEmailLength)) {
                    return false;
                }
            }
            if (isVideoTab) {
                if (!validateVideoInputs(form, input)) {
                    return false;
                }
            } else {
                if (!validateEventInputs(form, input)) {
                    return false;
                }
            }
        }

        // validate the policy checkbox...
        var policy = form.policy;
        if (!policy.checked) {
            alert('Please confirm that you understand our "Terms of Use", "Privacy Policy" and "Publishing Policy" conditions');
            policy.focus();
            return false;
        }

        // set the isVideo flag and submit the form...
        if (!isVideoTab) {
            form.isVideo.value = "false";
        } else {
            form.isVideo.value = "true";
        }

        // validate the description inputs...
        for (var i = 0; i < descriptionInputs.length; i++) {
            var descriptionInput = descriptionInputs[i];
            if (descriptionInput) {
                if (descriptionInput.value.trim() == defaultDescription) {
                    descriptionInput.value = "";
                } else if (!validateDescriptionInput(descriptionInput)) {
                    return false;
                }
            }
        }
        form.submit();
    }
    return true;
}

function validateVideoInputs(form, input) {
    var name = input.name;
    var value = input.value;
    if (requiredVideoInputs[name]) {
        // check if the input element is visible if its a url of video
        var isElementVisible = true;
        if ('url' == name) {
            var urlElement = document.getElementById('urlInput');
            if (urlElement == null || urlElement.className == 'hidden') {
                isElementVisible = false;
            }
        } else if ('video' == name) {
            var videoElement = document.getElementById('videoInput');
            if (videoElement == null || videoElement.className == 'hidden') {
                isElementVisible = false;
            }
        } else if ('videoCategory1' == name) {
            if (form.elements['videoCategory2'].value || form.elements['videoCategory3'].value) {
                isElementVisible = false;
            }
        }

        // validate if the input element is visible...
        if (isElementVisible) {
            if (!validatetext(input, true)) {
                return false;
            } else if ('video' == name && !validateFlash(input)) {
                return false;
            }
        }

    } else if (name.indexOf("_") > 0) {
        var addedInputName = name.split("_");
        if (addedInputName != null && addedInputName.length == 2) {

            // only validate this input if the video form has changed fields...
            var validateVideo = false;
            var addedVideoIndex = addedInputName[1];
            for (var j = 0; j < requiredVideoInputNames.length; j++) {
                var videoInputName = requiredVideoInputNames[j] + "_" + addedVideoIndex;
                var videoInput = form.elements[videoInputName];
                var videoInputValue = videoInput.value;
                if (videoInputValue != null && videoInputValue != "" && videoInputValue != defaultDescription) {
                    validateVideo = true;
                    break;
                }
            }

            if (validateVideo) {
                var addedName = addedInputName[0];
                if (requiredVideoInputs[addedName]) {

                    // check if the input element is visible if its a url or video...
                    var isElementVisible = true;
                    var itemNumber = addedInputName[1];
                    if (itemNumber != null) {
                        var itemElement = videoItemElements[eval(itemNumber)];
                        if (itemElement == null || itemElement.className == 'hidden') {
                            isElementVisible = false;
                        } else if ('url' == addedName) {
                            var urlElement = document.getElementById('urlInput_' + itemNumber);
                            if (urlElement == null || urlElement.className == 'hidden') {
                                isElementVisible = false;
                            }
                        } else if ('video' == addedName) {
                            var videoElement = document.getElementById('videoInput_' + itemNumber);
                            if (videoElement == null || videoElement.className == 'hidden') {
                                isElementVisible = false;
                            }
                        } else if ('videoCategory1' == addedName) {
                            if (form.elements['videoCategory2_' + itemNumber].value || form.elements['videoCategory3_' + itemNumber].value) {
                                isElementVisible = false;
                            }
                        }
                    }

                    // validate if the input element is visible...
                    if (isElementVisible) {
                        if (!validatetext(input, true)) {
                            return false;
                        } else if ('video' == addedName && !validateFlash(input)) {
                            return false;
                        }
                    }

                }
            }
        }
    }
    return true;
}

function validateEventInputs(form, input) {
    var name = input.name;
    var value = input.value;
    if (requiredEventInputs[name]) {
        var areCategoriesSelected = form.elements['eventCategory2'].value || form.elements['eventCategory3'].value;
        if ('eventCategory1' == name && areCategoriesSelected) {
            return true;
        } else if (!validatetext(input, true)) {
            return false;
        }
    } else if (name.indexOf("_") > 0) {
        var addedInputName = name.split("_");
        if (addedInputName != null && addedInputName.length == 2) {

            // only validate this input if the event form has changed fields...
            var validateEvent = false;
            var addedEventIndex = addedInputName[1];
            for (var j = 0; j < requiredEventInputNames.length; j++) {
                var eventInputName = requiredEventInputNames[j] + "_" + addedEventIndex;
                var eventInput = form.elements[eventInputName];
                var eventInputValue = eventInput.value;
                var areCategoriesSelected = !form.elements['eventCategory2_' + addedEventIndex].value == '' || !form.elements['eventCategory3_' + addedEventIndex].value == '';
                if ('eventCategory1' == addedInputName[0] && areCategoriesSelected) {
                    return true;
                } else if (eventInputValue != null && eventInputValue != "" && eventInputValue != defaultDescription) {
                    validateEvent = true;
                    break;
                }
            }

            if (validateEvent) {
                var addedName = addedInputName[0];
                if (requiredEventInputs[addedName] && !validatetext(input, true)) {
                    return false;
                }
            }
        }
    }
    return true;
}

function validateFlash(input) {
    var value = input.value;
    var extension = value.slice(value.indexOf(".")).toLowerCase();
    for (var i = 0; i < flashExtensions.length; i++) {
        var flashExtension = flashExtensions[i];
        if (flashExtension == extension) {
            return true;
        }
    }
    try {
        alert("Only flash file uploads (" + flashExtensions.join(" ") + ") are currently supported.");
    } catch(e) {
        /* ignore */
    }
    input.value = "";
    input.focus();
    return false;
}

function validatetext(ctrl, isrequired) {
    var type = ctrl.type;
    if ('file' != type && 'select-one' != type) {
        ctrl.value = ctrl.value.trim();
    }
    var value = ctrl.value;
    if (value == null || value == 'undefined' || value == "" || value == defaultDescription) {
        if (isrequired) {
            try {
                alert("This is a required field");
            } catch(e) {
                /* ignore */
            }
            ctrl.focus();
            return false;
        }
    }
    return true;
}

function validateDescription(input, mouseEvent) {
    var keyCode = mouseEvent.keyCode;
    if (keyCode != 8 && keyCode != 46) {
        validateDescriptionInput(input);
    }
    return true;
}

function validateDescriptionInput(input) {
    var value = input.value;
    if (value && ((value.length + 1) > maxDescriptionLength)) {
        var errorMessage = "You have exceeded the maximum allowed limit of " + maxDescriptionLength + " characters(current count=" + value.length + ")."
        errorMessage += "Please modify the information and try again.";
        alert(errorMessage);
        input.focus();
        return false;
    }
    return true;
}

function validateEventIdInput(mouseEvent) {
    var keyCode = mouseEvent.keyCode;
    var which = mouseEvent.which;
    if (keyCode) {
        if (keyCode < 48 || keyCode > 57) {
            window.event.returnValue = false;
            return false;
        }
    }
    else if (which) {
        if (which < 48 || which > 57) {
            return false;
        }
    }
    return true;
}

function isDigit(character) {
    return (character >= '0' && character <= '9');
}

function validatelistbox(ctrl,required){
	if (required && ctrl.length>1){ 
		if(ctrl.options[ctrl.selectedIndex].value==""){
			alert("Please select a value");
			ctrl.focus();
			return false;
		}
	}	
	return true;
}

function validatecategory(ctrl,ctrl2,ctrl3,required){	
	if (required){ 
		if(ctrl.options[ctrl.selectedIndex].value=="" && ctrl2.options[ctrl2.selectedIndex].value=="" && ctrl3.options[ctrl3.selectedIndex].value==""){
			alert("Please select a Category");
			ctrl.focus();
			return false;
		}
	}	
	return true;
}

function validateemail(ctrl, required, limit){
	if(validatetext(ctrl, required)){
		if(!isEmail(ctrl.value)){
			alert("This is not a valid email address");
			ctrl.focus();
			return false;
		}
	} else return false;
	
	return true
}

function isEmail(str) {
  var supported = 0;
  if (window.RegExp) {
    var tempStr = "a";
    var tempReg = new RegExp(tempStr);
    if (tempReg.test(tempStr)) supported = 1;
  }
  if (!supported) 
    return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
  else		
	return (reEmail.test(str));
}

function validatephone(ctrl,required)
{ 		
	if(validatetext(ctrl, required)){
		var phonestr=ctrl.value;
		if(!phonestr) return false;
		phonestr=phonestr.replace(/[^\d]*/gi,"");
		if (!phonestr || phonestr.length<7){
				alert("Please enter a valid phone number in this field"); 
				ctrl.focus();
				return false;
		}	
		if (phonestr.length==7)
			ctrl.value=(phonestr.substring(0,3)+"-"+phonestr.substring(3,7))
		else if	(phonestr.length==10)
			ctrl.value="("+phonestr.substring(0,3)+") "+phonestr.substring(3,6)+"-"+phonestr.substring(6,10);
		return true;
	} else return false;

}

