var Opera=navigator.userAgent.toLowerCase().indexOf("opera")!=-1?true:false;				
var Opera8=navigator.userAgent.toLowerCase().indexOf("opera 8")!=-1?true:false;
var Opera7=navigator.userAgent.toLowerCase().indexOf("opera 7")!=-1?true:false;
var Opera6=navigator.userAgent.toLowerCase().indexOf("opera 6")!=-1?true:false;
var Opera5=navigator.userAgent.toLowerCase().indexOf("opera 5")!=-1?true:false;
var Opera4=navigator.userAgent.toLowerCase().indexOf("opera 4")!=-1?true:false;
var Netscape4=navigator.userAgent.toLowerCase().indexOf("mozilla/4.79")!=-1?true:false;
var Netscape6=navigator.userAgent.toLowerCase().indexOf("netscape6")!=-1?true:false;
var Netscape7=navigator.userAgent.toLowerCase().indexOf("netscape/7")!=-1?true:false;
var Netscape8=navigator.userAgent.toLowerCase().indexOf("netscape/8")!=-1?true:false;
var MozillaFireFoxRev0=(navigator.userAgent.toLowerCase().indexOf("mozilla")!=-1?true:false) && (navigator.userAgent.toLowerCase().indexOf("gecko")!=-1?true:false) && (navigator.userAgent.toLowerCase().indexOf("rv:0")!=-1?true:false);

var MozillaFireFoxRev10=(navigator.userAgent.toLowerCase().indexOf("mozilla")!=-1?true:false) && (navigator.userAgent.toLowerCase().indexOf("gecko")!=-1?true:false) && (navigator.userAgent.toLowerCase().indexOf("rv:1.0")!=-1?true:false);

var MozillaFireFoxRev11=(navigator.userAgent.toLowerCase().indexOf("mozilla")!=-1?true:false) && (navigator.userAgent.toLowerCase().indexOf("gecko")!=-1?true:false) && (navigator.userAgent.toLowerCase().indexOf("rv:1.1")!=-1?true:false);

var MozillaFireFoxRev12=(navigator.userAgent.toLowerCase().indexOf("mozilla")!=-1?true:false) && (navigator.userAgent.toLowerCase().indexOf("gecko")!=-1?true:false) && (navigator.userAgent.toLowerCase().indexOf("rv:1.2")!=-1?true:false);

var MozillaFireFoxRev13=(navigator.userAgent.toLowerCase().indexOf("mozilla")!=-1?true:false) && (navigator.userAgent.toLowerCase().indexOf("gecko")!=-1?true:false) && (navigator.userAgent.toLowerCase().indexOf("rv:1.3")!=-1?true:false);

var MozillaFireFoxRev14=(navigator.userAgent.toLowerCase().indexOf("mozilla")!=-1?true:false) && (navigator.userAgent.toLowerCase().indexOf("gecko")!=-1?true:false) && (navigator.userAgent.toLowerCase().indexOf("rv:1.4")!=-1?true:false);

var MozillaFireFoxRev15=(navigator.userAgent.toLowerCase().indexOf("mozilla")!=-1?true:false) && (navigator.userAgent.toLowerCase().indexOf("gecko")!=-1?true:false) && (navigator.userAgent.toLowerCase().indexOf("rv:1.5")!=-1?true:false);

var MozillaFireFoxRevOlder15 = MozillaFireFoxRev0 || MozillaFireFoxRev10 || MozillaFireFoxRev11 || MozillaFireFoxRev12 || MozillaFireFoxRev13 || MozillaFireFoxRev14 || MozillaFireFoxRev15;
var IE4=navigator.userAgent.toLowerCase().indexOf("msie 4")!=-1?true:false;
	
//Function ShowProgressInNewWindow() to show progress bar in new window.
function ShowProgressInNewWindow(uniqueID, URL, width, height)
{
	var l = (screen.width - width) / 2;
	var t = (screen.height - height) / 2;
	var winParams = 'toolbar=no,scrollbars=no,location=no,status=no,menubar=no,resizable=yes';
	winParams += ',width=' + width + ',height=' + height + ',left=' + l + ',top=' + t;
	var fullURL = URL;
	thePos = fullURL.indexOf("UploadID");
	//Cut earlier added UploadID.
	if (thePos >= 1)
			fullURL = fullURL.substring(0, thePos-1);
	if(URL.indexOf("?")==-1)
		fullURL += '?UploadID=' + uniqueID;
	else
		fullURL += '&UploadID=' + uniqueID;	
	var newProgressWindow = window.open(fullURL, uniqueID, winParams);
	return newProgressWindow;
}

// Function that checks if ZIP file was selected and adds UnZIP? checkbox
function CheckAddUnZIP(fileInputObj, unZIPContObjID)
{
	var unZIPContObj = document.getElementById(unZIPContObjID);
	if(IsMatchExt(fileInputObj.value, new Array('.zip')))
	{						
		if(unZIPContObj)
			unZIPContObj.style.visibility = "visible";	
	}
	else
	{
		if(unZIPContObj)
			unZIPContObj.style.visibility = "hidden";
	}
}

// Function to remove file input
function RemoveFileInput(objToRemoveID)
{
	if(Opera6 || Opera5)				
	{
		window.alert("This feature not supported in your browser!");
		return;				
	};
	var ObjToRemove = document.getElementById(objToRemoveID);
	var parentObj = ObjToRemove.parentNode;	
	parentObj.removeChild(ObjToRemove);
}

// Function to clear file input
function ClearInputField(inputID) 
{
	if(Opera4 || Opera5 || Opera6 || Opera7 || Netscape4 || Netscape6)				
	{
		window.alert("This feature not supported in your browser!");
		return;				
	};
	var inputObj = document.getElementById(inputID);
	var parentObj = inputObj.parentNode;	
	var nextObj = inputObj.nextSibling;
	var EmptyFileInput;

	if(!Opera && inputObj.outerHTML)
	{				
		
		EmptyFileInput = document.createElement(inputObj.outerHTML);
		parentObj.removeChild(inputObj);
		parentObj.insertBefore(EmptyFileInput, nextObj);
		
	}
	else //for FireFox that doesn't supports outerHTML property
	{						
		var tmpParentObj = document.createElement('font');										
		tmpParentObj.appendChild(inputObj);
		var innerHTMLCode = tmpParentObj.innerHTML;
		tmpParentObj.removeChild(inputObj);
		EmptyFileInput = document.createElement('font');
		EmptyFileInput.innerHTML = innerHTMLCode;					
		parentObj.insertBefore(EmptyFileInput.childNodes[0], nextObj);
		
	}				
}
//__________________________________________________________________________________________


//Functions for CANCEL UPLOAD button logic. START
function PowUploadCanCancel()
{
	return (window.stop || window.document.execCommand);
}

function InitCancelButton(cancelButtonID)
{
	var CancelButton = document.getElementById(cancelButtonID);
	if (PowUploadCanCancel())
	{
		if (CancelButton)
			CancelButton.style.visibility = "visible";		
	}
	else
	{
		if (CancelButton) 
			CancelButton.parentNode.removeChild(CancelButton);
	}	
}

function PowUploadGetParentWindow() 
{
	var mainWindow;
	if (window.opener) 
		mainWindow = window.opener;
	else 
		mainWindow = window.parent;
	return mainWindow;
}

function CancelUploadFromProgress(btnObjID) 
{
	var mainWindow = PowUploadGetParentWindow();
	if (mainWindow && mainWindow.stop)
		mainWindow.stop();
	else if (mainWindow && mainWindow.document && mainWindow.document.execCommand)
		mainWindow.document.execCommand('Stop');
	//Hide Cancel button and also botton in main window(should has the same ID as at progress page).
	if(typeof btnObjID != 'undefined' && btnObjID != '' && btnObjID != null)
	{
		if(mainWindow && mainWindow.document)
		{
			var btnMainCancel =  mainWindow.document.getElementById(btnObjID);
			if(btnMainCancel && btnMainCancel.style)
				btnMainCancel.style.visibility = "hidden";
		}
		var btnCancel =  document.getElementById(btnObjID);
		if(btnCancel && btnCancel.style)
			btnCancel.style.visibility = "hidden";
	}
	//Close progressbar window
	if(window && window.close)
		window.close();	
}


function CancelUploadFromMainWindow(btnObjID, progressWindowObj) 
{
	if (window.stop)
		window.stop();
	else if (window.document && window.document.execCommand)
		window.document.execCommand('Stop');
	//Hide Cancel button
	if(typeof btnObjID != 'undefined' && btnObjID != '' && btnObjID != null)
	{
		var CancelButton = document.getElementById(btnObjID);
		if(CancelButton && CancelButton.style)
			CancelButton.style.visibility = "hidden";
	}
	//Close Progress Bar window
	if(typeof progressWindowObj != 'undefined' && progressWindowObj != '' && progressWindowObj != null)
	{
		if(progressWindowObj && progressWindowObj.close)
			progressWindowObj.close();
	}
}
//Functions for CANCEL UPLOAD button logic. END
//__________________________________________________________________________________________


//Functions for CLIENT SIDE FILE TYPES VALIDATION logic. START
/*
	form - String ID of the Form or Form Object.
	TypesArray - Array of file types. Ex: new Array('.jpg', '.gif')
	checktype - String. Available values: 'include' or 'exclude' 
*/
function CheckTypes(form, TypesArray, checktype)
{				
	var formObj;
	if(typeof(form)=="string")
		formObj = document.getElementById(form);
	else	
		formObj = form;
	
	if(ValidateExtensions(formObj, TypesArray)) 
	{
		if(checktype.toUpperCase()=='INCLUDE')
			return true;
		else if(checktype.toUpperCase()=='EXCLUDE' || checktype.toUpperCase()=='EXCEPT')
		{
			window.alert('You selected forbidden file types');
			return false;
		}
	}
	else 
	{
		if(checktype.toUpperCase()=='EXCLUDE' || checktype.toUpperCase()=='EXCEPT')
			return true;
		else if(checktype.toUpperCase()=='INCLUDE')
		{
			window.alert('You selected forbidden file types');
			return false;
		}
	}			
}

function ValidateExtensions(formObj, TypesArray)
{	
	if(ScanParent(formObj, TypesArray))
	{
		return true;
	}
	else
	{
		return false;
	}
	return true;				  
}

function ScanParent(ObjToCheck, TypesArray)
{	
	var nodes;	
	if(ObjToCheck.children)
		nodes = ObjToCheck.children;
	else if(ObjToCheck.childNodes)
		nodes = ObjToCheck.childNodes;		
	for (var i=0; i<nodes.length; i++)
	{
		var childObj = nodes[i];
		if(IsFileInput(childObj))
		{
			var Ie = childObj.value;
			if (!IsMatchExt(Ie, TypesArray))
			{				
				return false;
			}
		}
		else
		{
			if(ScanParent(childObj, TypesArray)==false)
				return false;
		};
	}
	return true;
};
  
function IsFileInput(obj)
{
	if (obj && obj.type && obj.type.toUpperCase()=="FILE" && obj.tagName && obj.tagName.toUpperCase()=="INPUT" )
		return true;
	return false;
};
 
function IsMatchExt(value, TypesArray)
{
	if (value=="")return true;
	for (var j=0; j<TypesArray.length; j++)
	{
		var ext=TypesArray[j].substring(1);
		if (EndsWith(replace(value,'"',''), ext))
		{
			return true;
		}
	}
	return false;
};
//Functions for CLIENT SIDE FILE TYPES VALIDATION logic. END
//__________________________________________________________________________________________


//Some helpfull functions
function EndsWith(str, end)
{
	var n=str.toUpperCase().lastIndexOf(end.toUpperCase())
	if( n==-1 || n!=(str.length-end.length))
		return false;
	return true	
}

function replace(str, symbol, symbol2)
{
	var s=str.toUpperCase();
	var i;
	i=s.indexOf(symbol.toUpperCase(), 0);
	while (i>=0)
	{
		s=s.substring(0,i) + symbol2 + s.substring(i+symbol.length, s.length)
		i=s.indexOf(symbol.toUpperCase(), i+ symbol2.length);
	}
	return(s)
}

