//with a passed in formID and data param string, go through the form elements and update their values


function deserializeIE(form, formParam)
{
data = decodeURIComponent(formParam);
//alert('decoded: ' + data);
//alert('before form name');
//alert(form);
var tokens = data.split('&');
//alert('about to call des');
//deserializeIEFull('1','1','1','1','1','1');
try
{
tokens.each(
	    	function(input, index) {
	    		var data = input.split('=');
	    		var id = data[0];
	    		var value = data[1];	    		
	    		if(id != form.id && value != 'undefined' && value != null)
					deserializeIEFull(id, value, form, index);
	    	}
	    );
}
catch(e)
{
	//alert('error found');
}	    		
//alert('deserialize IE: ' + form + ' ' + formParam);
}

//just set the value of the element to data (within the form, 'form');
function deserializeIEFull(element, data, form, index)
{
var options = Form.getElements(form);
var eCount=0;
var sCount=0;
for(k=0; k<options.length;k++)
{
	try
	{
	//	var newval= 'test'+index;
	//	printVars= 'form: ' + form + ', el: ' + element + ', data: ' + data + ', index: ' + index;
	//	alert('name: ' + options[k].name + ', id: ' + options[k].id + ' ----- ' + printVars);
		//alert(options[k].name + ' , ---- ' + element); 
		if(options[k].name==element)
		{
			setElementValue($(options[k]), data);						
		}
		sCount+=1;
	}
	catch(e)
	{
		eCount+=1;
	}
}
//alert('errors: ' + eCount + 'successes: ' + sCount);

}

function setElementValue(element, data)
{
//	element.value=data;
//alert('type: ' + element.type );

switch (element.type.toLowerCase()) {
      case 'submit':
      case 'hidden':
      case 'password':
      case 'text':
       try
       {
	       setValueByType(element, data,'textarea');
        }
        catch(err)
        {
        	alert('error calling setValueByType: ' + err.description);
        }
        break;
      case 'checkbox':
			setValueByType(element, data,'inputSelector');
			break;
      case 'radio':
    		setValueByType(element, data,'radioSelector');
    		break;

   	case 'select-one':
   		setValueByType(element, data,'selectOne');
   		break;
    case 'select-multiple':
   		setValueByType(element, data,'selectMany');
   		break;
   	case 'select':
   		setValueByType(element, data,'select');
   		break;
    }    
}
//add SELECT MANY


function setValueByType(element, data, inputtype)
{
	if(inputtype=='textarea')
	{
		element.value=data;		
	}	
	else if(inputtype=='inputSelector')
	{
		element.checked = true;	
	}
	else if(inputtype=='radioSelector')
	{
		var name = element.name;
    	var radiobuttons = Form.getInputs(element.form, 'radio', element.name);
    	for(i = 0; i < radiobuttons.length; i++) {
      		radiobutton = radiobuttons[i];
     		//alert("radio: " + i + " " + radiobutton.value);
      		if(radiobutton.value == data)
				radiobutton.checked = true;  
    	}
	}
	else if(inputtype=='select')
	{
	    alert('select not done yet');
	    alert(element.name + ', ' + data);
	}
	else if(inputtype=='selectOne')
	{
	  	element.value = data;
	}
	else if(inputtype=='selectMany')
	{       
       	var theoptions=element.getElementsByTagName('option');
		for(i = 0; i < element.options.length; i++) {
		op = element.options[i];
		
       	if(op.value == data)
    	    op.selected = true;
    	 }
	  	    
	}
	else
	{
		alert('default: ' + inputtype);    
	}
}

//with a single passed in element id, element value and form value, set the value
function deserializeIEFull_old(element, data, form, index)
{
alert('form: '                    
 + form + ', el: ' + element + ', data: ' + data + ', index: ' + index);

var options = Form.getElements(form);
//	alert(options.length);
	options = $A(options);
//	alert(options.length);

		var opt = options.find( function(formelement){
//	alert("match: " + formelement.name);
//			return (formelement.id == element);
//alert('el: '+element);
//alert('elname: '+element.name);

			var tf=(formelement.name == element);
			alert('tf: ' + tf);
			return (formelement.name == element);
		});
		

	    //element = $(element);
	    element = opt;
	    if(element != null) {
//		alert('not null');
		    var method = element.tagName.toLowerCase();
		  
		  try {
		    	deserializer(element, data);
		    }
		    catch(e)
		    {
		    	alert('second error');
		    }
		}
//		else alert('it is null');

}
function returnMatch(formelement)
{




}

//DO SOMETHING WITH THE method variable, compare ie version to ergular and make fix
function deserializer(element, data)
{
  alert('deserializeriscalled');

alert('type: ' + element.type);
  switch (element.type.toLowerCase()) {
      case 'submit':
      case 'hidden':
      case 'password':
      case 'text':
       try
       {
        var tempV = desFunc(element, data,'textarea');
        alert('temp: ' + tempV);
        return tempV;
        }
        catch(f)
        {
        alert('error again');
        }
      case 'checkbox':
        return desFunc(element, data,'inputSelector');
      case 'radio':
        return desFunc(element, data, 'radioSelector');
    }
    return false;
}

var desFunc = function deserializerType(element, data, inputtype)
{
alert('inside');

if(inputtype=='inputSelector')
{
alert('el: ' + element.name);
element.checked = true;
return element;
}
elseif(inputtype=='radioSelector')
{
  var name = element.name;
    var radiobuttons = Form.getInputs(element.form, 'radio', element.name);
    for(i = 0; i < radiobuttons.length; i++) {
      radiobutton = radiobuttons[i];
     alert("radio: " + i + " " + radiobutton.value);
      if(radiobutton.value == data)
	radiobutton.checked = true;  

    }
  	    return element;

}
elseif(inputtype=='textarea')
{
    element.value = data;
    return element;
}
elseif(inputtype=='select')
{
    alert('not done yet');
    //element.value = data;
    return element;
}
elseif(inputtype!='default')
{
	alert(inputtype);
//	return element;
}
//else
//{
//alert('not done yet');
//}

}

/*
  inputSelector: function(element, data) {
    element.checked = true;
  },

  radioSelector: function(element, data) {
    var name = element.name;
    var radiobuttons = Form.getInputs(element.form, 'radio', element.name);
    for(i = 0; i < radiobuttons.length; i++) {
      radiobutton = radiobuttons[i];
     alert("radio: " + i + " " + radiobutton.value);
      if(radiobutton.value == data)
	radiobutton.checked = true;  
    }
  },

  textarea: function(element, data) {
    element.value = data;
  },

  select: function(element, data) {
    return deserializer[element.type == 'select-one' ?
      'selectOne' : 'selectMany'](element, data);
  },

  selectOne: function(element, data) {
	element.value = data;
  },

  selectMany: function(element, data) {
    for(i = 0; i < element.options.length; i++) {
	op = element.options[i];
        if(op.value == data)
          op.selected = true;
    }
  }


}
*/

/*
getElements: function(form) {
1424 form = $(form);
1425 var elements = new Array();
1426
1427 for (var tagName in Form.Element.Serializers) {
1428 var tagElements = form.getElementsByTagName(tagName);
1429 for (var j = 0; j < tagElements.length; j++)
1430 elements.push(tagElements[j]);
1431 }
1432 return elements;



*/
