//  Javascript to be used with Standard_ and compatible styles
//  (c) 2006 Cogix Corporation
//  May only be used as a component of a licensed Cogix product

function vwfOnSubmit() {
if ( ValidatorArrayProperties == null
        || ValidatorArrayProperties.ValidatorSuppress == true
        || ValidatorArray == null ) // if broken, don't crash
    return true;
for ( var k = 0 ; k < ValidatorArray.length ; k ++ ) {
    var validatorstring = ValidatorArray [k] ;
    var chk = eval ( validatorstring );
    if ( chk == false )
        return false;
}
return true;
}


function checkQuestionAnswered (group,empty,valuelow,valuehigh,valuetype) {
    if ( group == null || empty == null || valuelow == null || valuehigh == null || valuetype == null )
        return true;
    var emptyCheck = empty != " ";
    var rangeCheck = valuelow != "" || valuehigh != "" ;
    var numericCheck = valuetype == "2";

    var bgroup = false;
    if ( group.type == "select-one") {
        if ( ! emptyCheck || group.value != "" )
            return true;
    }
    else if ( group.type == "textarea") {
        if ( ! emptyCheck || group.value != "" )
            return true;
    }
    else if ( group.type == "text") {
        if ( ! emptyCheck ) {
            if ( group.value == "" ) {
                return true;
            }
            return checkQuestionAnswerInRange ( group, valuelow, valuehigh, valuetype );
        }

        if ( group.value != "" ) {
            return checkQuestionAnswerInRange ( group, valuelow, valuehigh, valuetype );
        }

    }
    else if ( group.type == "oldtext") {
        if ( ! emptyCheck || group.value != "" )
            return true;
    }	
    else if ( group.type == "checkbox" ) {
        if ( ! emptyCheck || group.checked )
           return true;
    }
    else if ( group.type == null ) { // radio and multi element checkbox groups
        if ( ! emptyCheck )
            return true;
        bgroup = true;
        for ( var k = 0 ; k < group.length; k ++ )
            if ( group[k].checked )
                return true;
    }
    else
        return true;
    alert (i18nArray['requiredanswer']);
    window.focus();
    if ( bgroup )
        group[0].focus();
    else
        group.focus();
    return false;
}


function checkQuestionAnswerInRange ( valuelement, valuelow, valuehigh, valuetype ) {
    if ( valuelow == "" && valuehigh == "" )
        return true;
    var valued = valuelement.value;
    var intcompare = valuetype == "2";
    var intvaluelow = 0;
    var intvaluehigh = 0;
    var intvalued = 0;
    var msg = i18nArray['entervaluebetween'];
    if ( valuelow == "" )
        msg = i18nArray['entervaluenogreater'];
    if ( valuehigh == "" )
        msg = i18nArray['entervaluenoless'];
    msg = msg.replace (/%1/, valuelow );
    msg = msg.replace (/%2/, valuehigh );
    if ( intcompare ) {
        intvalued = Number ( valued );
        if ( isNaN (intvalued) ) {
            alert ( msg ); valuelement.focus();
            if ( window != null && window.event != null )
                window.event.returnValue = false;
            return false;
        }
        intvaluelow = Number ( valuelow );
        intvaluehigh = Number ( valuehigh );
    }
    var bOk = true;
    if ( valuelow != null && valuehigh != null ) {
        if ( ! intcompare ) {
            if ( valuelow != "" && valued < valuelow )
                bOk = false;
            if ( valuehigh != "" && valued > valuehigh )
                bOk = false;
        }
        else {
            if ( valuelow != "" && intvalued < intvaluelow )
                bOk = false;
            if ( valuehigh != "" && intvalued > intvaluehigh )
                bOk = false;
        }
    }
    if ( bOk )
        return true;
    vwfAlertAndFocus(msg,valuelement);
    return false;
}

function vwfAlertAndFocus ( msg, element ) {
    if ( msg != null )
        alert (msg);
    if ( window != null )
        window.focus();
    element.focus();
/*
    if ( window != null && window.event != null )
        window.event.returnValue = false;
*/
}

function vwfQhelper(d) {
	var h = document.getElementById ( d );
	if ( h == null )
		return;
	var v = h.style.display;
	var flip = v == 'none' ? 'block' : 'none';
	h.style.display = flip;
}

function vwfQlengthchecker(txt,slimit) {
	if ( slimit == null || ''==slimit )
		return;
	var limit = 0 + slimit;
	var nulength = txt.value.length;
	if ( nulength > limit )
		txt.value = txt.value.substring (0,limit);
}


function vwfTxtAdjustHeight (elemt) {
    if ( elemt == null || elemt.cols == null )
        return;
	var TxtMinCols = 10;
	var TxtMinRows = 2;
    var cols = elemt.cols;
    if ( cols < TxtMinCols )
        return;
    var lines = elemt.value.split('\n');
    var nlines = 0;
    for ( var k=0; k < lines.length; k++ ) {
        var thisline = lines [k];
        var linesinthisline = Math.floor ( ( thisline.length + cols - 1 ) / cols ) ;
        if ( linesinthisline == 0 )
            linesinthisline = 1;
        nlines += linesinthisline;
    }
    if ( nlines < TxtMinRows )
        nlines = TxtMinRows ;
    if ( nlines != elemt.rows ) {
        elemt.rows = nlines;
    }
}

function vfRadio (f,elname,bOther,skipTo) { return; }
function vfRadioOther (f,elname,bOther,skipTo) {
   for ( var k = 0 ; k < f.elements.length; k++ ) {
      var e = f.elements[k];
      if ( ! bOther) {
         if ( e != null && e.name==elname && e.type == "text" ) {
            e.value = "";
            break;
            }
         }
      else {
         if ( e != null && e.name==elname && e.type == "radio" && e.value == "") {
            e.checked = true;
            break;
         }
      }
   }
}

function Cogix_Print_Adjustments (div) {
    if ( document.all ) {   //IE
        // convert fieldset attributes
        if ( ! div )
            return;
        var fsets = div.getElementsByTagName('fieldset')
        if ( ! fsets || fsets.length < 1 )
            return;
        for ( var k =  0; k < fsets.length; k++ ) {
            var fs = fsets [k];
            if ( fs.style.borderStyle == 'none' )
                fs.style.borderWidth = 0;
        }
    }
}



