var g_hasVars2Pack = false;
var g_sPrefix = '';
var g_sPP;

var g_nCounter = 0;

function forceValue( i_sKey, i_sVal )
{
    var re = new RegExp( "{" + i_sKey + ";[^}]*}" );
    if ( re.test( g_sPP ) )
        g_sPP = RegExp.leftContext + "{" + i_sKey + ";" + i_sVal + "}" + RegExp.rightContext;
}

function linktopage( i_pageURL )
{
    var sURL = i_pageURL;
    if ( g_hasVars2Pack )
    {
        for ( var idxVar = 1; idxVar < g_arVarNames.length; idxVar++ )
        {
            var sValue = "";
            if ( g_arVarTypes[ idxVar ] == "t"  || g_arVarTypes[ idxVar ] == "d" )
                sValue = escape( getField( g_arVarNames[ idxVar ] ).value );
            else if ( g_arVarTypes[ idxVar ] == "c" )
                sValue = ( getField( g_arVarNames[ idxVar ] ).checked ? "y" : "n" );
            else if ( g_arVarTypes[ idxVar ] == "l" )
                sValue = getField( g_arVarNames[ idxVar ] ).selectedIndex;
            // tbi : other types
        
            var re = new RegExp( "{" + g_arVarNames[ idxVar ] + ";[^}]*}" );
            if ( re.test( g_sPP ) )
                g_sPP = RegExp.leftContext + "{" + g_arVarNames[ idxVar ] + ";" + sValue + "}" + RegExp.rightContext;
            else 
                g_sPP += "{" + g_arVarNames[ idxVar ] + ";" + sValue + "}";
        }
        sURL += "&pp=" + g_sPP;
    }
    else if ( g_sPP != "" )
        sURL += "&pp=" + g_sPP;   
		
	if ( g_nCounter > 0 )
		sURL += "&c=" + g_nCounter;
		
    location.href = sURL;
}

function linkto( i_pageid )
{
    linktopage( "showpage" + g_sPrefix + ".php?pageid=" + i_pageid ); 
}

function getHighestIndexedField( i_sFieldName )
{
    var nHighestIndex = -1;
    var eltWithHighestIndex = null;
    
    var re = new RegExp( "^" + i_sFieldName + "([0-9]+)$" );
    
    var elts = getAllFields();
    var idxElt;
    for ( idxElt = 0; idxElt <  elts.length; idxElt++ )
        if ( re.exec( elts[ idxElt ].name ) )
            if ( parseInt( RegExp.$1 ) > nHighestIndex )
            {
                nHighestIndex = parseInt( RegExp.$1 );
                eltWithHighestIndex = elts[ idxElt ];
            }
    return eltWithHighestIndex;
}

