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)
}
//Form Validators
//-------------------------------------------------------------------------------------------
function validateEmpty(fld) {
    var error = "";
 
    if (fld.value.length == 0) {
        fld.style.background = 'Yellow'; 
        error = "The required field has not been filled in.\n"
    }else {
        fld.style.background = 'White';
    } 
    return error;  
}
function validatePhone(fld) {
    var error = "";
    var stripped = fld.value.replace(/[\(\)\.\-\ ]/g, '');    

   if (fld.value == "") {
        error = "You didn't enter a phone number.\n";
        fld.style.background = 'Yellow';
    } else if (isNaN(parseInt(stripped))) {
        error = "The phone number contains illegal characters.\n";
        fld.style.background = 'Yellow';
    } else if (!(stripped.length == 10)) {
        error = "The phone number is of wrong length. Make sure you included an area code.\n";
        fld.style.background = 'Yellow';
    }else {
        fld.style.background = 'White';
    }
    return error;
}
function trim(s)
{
  return s.replace(/^\s+|\s+$/, '');
}
function validateEmail(fld) {
    var error="";
    var tfld = trim(fld.value);                        // value of field with whitespace trimmed off
    var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
   
    if (fld.value == "") {
        fld.style.background = 'Yellow';
        error = "You didn't enter an email address.\n";
    } else if (!emailFilter.test(tfld)) {              //test email for illegal characters
        fld.style.background = 'Yellow';
        error = "Please enter a valid email address.\n";
    } else if (fld.value.match(illegalChars)) {
        fld.style.background = 'Yellow';
        error = "The email address contains illegal characters.\n";
    } else {
        fld.style.background = 'White';
    }
    return error;
}
function validateNotes(fld) {
    var error = "";
 
    if (fld.value.length == 0){
        fld.style.background = 'Yellow'; 
        error = "The required field has not been filled in.\n"
    } else if(fld.value.length >1500){
        fld.style.background = 'Yellow';
        error = "Notes exceed maximum characters.\n";
    } else {
        fld.style.background = 'White';
    }
    return error;  
}
