//
// hCbPost.js
//
// require hCbLib
//         SimpleSerializer

hCbLib.Post = function(){}; 
hCbLib.fields = [ "begin", "end", "wrapper_level", "onload", "format", "tool" ];

hCbLib.Post.fromObject = function( args, obj, pp )
{
	 var tool = Util.get_if_ok( args.tool, null );
	 var uri = Util.get_if_ok( args.uri, null );
	 if ( uri && tool ) {
		  return hCbLib.Post.__fetch( args, obj, pp );
	 }
	 return hCbLib.NO_ARGS;
}

hCbLib.Post.__fetch = function( args, obj, pp )
{    
    if ( !Util.isOk( args ) ) {
        return hCbLib.NO_ARGS;
    }
	 var cbo  = Util.get_if_ok( args.callback_context, null );
	 var cbf  = Util.get_if_ok( args.callback_function, null );
	 var tool = Util.get_if_ok( args.tool, null );
	 var to   = Util.get_if_ok( args.timeout, hCbLib.__timeout );
	 var id   = args.id = Util.get_if_ok( hCbLib.__get_buffer( cbo, cbf, to, pp ), null);
	 if ( !cbo ) {
		  cbo = Util.get_if_ok( args.callback, null );
	 }
	 if ( cbo && tool && Util.isOk( id ) ) {
		  hCbLib.__write_in_frame( id, hCbLib.Post.getPostFormStr( args, obj ) );
		  hCbLib.Post.putValues( id, obj );
		  hCbLib.Post.doPost( id );
		  return hCbLib.__get_request_id( id );
	 }
	 return hCbLib.NO_ARGS;
}

hCbLib.Post.getPostFormStr = function( o, obj )
{
	 var target = '';;
	 if ( Util.isOk( o.target ) ) {
		  target = ' target="' + o.target + '"';
	 }
	 var result = '';
	 result += '<html><head><title>hCbLib</title>';
	 result += '<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">';
	 result += '</head><body><form name="postForm" action="' + o.uri  + '"'
	 + target
	 + ' method="POST">';
	 o.format        = 'text/html';
	 o.wrapper_level = 2;
	 o.begin         = 'window.onerror=function(){' + hCbLib.__code + '.hCbLib.__fetch_done(null,'+o.id+',2);return true;};';
	 o.onload  = hCbLib.__code + '.hCbLib.__fetch_done('+ o.tool +','+o.id+',0);';
	 for ( var i=0; i<hCbLib.fields.length; i++ ) {
		  result += '\n<br>' + hCbLib["__"+hCbLib.fields[i]];
		  result += '<input name="' + hCbLib["__"+hCbLib.fields[i]] + '" type="text" '
		  result += ' value=\'' + Util.get_if_ok( o[ hCbLib.fields[i] ], '' ) + '\'>';
	 }
	 for ( var post_field in obj ) {
		  result += '\n<br>' + post_field;
		  result += '<textarea rows=1 cols=24 name="' + post_field + '">';
		  result += '</textarea>';
	 }
	 result += '<input type="submit" value="Post"><br>' 
	 + '<input type="reset" value="Borrar">' 
	 + '</form></body></html>';
	 return result;
}

hCbLib.Post.putValues = function( id, obj )
{
	 var d = hCbLib.__path[hCbLib.__prefix+id].document;
	 for ( var post_field in obj ) {
		  d.postForm[ post_field ].value = Util.get_if_ok( obj[post_field], '' );
	 }
}

hCbLib.Post.doPost = function( id ) 
{
	 hCbLib.__path[ hCbLib.__prefix + id ].document.postForm.submit();
}
