
function sendToFriend()
{
        var strPath = '../userdata/sendtofriend.asp?DBID=' + lDatabaseID + '&LNGID=' + lLanguageID;
        var sendToFriendWin = window.open(strPath,'PopUp','width=520,height=500,scrollbars,resizable');
        sendToFriendWin.focus();
}

var ddName = 'Answer';
var ddClickToOpen = 'Click to open the';
var ddClickToClose = 'Click to close the';
if(document.getElementById)
{
        //document.write('<link rel="stylesheet" href="../css/style.css" type="text/css" media="screen">');
}
///////////////Open/Close DD for FAQ////////////////

function closeOpenDescription(e)
{
        if (ddName != 'stopIt')
        {
                var sourceEl = document.getElementById && !document.all ? e.target : event.srcElement;
                var targetEl;
                if(sourceEl.tagName != 'DT') sourceEl = sourceEl.parentNode;
                //alert(sourceEl.tagName);
                if(sourceEl.tagName == 'DT')
                {
                        targetEl = sourceEl.nextSibling.tagName == 'DD' ? sourceEl.nextSibling : sourceEl.nextSibling.nextSibling;
                        targetEl.style.display = targetEl.style.display == 'block' ? 'none' : 'block';
                        sourceEl.title = sourceEl.title == ddClickToOpen + ' ' + ddName ? ddClickToClose + ' ' + ddName : ddClickToOpen + ' ' + ddName;
                }
                //alert(targetEl.tagName);
        }
}

function makeDTOver(e)
{
                var sourceEl = document.getElementById && !document.all ? e.target : event.srcElement;
                var targetEl;
                if(sourceEl.tagName != 'DT') sourceEl = sourceEl.parentNode;
                if(sourceEl.tagName == 'DT')
                {
                        sourceEl.style.textDecoration = sourceEl.style.textDecoration == 'underline' ? 'none' : 'underline';
                }
}

if(document.getElementById)
{
        document.onclick = closeOpenDescription;
        document.onmouseover = makeDTOver;
        document.onmouseout = makeDTOver;
}

function openAll()
{
        var curElement;
        for(i=0; i<document.getElementsByTagName('DD').length; i++)
        {
                curElement = document.getElementsByTagName('DD').item(i);
                curElement.style.display = 'block';
                curElement.previousSibling.title = ddClickToClose + ' ' + ddName;
        }
}

function closeAll()
{
        var curElement;
        for(i=0; i<document.getElementsByTagName('DD').length; i++)
        {
                curElement = document.getElementsByTagName('DD').item(i);
                curElement.style.display = 'none';
                curElement.previousSibling.title = ddClickToOpen + ' ' + ddName;
        }

}



/////////// 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);
        }
}

/////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////  checkForm   ////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
// Checks all mandatory inputs in a form...

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;
}




////////////////////////////////////////////////////////////
// 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));
                }
        }
}


