
function SubmitGDL(){
	var form_id = "";
	var arrQuery = new Array();
	var arrFormParam = new Array();
	var translateArray = new Array();
	var rewrite = false;
	var rewriteSuf = '';
	var rewriteSeparator1;
	var rewriteSeparator2;
	this.initialize = function(translateArray, rewrite, rewriteSuf, rewriteSeparator1, rewriteSeparator2, getParams){
		this.translateArray = translateArray;
		this.rewrite = rewrite;
		this.rewriteSuf = rewriteSuf;
		this.rewriteSeparator1 = rewriteSeparator1;
		this.rewriteSeparator2 = rewriteSeparator2;
		this.arrQuery = getParams;
	}
	this.doSubmit = function(form_object, delArray){
		form_id = form_object;
		this.getParamsFromForm();
		
		var resultArray = this.concatArray(arrFormParam, this.arrQuery);
		//this.dumpArray(resultArray);
		if(this.rewrite == true)
		    var d = this.makeQueryStringFromArrayRewrite(resultArray, delArray);
		else
		    var d = this.makeQueryStringFromArray(resultArray, delArray);
		window.location.href = d;
	};
	
	this.getParamsFromForm = function()
	{
	    $('form[id="'+form_id+'"]').find('input,select').each(function (k, v){
	    
		if( (typeof $(v).attr("name") != "undefined") && ($(v).attr("type")!= "submit") ){
		    var tempQuerySubstring = new Array($(v).attr("name"), $(v).val());
		    arrFormParam[k] = tempQuerySubstring;		
		}
	    });
	    arrFormParam = this.translateParams(arrFormParam, this.translateArray);
	}
	this.dumpArray = function(aArray)
	{
	    var strDump = "";
	    strDump = 'LENGTH ARRAY = '+aArray.length+"\n";
	    for ( var iParam = 0; iParam < aArray.length; iParam++ ) {
		var tempObj = aArray[iParam];
		strDump += tempObj[0]+' = '+tempObj[1]+"\n";
	    }
	    alert(strDump);
	}
	this.in_array = function(nedle, haystack, compareKey, returnIndex)
	{
	    if(compareKey !== false)
	    {
		for(var i = 0; i < haystack.length; i++)
		{
		    if(haystack[i][compareKey] == nedle)
		    {
		    
			if(returnIndex)
			    return i;
			else
			    return true;
		    }
		}
	    }
	    else
	    {
		for(var i = 0; i < haystack.length; i++)
		{
		    if(haystack[i] == nedle)
			return true;
		}
	    }
	    return false;
	}
	this.concatArray = function(aArray, bArray)
	{
	    resultArray = aArray;
	    var i = aArray.length;
	    for ( var iParam = 0; iParam < bArray.length; iParam++ ) {
		var tempObj = bArray[iParam];
		if(!this.in_array(tempObj[0], resultArray, 0, 0))
		    resultArray[i++] = tempObj;
	    }
	    return resultArray;
	}
	this.makeQueryStringFromArray = function(aArray, deleteParamsArray)
	{
	    var queryString = "";
	    for ( var iParam = 0; iParam < aArray.length; iParam++ ) {
		var tempObj = aArray[iParam];
		if(this.in_array(tempObj[0], deleteParamsArray, false, 0))
		    continue;        
		if(tempObj[1] != "")
		{
		    if(queryString != "")
			queryString += "&";
		    queryString += tempObj[0] + "=" + tempObj[1];
		}
	    }	    
	    queryString = "?"+queryString;
	    return queryString;
	}
	this.makeQueryStringFromArrayRewrite = function(aArray, deleteParamsArray)
	{
	    var queryString = "";
	    for ( var iParam = 0; iParam < aArray.length; iParam++ ) {
		var tempObj = aArray[iParam];
		if(this.in_array(tempObj[0], deleteParamsArray, false, 0))
		    continue;        
		if(tempObj[1] != "")
		{
		    if(queryString != "")
			queryString += this.rewriteSeparator1;
		    queryString += tempObj[0] + this.rewriteSeparator2 + tempObj[1];
		}
	    }	    
	    queryString = queryString + this.rewriteSuf;
	    return queryString;
	}

	this.translateParams = function(aArray, translateArray)
	{
	    var res = new Array();
	    for ( var iParam = 0; iParam < aArray.length; iParam++ ) {
		var tempObj = aArray[iParam];
		var key = tempObj[0];
		var val = tempObj[1];
		var index = this.in_array(key, translateArray, 1, 1);
		if(index !== false)
		{
		    key = translateArray[index][0];
		}
		res[iParam] = new Array(key, val);
	    }
	    return res;
	}

}

