var VVUpload_OriginalOnSubmit = null;

var Auersoft = new Object();
Auersoft.VVUpload = new Object();
Auersoft.VVUpload.IsUploadInProcess = false;

function VVUpload_Submit()
{
    if (VVUpload_OriginalOnSubmit != null)
    {
		var submitReturn = VVUpload_OriginalOnSubmit();
		
        if (submitReturn != null && submitReturn == false)
            return false;
    }
    
    var isPageValid = true;
    
    try
    {
        if (Page_IsValid != null)
            isPageValid = Page_IsValid;
    }
    catch (ex)
    {
        isPageValid = true;
    }
        
    if (!isPageValid)
        return false;

    if (VVUpload_HasUploadManager())
    {
        for (var i = 0; i < VVUpload_UploadManagerList.length; i++)
            VVUpload_UploadManagerList[i].OnSubmit();
    }
    
    if (VVUpload_HasProgressDisplay())
    {       
        for (var i = 0; i < VVUpload_ProgressDisplayList.length; i++)
            VVUpload_ProgressDisplayList[i].OnSubmit();
    }

    Auersoft.VVUpload.IsUploadInProcess = true;
           
    if (VVUpload_HasUploadManager() && VVUpload_UploadManagerList.length > 0)  
        return false;
    else
        return true;
}

function VVUpload_HasUploadManager()
{
    try
    {
        return (VVUpload_UploadManagerList != null);
    }
    catch (ex)
    {
        return false;
    }
}

function VVUpload_HasProgressDisplay()
{
    try
    {
        return (VVUpload_ProgressDisplayList != null);
    }
    catch (ex)
    {
        return false;
    }
}

function VVUpload_CancelUpload()
{
    var hasIframes = false;
    
    try
    {
        hasIframes = (VVUpload_UploadManagerList != null && VVUpload_UploadManagerList.length > 0);
    }
    catch (ex)
    {
        hasIframes = false;
    }
    
    if (hasIframes)
    {
        for (var i = 0; i < VVUpload_UploadManagerList.length; i++)
        {
            var iframe = VVUpload_UploadManagerList[i].iframe;
            var win;
            
            if (iframe.contentWindow != null)
                win = iframe.contentWindow;
            else
                win = iframe;
            
            win.location = "about:blank";
            
            if (win.stop != null)
                win.stop();
            else
                VVUpload_UploadManagerList[i].iframeDoc.execCommand("Stop");
        }
    }
    else
    {        
        if (window.stop != null)
            window.stop();
        else
            document.execCommand("Stop");
        
        window.location = window.location;
    }
    
    Auersoft.VVUpload.IsUploadInProcess = false;
}

function VVUpload_GetElementsByClassNameStartsWith(parent, className)
{
    var elements = new Array();
    var all = parent.getElementsByTagName("*");    
    
    className = className.toLowerCase();
    
    for (var i = 0; i < all.length; i++)
        if (VVUpload_StartsWith(all[i].className.toLowerCase(), className))
            elements.push(all[i]);
            
    return elements;
}

function VVUpload_StartsWith(string, stringCheck)
{
    if (string.length < stringCheck)
        return false;
    
    return (string.substring(0, stringCheck.length) == stringCheck);
}

function VVUpload_UpdateInnerHTML(value, elements)
{  
    for (var i = 0; i < elements.length; i++)
        elements[i].innerHTML = value;
}

function VVUpload_SetDisplay(value, elements)
{  
    for (var i = 0; i < elements.length; i++)
        elements[i].style.display = (value ? "inline" : "none");
}

function VVUpload_AddHandler(eventSource, eventName, handlerName, eventParent)
{
	// TODO: factor into the event function so multiple parents are possible
	//if (eventParent != null)
	//	eventSource.parent = eventParent;
	var eventHandler = function(e) {eventSource[handlerName](e, eventParent);};
	
	if (eventSource.addEventListener)
	{
		eventSource.addEventListener(eventName, eventHandler, false);
	}
	else if (eventSource.attachEvent)
	{ 
		eventSource.attachEvent("on" + eventName, eventHandler);
	}
	else
	{
		var originalHandler = eventSource["on" + eventName];
		
		if (originalHandler)
		{
			eventHandler = function(e) {originalHandler(e); eventSource[handlerName](e, eventParent);};
		}

		eventSource["on" + eventName] = eventHandler;
	}
}

function VVUpload_IsSafari()
{
    return /Safari/.test(navigator.userAgent);
}

function VVUpload_GenerateGuid()
{
	var hex = new Array('0','1','2','3','4','5','6','7','8', '9','a','b','c','d','e','f');

	var outB = '';
	
	for (count = 0; count < 32; count++)
	{
		if ((count == 8) || (count == 12) || (count == 16) || (count == 20))
			outB += '-';
			
		outB += hex[Math.floor(Math.random() * 16)];
	}
	
	return outB;
}

function HideAdvancedOptions()
{
	 
	try{
		var divUpload = document.getElementById('divUpload');
		if (divUpload)
			divUpload.style.display = "block";
	
		//If the VV advanced upload options panel is visible then hide it during the upload
		//to keep the upload progress div visible on the screen.
		var divAdvancedOptions = document.getElementById('divHideDuringUpload');
		if (divAdvancedOptions)
			divAdvancedOptions.style.display = "none"; 
			
		//Hide the VV singe file upload buttons if they are visible on the screen
		var divSingleFileUploadButtons = document.getElementById('divHideButtonsDuringUpload');
		if (divSingleFileUploadButtons)
			divSingleFileUploadButtons.style.display = "none"; 
		
		//Hide the select file label during uploads
		var divSelectFileLabel = document.getElementById('divSelectFileLabel');
		if (divSelectFileLabel)
			divSelectFileLabel.style.display = "none";
			
		//remove any html markup from the results message div tag (used to display error messages)
		var divUploadErrors = document.getElementById('uploadErrors');
		if (divUploadErrors){
			
			var divs = divUploadErrors.getElementsByTagName('div');
 
			for(var i=0;i<divs.length;i++){
				//for each div element remove its innerHTML
			   	try{
			   		divs[i].innerHTML = '';
			   	}catch(ex){
			   	
			   	}
			}			
		}
		
	}catch(ex){
	
	}
}