var TestMode = SessionGet('testmode');

function    ShowSearch(id)
{
    SessionSet('spoffer', id);    
    //MinimizeTopDest();
    //MinimizeLastMin();

    if (document.forms['loginfrm'])
    {
        document.forms['loginfrm'].elements['anonymous'].checked = true;
        DoLogin();
    }
    else
    {
        MaximizeSearch();
        InitSearchForm(id);
        PackTypeSelected();
    }
}
function    DisplayConfirm(y, n, txt)
{
    CoverBody(15);
    ShowElement('iconfirm');
    ShowElement('confirm');
    ReadForm ('confirm', 'confirm', '&msgtext=' + txt);
    document.getElementById('ConfirmYes').onclick = y;    
    document.getElementById('ConfirmNo').onclick = n;    
}

function    ClearConfirm()
{
    HideElement('confirm', true);
    HideElement('iconfirm');
    ShowBody();
}


function MoveDiv(id, x, y, md)
{
    var obj = document.getElementById(id);
    if (obj == null) return;
    var orgx = obj.offsetLeft;
    var orgy = obj.offsetTop;

    var stepx = x/20;
    var stepy = y/20;


    if (md == -1)
    {
        obj.style.left = orgx + x;
        obj.style.top  = orgy + y;
    }
    else    
        MoveIt(id, orgx, orgy, stepx, stepy, 1);

}

function MoveIt(id, ox, oy, sx, sy, cnt)
{
   
    if (cnt > 20) return;
    var posx = ox + Math.round(sx * cnt);
    var posy = oy + Math.round(sy * cnt);
    
    var obj = document.getElementById(id);
    obj.style.left = posx;
    obj.style.top = posy;
    
    var ncnt = cnt + 1;
    setTimeout("MoveIt('" + id + "'," + ox + "," + oy + "," + sx + "," + sy + "," + ncnt + ");", 1);  
}

function ServerCall(funcname, parms, rv)
{
    var HttpCall = InitHttpReq();
    if (HttpCall == null)
        return -1;
    
    DisplayWait();
    
    var prms = 'funcname=' + funcname;
    for (k in parms)
        prms += '&' + k + '=' + Escape(parms[k]);

    HttpCall.open("POST", "servercall.php", false);
    HttpCall.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    HttpCall.send(prms);  

    rt = HttpCall.responseText;
    
    exp = /<ecode>(.+)<\/ecode><etext>(.*)<\/etext><fid>(.*)<\/fid><fvalue>(.*)<\/fvalue>/;
    
    var vl = rt.match(exp);
    
    ClearWait();
        
    if (vl == null)
    {
        return -1;
    }

    if (rv != undefined)
    {
        rv.value = vl[4].replace(/<br>/g, "\n");
    }

    if (vl[1] == 0)
    {
        return 0;
    }

    DisplayError(vl[2]);
 
    var dobj;
    if (vl[3] != '')
       if ((dobj = document.getElementById(vl[3])) != null)
       {
           dobj.value = vl[4];
       }
        
    return vl[1];
        
}

function    Escape(s)
{
    return escape(s).replace('+', '%2b');

}

function SessionClear(k1, k2)
{
    var HttpSes = InitHttpReq();
    if (HttpSes == null)
        return;
    
    var prms;
    if (k2 === undefined)
        prms = 'action=clear&key=' + k1;
    else
        prms = 'action=clear&key=' + k1 + '&subkey=' + k2;
    
    HttpSes.open("POST", "sessionvars.php", false);
    HttpSes.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    HttpSes.send(prms);  

}

function SessionSet(k, v, k1)
{
    var HttpSes = InitHttpReq();
    if (HttpSes == null)     
        return;
    
    HttpSes.open("POST", "sessionvars.php", false);
    HttpSes.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    
    var prms;
    if (k1 === undefined)
        prms = 'action=set&key=' + k + '&value=' + escape(v);
    else
        prms = 'action=set&key=' + k + '&value=' + escape(v) + '&subkey=' + k1;
    
    
    HttpSes.send(prms);  
}

function SessionGet(k1, k2)
{
    var HttpSes = InitHttpReq();
    if (HttpSes == null)
        return;
    
    var prms;
    if (k2 === undefined)
        prms = 'action=get&key=' + k1;
    else
        prms = 'action=get&key=' + k1 + '&subkey=' + k2;
    
    HttpSes.open("POST", "sessionvars.php", false);
    HttpSes.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    HttpSes.send(prms);  

    return HttpSes.responseText.substr(2);
}

function ObjGet(k1, k2, k3, k4)
{
    var HttpSes = InitHttpReq();
    if (HttpSes == null)
        return;
    
    var prms;
    prms = 'action=obj&k1=' + k1 + '&k2=' + k2 + '&k3=' + k3 + '&k4=' + k4;
    
    HttpSes.open("POST", "sessionvars.php", false);
    HttpSes.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    HttpSes.send(prms);  

    return HttpSes.responseText.substr(2);
}

function HideElement(id, md)
{
    if (document.getElementById(id) == null) return;
    document.getElementById(id).style.display = 'none';
    
    if (md == true)
        document.getElementById(id).innerHTML = '';
    
    if (document.getElementById('i' + id) == null) return;
    document.getElementById('i' + id).style.display = 'none';
    
}
function ShowElement(id)
{
    if (document.getElementById('i' + id))
       document.getElementById('i' + id).style.display = 'inline';
    if (document.getElementById(id))
       document.getElementById(id).style.display = 'inline';
}

function AddStyle(txt, frm)
{
    var cssid = 'css' + frm;
    if (TestMode != 1) 
        if (document.getElementById(cssid) != null)
        {
            return;
        }

    var headID = document.getElementsByTagName("head")[0];
    var cssNode = document.createElement('style');
    cssNode.id = cssid;
    cssNode.setAttribute ('type', 'text/css');
    if (cssNode.styleSheet)
        cssNode.styleSheet.cssText = txt;
    else
    {
        var t = document.createTextNode(txt);
        cssNode.appendChild(t);
    }
    headID.appendChild(cssNode);
}

function AddScript(txt, frm)
{
    var scriptid = 'script' + frm;
    if (TestMode != 1)
        if (document.getElementById(scriptid) != null)
        {
            return;
        }

    var headID = document.getElementsByTagName("head")[0];
    var newScript = document.createElement('script');
    newScript.type = 'text/javascript';
    newScript.id = scriptid;
    
    newScript.text = txt;
    headID.appendChild(newScript);
    
    return;
}

function AddDScript(txt)
{
    var headID = document.getElementsByTagName("head")[0];
    var newScript = document.createElement('script');
    newScript.type = 'text/javascript';
    newScript.text = txt;
    headID.appendChild(newScript);
    
    return;
}


function isArray(o)
{
    if (o.constructor.toString().indexOf("Array") == -1)
        return false;
    return true;
}

function ReadForm(frm, prnt, parms)
{

    var targetDiv;

    if (prnt === undefined)
        prnt = frm;

    if ((targetDiv = document.getElementById(prnt)) == null)
    {
        return;
    }
       
    if (parms === undefined) parms = '';
    
    var HttpObj = InitHttpReq();
    if (HttpObj == null)
        return;

    DisplayWait();
    
    HttpObj.open("POST", "readform.php", false);
    HttpObj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

    var p;
    
    if (isArray(parms))
    {
        p = 'formname=' + frm;
        for (z in parms)
        {
            p+= '&' + z + '=' + parms[z];
        }
    }
    else
        p = 'formname=' + frm + parms;


    HttpObj.send(p);

    var rt = HttpObj.responseText;
    
    var exp = /@@\(css\)([.\S\s]*)@@\(\/css\)/;
    var vl = rt.match(exp);
    if (vl != null)
    {
        AddStyle (vl[1], frm);
    }
    
    exp = /@@\(html\)([.\S\s]*)@@\(\/html\)/;
    vl = rt.match(exp);
    if (vl == null)
        targetDiv.innerHTML =  '';
    else
        targetDiv.innerHTML = vl[1];

    exp = /@@\(script\)([.\S\s]*)@@\(\/script\)/;
    vl = rt.match(exp);
    if (vl != null)
        AddScript (vl[1], frm);

    exp = /@@\(dscript\)([.\S\s]*)@@\(\/dscript\)/;
    vl = rt.match(exp);
    if (vl != null)
        AddDScript (vl[1]);
 
    ClearWait();
}

function GetFormValues(frm)
{
    var obj = document.forms[frm];
    var rval=''; 
    
    var j=0;
    for (i=0; i < obj.length; i++)
    {
        if (obj.elements[i].name == '') continue;
        if (obj.elements[i].type == 'checkbox' && obj.elements[i].checked == false) continue;
        if (obj.elements[i].type == 'radio' && obj.elements[i].checked == false) continue;
        
        if (j > 0) rval += '&';
        j++;
        rval += obj.elements[i].name;
        rval += '=';
        rval += escape(obj.elements[i].value);
    }
    return rval;
}

function GetInputValues(dv)
{
    var rval = new Array();
    
    var dobj = document.getElementById(dv);
    if (dobj == null) return rval;
    var obj = dobj.getElementsByTagName('input');

    for (i=0; i < obj.length; i++)
    {
        if (obj[i].name == '') continue;
        if (obj[i].type == 'checkbox' && obj[i].checked == false) continue;
        if (obj[i].type == 'radio' && obj[i].checked == false) continue;
        
        rval[obj[i].name] = escape(obj[i].value);
    }

    obj = dobj.getElementsByTagName('SELECT');
    for (i=0; i < obj.length; i++)
    {
        if (obj[i].name == '') continue;
       
        rval[obj[i].name] = escape(obj[i].value);
    }
    return rval;
}

function frmDisable(frm)
{
    frmitems = document.forms[frm].length;
    for (i=0; i < frmitems; i++)
        document.forms[frm].elements[i].disabled = true;
}
function frmEnable(frm)
{
    frmitems = document.forms[frm].length;
    for (i=0; i < frmitems; i++)
        document.forms[frm].elements[i].disabled = false;
}

function    DisplayWait()
{
    if (document.getElementById('iwait') == null)
        return;
    CoverBody(0);
    ShowElement('iwait');
    ShowElement('dwait');
 }
function    ClearWait()
{
    if (document.getElementById('iwait') == null)
        return;
    HideElement('iwait');
    HideElement('dwait');
    ShowBody();
}

function    DisplayError(txt)
{
    CoverEBody();
    document.getElementById('errtext').innerHTML = txt;
    ShowElement('error');
}

function    ClearError()
{
    HideElement('error');
    ShowEBody();    
}

function	InitHttpReq()
{
  var xmlHttp=null;

  try
  {    // Firefox, Opera 8.0+, Safari  
       xmlHttp=new XMLHttpRequest();  
  }
  catch (e)
  {  // Internet Explorer  
       try
       {    
	       xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");    
  	   }
       catch (e)
       {    
	       try
           {      
		       xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");      
		   }
           catch (e)
           {      
		       alert("Your browser does not support AJAX!");      
			   return null;      
		   }    
	   }  
  }  
  return xmlHttp;
}

function parseSFloat(str)
{
	return parseFloat(str.replace(',', ''));
}

function AmtFormat(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

function ExpandForm(i, step)
{
    if (step === undefined) step = 10;
    if (i <= step) step = i;
    document.getElementById('palmtree').style.top=document.getElementById('palmtree').offsetTop + step;
    document.getElementById('formbt').style.top=document.getElementById('formbt').offsetTop + step;
    document.getElementById('formbody').style.height = document.getElementById('formbody').clientHeight + step;
    document.getElementById('formbodyfrm').style.height = document.getElementById('formbodyfrm').clientHeight + step;
    document.getElementById('bodyleft').style.height = document.getElementById('bodyleft').clientHeight + step;
    document.getElementById('form').style.height = document.getElementById('form').clientHeight + step;
   
    if (i <= 0) 
    {
        return;
    }
    j = i - step;

    setTimeout("ExpandForm(" + j + ");", 1);
}

function    ShowHelp(t)
{
    ShowElement('help');
    ReadForm ('help', 'help', '&topic=' + t);
}

function    FillSelect (obj, v)
{
    
    while (obj.length > 0)
        obj.remove(0);
        
    expg = /<val>(.*)<\/val><sel>(.*)<\/sel><desc>(.*)<\/desc>/g;
    exp = /<val>(.*)<\/val><sel>(.*)<\/sel><desc>(.*)<\/desc>/;

    var vl = v.match(expg);
    
    for (i=0; i<vl.length; i++)
    {
        vll = vl[i].match(exp);

        o = document.createElement('option');
        o.value = vll[1];
        o.text  = vll[3];
        
	    try 
	    {
          obj.add(o, null);
        }
	    catch(ex)
	    {
          obj.add(o);
        }
        if (vll[2] == 'y') obj.options[obj.length - 1].selected = true;
        if (vll[2] == 'd') obj.options[obj.length - 1].disabled = true;
    }


}

