//////////////////////////////////////////////////////////////////////////////////
// set functions to work with a forms											//
// writed by Leonid Volkov /leon@catom.com/, Minicy Catom Ltd. /www.catom.com/	//
// updated by Kossovsky Alex feb 2006											//
// updated by Leonid Volkov may 11 2006											//
// v. 3.3, jul 11 2006															//
//////////////////////////////////////////////////////////////////////////////////

/////////// standard trim function - clean spaces, tabs and new line symbols at the beginning and the end of the string ////////
function trim(str)
{
	var lead = 0, trail = str.length - 1;
	while(str.charCodeAt(lead)  < 33) lead++;
	while(str.charCodeAt(trail)  < 33) trail--;
	return lead > trail ? '' : str.substring(lead, trail + 1);
}

function notValidCharsInValue(fldValue, fldNotValidChars)
{
	var notGoodChars = fldNotValidChars;
	var i = 0;
	for (i =0; i < fldValue.length; i++)
	{
		if (notGoodChars.indexOf(fldValue.charAt(i)) != -1)	return true; 
	}
	return false;
}

function ValidCharsInValue(fldValue, fldValidChars)
{
	var goodChars = fldValidChars;
	var i = 0;	

	for (i =0; i < fldValue.length; i++)
	{
		if (goodChars.indexOf(fldValue.charAt(i)) == -1) return false; 
	}
	return true;
}

////////// Check the Search forms //////////////
function checkSearch(frmObj)
{
	for (i=0; i<frmObj.length; i++)
	{
		if (frmObj[i].type.indexOf('text') == 0)
		{
			frmObj[i].value = trim(frmObj[i].value);
			if (frmObj[i].value.length == 0)
			{
				alert('Please type the keyword to search');
				frmObj[i].focus();
				return false;
				break;
			}
		}
	}
	return true;
}

////////// Check all other forms //////////////
function isValidEmail(strEmail)
{
	if (notValidCharsInValue(strEmail, "!#$%^&*()+=<>?/,\|~`\"[]") || strEmail.indexOf('@') <= 0 || strEmail.indexOf('.') <= 0) 
	{
		alert('Please type a valid e-mail address!');
		return false;
	}
	return true;
}

function isValidPhone(strPhone) 
{
	if (!ValidCharsInValue(strPhone, "0123456789()-+ ") || strPhone.length < 6)
	{
		alert('Please type a valid phone number!');
		return false;
	}
	return true;
}

function isNumber(strNumber) 
{
	if (!ValidCharsInValue(strNumber, "0123456789 "))
	{
		alert('Please type a valid number!');
		return false;
	} 
	return true;
}

function isHumanName(strName) 
{
	if (notValidCharsInValue(strName, "0123456789!@#$%^&*()_+=<>?/.,\|~`\"[]"))
	{
		alert('Please type a valid human name!');
		return false;
	} 
	return true;
}

function isValidCVFileName(fileName) 
{
	var strExt = fileName.substring(fileName.length - 4, fileName.length);
	strExt = strExt.toLowerCase();	
	if (strExt != ".txt" && strExt != ".rtf" && strExt != ".doc" && strExt != ".pdf")
	{
		alert('Please send a file in one of the following formats: \n \".txt\", \".rtf\", \".doc\", \".pdf\"!');
		return false;
	}
	return true;
}


function isValidPassword(curField)
{
	var strValue=curField.value;
	if ( notValidCharsInValue(strValue, "!#@$%^&*()_+=<>?/,\|~`\"[]") || strValue.length < 6 ) return false;
	return true;
}

function isValidUserName(curField)
{
	var strValue=curField.value;
	if ( notValidCharsInValue(strValue, "!#$%^&*() _+=<>?/,\|~`\"[]") || strValue.length < 6 ) return false;
	return true;
}

function isValidNickName(curField)
{
	var strValue=curField.value;
	if ( notValidCharsInValue(strValue, "!#@$%^&*()_+=<>?/,\|~`\"[]") || strValue.length < 6 ) return false;
	return true;
}


function containValidChars(curField)
{
	var curName = curField.name;
	var curFldType = String(curField.getAttribute('fldType')).toUpperCase();
	
	if (curFldType=='EMAIL')
	{ 
		return isValidEmail(curField.value); 
	}
	else if (curFldType=='PHONE' || curFldType=='FAX' || curFldType=='MOBILEPHONE' || curFldType=='CELLPHONE') 
	{ 
		return isValidPhone(curField.value); 
	}
	else if (curFldType=='NUMERIC' || curFldType=='ZIP')
	{ 
		return isNumber(curField.value); 
	}
	else if (curFldType=='FIRSTNAME' || curFldType=='FULLNAME' || curFldType=='LASTNAME' || curFldType=='MIDDLENAME') 
	{ 
		return isHumanName(curField.value); 
	}
	else if (curFldType=='CVFILE')
	{ 
		return isValidCVFileName(curField.value);
	}
	return true;
}

function showAlert(curField)
{
	if ( curField.verefication_alert!=undefined)
	{
		strAlert = curField.getAttribute('verefication_alert').toString();
		alert(strAlert);
	}
	else
	{
		strAlert = 'Please provide all required information';
		alert(strAlert);
	}
}

function checkForm(frmObj)
{
	var found;
	var i, ii;
	var curField, curName, curType;
	var isFilled, isRequired;	
	var passCounter = 0;
	var passField1;
	var curFldType;
	with(frmObj)
	{
		for (i = 0; i < elements.length; i++)
		{
			curField = elements[i];
			if (curField.disabled || curField.tagName == 'FIELDSET' || curField.tagName == 'OBJECT') continue;
			curField.value = trim(curField.value);
			curName = curField.name;
			curType = curField.type;
			isFilled =  trim(curField.value) != '' ? true : false;
			isRequired = String(curField.getAttribute('IsMandatory')).toUpperCase() == 'TRUE' ? true : false;
			curFldType = String(curField.getAttribute('fldType')).toUpperCase();

			if(curType == 'text' && isFilled && !containValidChars(curField))
			{
					openRelevantTab(curField, frmObj);
					curField.focus();
					curField.select();
					return false;
			}
			else if (elements[curName].length && isRequired &&  (curType == 'radio' || curType == 'checkbox'))
			{
				found = 0;
				for (ii = 0; ii < elements[curName].length; ii++)
				{
					if (elements[curName][ii].checked)
					{
						found = 1;
						break;
					}
				}
				if (found == 0)
				{
					showAlert(curField);
					openRelevantTab(curField, frmObj);
					elements[curName][0].focus();	
					//elements[curName][0].click();
					return false;
				}
			}
			else if (isRequired && curType == 'select-one')
			{
				if (curField.selectedIndex == 0)
				{
					showAlert(curField);
					openRelevantTab(curField, frmObj);
					curField.focus();
					return false;
				}
			}
			else if (isRequired && curType == 'select-multiple')
			{
				if (curField.selectedIndex == -1)
				{
					showAlert(curField);
					openRelevantTab(curField, frmObj);
					curField.focus();
					return false;
				}
			}
			else if (isRequired && (curType == 'text' || curType == 'textarea' || curType == 'password'))
			{
				if (!isFilled)
				{
					showAlert(curField);
					openRelevantTab(curField, frmObj);
					curField.focus();
					return false;
				}
				if ( curType == 'text' && curFldType=='USERNAME' && !isValidUserName(curField))
				{
					alert('Username length have to be more than 6 chars.');
					openRelevantTab(curField, frmObj);
					curField.focus();
					return false;
				}
				if ((curType == 'password' || curFldType=='PASSWORD') && !isValidPassword(curField))
				{
					alert('Password length have to be more than 6 chars.');
					openRelevantTab(curField, frmObj);
					curField.focus();
					return false;
				}
			}
			else if (isRequired && curType == 'hidden')
			{
				if (!isFilled)
				{
					showAlert(curField);
					openRelevantTab(curField, frmObj);
					eval(curField.getAttribute('errorEval'));
					return false;
				}
			}
			else if(curType == 'file' && isFilled && !containValidChars(curField))
			{
					openRelevantTab(curField, frmObj);
					curField.focus();
					curField.select();
					return false;
			}

			if ((curType == 'password' || curFldType=='PASSWORD') && curFldType!='ORIGINALPASSWORD' && passCounter == 0)
			{
				passCounter++;
				passField1 = curField;
			}
			else if ((curType == 'password' || curFldType=='PASSWORD') && curFldType!='ORIGINALPASSWORD' && passCounter == 1)
			{
				if (passField1.value != curField.value)
				{
					alert('The entered passwords do not match.\nPlease re enter them.');
					curField.value = "";
					openRelevantTab(curField, frmObj);
					passField1.focus();
					passField1.select();
					return false;
				}
			}
			
		}
	}
	return true;
}

function manualSubmit(frmObj)
{	
	if(checkForm(frmObj)) frmObj.submit();
}

function manualReset(frmObj)
{
	frmObj.reset();
}
//////////////// if the user check/uncheck 'All' checkbox ////////////////
function switchBoxesGroup(boxObj)
	{
		var bStatus = boxObj.checked;
		var parentObj = boxObj.form[boxObj.name];

		for(var i=1; i<parentObj.length; i++)
		{
			parentObj[i].checked = bStatus;
			parentObj[i].disabled = bStatus;
			boxObj.value = bStatus ? boxObj.value + arrBoxes[i].value + ', ' : '';
		}
		boxObj.title = bStatus ? 'Uncheck all' : 'Check all';
		if(boxObj.value.length > 0) boxObj.value = boxObj.value.substring(0, boxObj.value.length - 2);
	}
//////////////// if the user check/uncheck 'All' checkbox ////////////////
function switchBoxesGroupByContainerId(boxObj, strContainerId)
	{
		var bStatus = boxObj.checked;
		var parentObj = document.getElementById(strContainerId);
		var arrBoxes = parentObj.getElementsByTagName('INPUT');

		for(var i=1; i<arrBoxes.length; i++)
		{
			if (arrBoxes[i].type == 'checkbox' && arrBoxes[i].name == boxObj.name )
			{
				arrBoxes[i].checked = bStatus;
				arrBoxes[i].disabled = bStatus;
				boxObj.value = bStatus ? boxObj.value + arrBoxes[i].value + ', ' : '';
			}
		}
		boxObj.title = bStatus ? 'Uncheck all' : 'Check all';
		if(boxObj.value.length > 0) boxObj.value = boxObj.value.substring(0, boxObj.value.length - 2);
	}
//////////////// Setup - called on window.onload in init() function /////////////////////
function buttonsMouseEventHandler()
{
	if (!document.layers && document.forms && document.forms.length)
	{
		var i, ii;
		var curElem;
		var strTypes = 'button submit reset';
		for  (i = 0;i < document.forms.length; i++)
		{
			for (ii =0; ii < document.forms[i].length; ii++)
			{
				curElem = document.forms[i][ii];
				if (curElem.className && strTypes.indexOf(curElem.type) != -1)
				{
					curElem.onmouseover = curElem.onfocus = buttonOver;
					curElem.onmouseout = curElem.onblur = buttonOut;
				}
			}
		}
	}
}
function buttonOver() {if (this.className.indexOf('Over') == -1) this.className += 'Over'}
function buttonOut() {if (this.className.indexOf('Over') != -1) this.className = this.className.substring(0,this.className.indexOf('Over'))}
///////////// set focus to the first text field of the first form on page //////////////
function setFocusToField()
{	
	if (!document.layers && document.forms && document.forms.length)
	{
		var frmObj = document.forms[0]; 
		for (i=0; i<frmObj.length; i++)
		{
			if (frmObj[i].type == 'text' && !frmObj[i].disabled)
			{
				frmObj[i].focus();
				break;
			}
		}
	}
}

////////////// onload function ///////////////////////////////////////
//function init()
//{
//	//buttonsMouseEventHandler();
//	//setFocusToField();
//}
//addEvent function placed in general.js
//addEvent(window, 'load', init);


////////////////////////////////////////////////////////////
// this function toggles tabs and related content divs on same page
////////////////////////////////////////////////////////////

function toggleTab(tabID, objA)
{
	//open related div by ID
	var arrAllDivs = document.getElementsByTagName('DIV');
	for (i=0; i<arrAllDivs.length; i++)
	{
		if (arrAllDivs[i].id.indexOf('tabDiv_') == 0) arrAllDivs[i].style.display = 'none';
	}
	document.getElementById('tabDiv_'+tabID).style.display = 'block';

	//set current tab selected ( <TD class="this"> )
	var objTabTd = objA.parentNode.parentNode.firstChild;
	do
	{
		objTabTd.className="";
		objTabTd = objTabTd.nextSibling; 
	}
	while (null != objTabTd)

	objA.parentNode.className = "this";
}

////////////////////////////////////////////////////////////
// if we need open a tab immediately onload
// place this JS+ASP code on the page:
// addEvent(window, 'load', function(){toggleTabOnLoad(<%=strCurrentTab%>)});
////////////////////////////////////////////////////////////
function toggleTabOnLoad(tabID)
{
	if(document.getElementById('tabA_' + tabID))
	{
		toggleTab(tabID, document.getElementById('tabA_' + tabID))
	}
}

//////////////////////////////////////////////////////////////////////
// if we work with tabs, we must first open the relevant tab
// the function begins work if we have any tab with 'tabDiv_' string in ID
// each div with 'tabDiv_X' string in ID must have related '<a id="tabA_X">' element
//////////////////////////////////////////////////////////////////////
function openRelevantTab(curObj, objForm)
{
	var arrDivs = objForm.getElementsByTagName('DIV');
	var bTabsFound = false;
	var lDivIdNum;
	for (i = 0; i < arrDivs.length; i++ )
	{
		if(arrDivs[i].id.indexOf('tabDiv_') == 0)
		{
			bTabsFound = true;
			break;
		}
	}
	if(bTabsFound)
	{
		while(curObj.tagName != 'FORM' && curObj.style.display != 'none') curObj = curObj.parentNode;
		if(curObj.style.display == 'none' && curObj.id.indexOf('tabDiv_') == 0)
		{
			lDivIdNum = curObj.id.substring(curObj.id.lastIndexOf('_')+1, curObj.id.length);
			toggleTab(lDivIdNum, document.getElementById('tabA_' + lDivIdNum));
		}
	}
}

function ChooseDivForYesNoQ(value,divToShow,divToHide)
{
	//return false;
	if (value==1)
	{
		document.getElementById(divToShow).style.display="block";
		document.getElementById(divToHide).style.display="none";
		document.getElementById("hfldQ_1_b_16").value = ""
		document.getElementById("hfldQ_1_b_17").value = ""
		document.getElementById("hfldQ_1_b_18").value = ""
		document.getElementById("hfldQ_1_b_19").value = ""
		document.getElementById("hfldQ_1_b_20").value = ""
		document.getElementById("hfldQ_1_b_21").value = -1
		document.getElementById("hfldQ_1_b_22").value = 225
		document.getElementById("hfldQ_1_b_23").value = ""
		document.getElementById("hfldQ_1_b_24").value = ""
		
		
	}
	else
	{
		document.getElementById(divToHide).style.display="block";
		document.getElementById(divToShow).style.display="none";
		document.getElementById("hfldQ_1_b_2").value = ""
		document.getElementById("hfldQ_1_b_3").value = ""
		document.getElementById("hfldQ_1_b_4").value = ""
		document.getElementById("hfldQ_1_b_5").value = ""
		document.getElementById("hfldQ_1_b_6").value = ""
		document.getElementById("hfldQ_1_b_7").value = ""
		document.getElementById("hfldQ_1_b_8").value = ""
		document.getElementById("hfldQ_1_b_9").value = 225
		document.getElementById("hfldQ_1_b_10").value = -1
		document.getElementById("hfldQ_1_b_11").value = -1
		document.getElementById("hfldQ_1_b_12").value = 226
		document.getElementById("hfldQ_1_b_13").value = 225
		document.getElementById("hfldQ_1_b_14").value = ""
		document.getElementById("hfldQ_1_b_15").value = ""
	}
	if (value == -1)
	{
		document.getElementById(divToHide).style.display="none";
		document.getElementById(divToShow).style.display="none";
	}
	
	ChooseQ11(document.getElementById("hfldQ_1_b_1").value)
	
}

function ChooseDivForYesNoQ5(value,divToShow,divToHide)
{
	
	if (value==1)
	{
		document.getElementById(divToShow).style.display="block";
		document.getElementById(divToHide).style.display="none";
		
	}
	else
	{
		document.getElementById(divToHide).style.display="block";
		document.getElementById(divToShow).style.display="none";
		
	}
	if (value == -1)
	{
		document.getElementById(divToHide).style.display="none";
		document.getElementById(divToShow).style.display="none";
	}
	
	ChooseQ11(document.getElementById("hfldQ_1_b_1").value)
	
}

function ChooseDivForYesNoQ2(value,divToShow,divToHide)
{
	//alert(document.getElementById(divToHide).style.display)
	if (value==1)
	{
		document.getElementById(divToShow).style.display="block";
		document.getElementById(divToHide).style.display="none";
	}
	else
	{
		document.getElementById(divToHide).style.display="block";
		document.getElementById(divToShow).style.display="none";
	}
	if (value == -1)
	{
		document.getElementById(divToHide).style.display="none";
		document.getElementById(divToShow).style.display="none";
	}
}

function ShowTextBox(value,valueToCompare,fld)
{
	if (value==valueToCompare)
	{
		document.getElementById(fld).style.display="block";
	}
	else
	{
		document.getElementById(fld).style.display="none";
	}
}

function ShowIsBuild(value)
{
	if ((value == 202) || (value == 203))
	{
		document.getElementById("IsBuild").style.display="block";
	}
	else
	{
		document.getElementById("IsBuild").style.display="none";
	}
}
function IsLive()
{
	var isCompany = document.getElementById("hfldQ_1_b_1").value
	//alert(isCompany)
	var isLive
	if (isCompany == 1)
	{
		isLive = document.getElementById("hfldQ_1_b_9").value
	}
	else
	{
		isLive = document.getElementById("hfldQ_1_b_22").value
	}
	if ((isLive == 186 ) || (isLive == 187 ) || (isLive == 188 ) )
	{
		document.getElementById("IsLive").style.display="block";
		document.getElementById("IsLive2").style.display="block";
		document.getElementById("IsLive3").style.display="block";
		//document.getElementById("IsLive4").style.display="block";
	}
	else
	{
		document.getElementById("IsLive").style.display="none";
		document.getElementById("IsLive2").style.display="none";
		document.getElementById("IsLive3").style.display="none";
		//document.getElementById("IsLive4").style.display="none";
	}
}

function ShowIsExperiment(value)
{
	if ((value == 211) || (value == 212))
	{
		document.getElementById("IsExperiment").style.display="block";
	}
	else
	{
		document.getElementById("IsExperiment").style.display="none";
	}
	if ((value == 212))
	{
		document.getElementById("IsExperimentClinic").style.display="block";
	}
	else
	{
		document.getElementById("IsExperimentClinic").style.display="none";
	}
}

function ShowIsPatent(value)
{
	if ((value == 1))
	{
		document.getElementById("IsPatent").style.display="block";
	}
	else
	{
		document.getElementById("IsPatent").style.display="none";
	}
}
function ChooseQ11(value)
{
	if ((value == 1))
	{
		document.getElementById("hfldQ_1_b_11Yes").style.display="block";
	}
	else
	{
		document.getElementById("hfldQ_1_b_11Yes").style.display="none";
	}
}

function showIsInnovation(value)
{
	if ((value == 1))
	{
		document.getElementById("IsInnovation").style.display="block";
	}
	else
	{
		document.getElementById("IsInnovation").style.display="none";
	}
}
function markAsThis(obj)
{
	var objTabTd = document.getElementById(obj).parentNode.parentNode.firstChild;
	do
	{
		objTabTd.className="";
		objTabTd = objTabTd.nextSibling; 
	}
	while (null != objTabTd)
	document.getElementById(obj).parentNode.className = "this";
}

function checkHiCenterForm(frm,message)
{
	if (document.getElementById("hfldQ_1_a_1").value == "")
	{
		showAlert(document.getElementById("hfldQ_1_a_1"))
		toggleTab(1, document.getElementById("tab_1"));
		return false;
	}
	if (document.getElementById("hfldQ_1_a_5").value == "")
	{
		showAlert(document.getElementById("hfldQ_1_a_5"))
		toggleTab(1, document.getElementById("tab_1"));
		return false;
	}
	if (document.getElementById("hfldQ_1_a_2").value == "")
	{
		showAlert(document.getElementById("hfldQ_1_a_2"))
		toggleTab(1, document.getElementById("tab_1"));
		return false;
	}
	if (document.getElementById("hfldQ_1_a_3").value == "")
	{
		showAlert(document.getElementById("hfldQ_1_a_3"))
		toggleTab(1, document.getElementById("tab_1"));
		return false;
	}
	if (document.getElementById("hfldQ_1_a_4").value == "")
	{
		showAlert(document.getElementById("hfldQ_1_a_4"))
		toggleTab(1, document.getElementById("tab_1"));
		return false;
	}
	if (!isValidEmail(document.getElementById("hfldQ_1_a_4").value))
	{
		//showAlert(document.getElementById("hfldQ_1_a_4"))
		toggleTab(1, document.getElementById("tab_1"));
		return false;
	}
	if(document.getElementById("hfldQ_2_a_1").value.length > 600)
	{
		showAlert(document.getElementById("hfldQ_2_a_1"));
		toggleTab(2, document.getElementById("tab_2"));
		return false;
	}
	if(document.getElementById("hfldQ_2_a_2").value.length > 600)
	{
		showAlert(document.getElementById("hfldQ_2_a_2"));
		toggleTab(2, document.getElementById("tab_2"));
		return false;
	}
	if(document.getElementById("hfldQ_3_a_1").value.length > 300)
	{
		showAlert(document.getElementById("hfldQ_3_a_1"));
		toggleTab(3, document.getElementById("tab_3"));
		return false;
	}
	if(document.getElementById("hfldQ_3_a_2").value.length > 300)
	{
		showAlert(document.getElementById("hfldQ_3_a_2"));
		toggleTab(3, document.getElementById("tab_3"));
		return false;
	}
	if(document.getElementById("hfldQ_3_a_3").value.length > 300)
	{
		showAlert(document.getElementById("hfldQ_3_a_3"));
		toggleTab(3, document.getElementById("tab_3"));
		return false;
	}
	if(document.getElementById("hfldQ_5_a_1").value.length > 300)
	{
		showAlert(document.getElementById("hfldQ_5_a_1"));
		toggleTab(5, document.getElementById("tab_5"));
		return false;
	}
	if(document.getElementById("hfldQ_6_a_1").value.length > 300)
	{
		showAlert(document.getElementById("hfldQ_6_a_1"));
		toggleTab(6, document.getElementById("tab_6"));
		return false;
	}
	if(!confirm(message))
	{
		return false;
	}
}

function checkHiCenterFormII(frm)
{
	return true;
}

function validateExp(fld,RegExpresion,errorMessage)
{
    var RegExPattern = RegExpresion ;
    var errorMessage = errorMessage; 
    if ((fld.value.match(RegExPattern)) || (fld.value == ""))
    {
         
    } 
    else
    {
        alert(errorMessage);
        fld.focus();
    } 
}

 function maxLength(field,maxChars)
 {
       if(field.value.length >= maxChars) {
          event.returnValue=false; 
          alert("more than " +maxChars + " chars");
          return false;
       }

 }  

 function maxLengthPaste(field,maxChars)
 {
       event.returnValue=false;
       if((field.value.length +  window.clipboardData.getData("Text").length) > maxChars) {
         alert("more than " +maxChars + " chars");
         return false;
       }
       event.returnValue=true;
 }
