$.fn.serializeObject = function()
{
    var o = {};
    var a = this.serializeArray();
    $.each(a, function() {
        if (o[this.name]) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
};

$.params2json = function(d) {
//	alert("constructor: " + d.constructor);
/*    if (d.constructor != Array) {
        return d;
    }
*/
    var data={};
    for(var i=0;i<d.length;i++) {
        if (typeof data[d[i].name] != 'undefined') {
            if (data[d[i].name].constructor!= Array) {
                data[d[i].name]=[data[d[i].name],d[i].value];
            } else {
                data[d[i].name].push(d[i].value);
            }
        } else {
            data[d[i].name]=d[i].value;
        }
    }
    return data;
};

function formatAsPercent(percent, decimals) {
	var converted = parseFloat(percent)/100;
	return converted.numberFormat("0.00%");
//return percent;
}

function anotherCurrency(amount) {
	var converted = parseFloat(amount);
	return converted.numberFormat("$#,#.00");
}

function formatAsCurrency(amount) {
	var i = parseFloat(amount);
	if (isNaN(i)) { i = 0.00; }
	var minus = '';
	if (i < 0) { minus = '-'; }
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	s = new String(i);
	if (s.indexOf('.') < 0) { s += '.00'; }
	if (s.indexOf('.') == (s.length - 2)) { s += '0'; }
	s = minus + s;
	amount = s;
	var delimiter = ","; // replace comma if other mark is desired
	var a = amount.split('.', 2)
	var d = a[1];
	var i = parseInt(a[0]);
	if (isNaN(i)) { return ''; }
	var minus = '';
	if (i < 0) { minus = '-'; }
	i = Math.abs(i);
	var n = new String(i);
	var a = [];
	while (n.length > 3) {
		var nn = n.substr(n.length - 3);
		a.unshift(nn);
		n = n.substr(0, n.length - 3);
	}
	if (n.length > 0) { a.unshift(n); }
	n = a.join(delimiter);
	if (d.length < 1) { amount = n; }
	else { amount = n + '.' + d; }
	amount = minus + amount;

	return "$" + amount;
}

function fillDivWithWebPage(divName, pageUrl, debug) {
	if (debug) alert('filling with ' + pageUrl);
	var localXmlHttp;
	
	if(window.XMLHttpRequest){
		localXmlHttp = new XMLHttpRequest();
	}
	else if(window.ActiveXObject){
		localXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	}

	localXmlHttp.open("GET",pageUrl,true);
	localXmlHttp.onreadystatechange = function () {
		if (debug) {
			alert('ready state change for ' + divName + ' to ' + localXmlHttp.readyState 
			+ ' status ' + localXmlHttp.status + ' response text ' + localXmlHttp.responseText);
		}
		if( localXmlHttp.readyState==4 ) {
			document.getElementById(divName).innerHTML = "<br/><img src='/images/bentley-loading.gif'/> Processing request....";
			if( localXmlHttp.status==200 ) {
				document.getElementById(divName).innerHTML = localXmlHttp.responseText;
			}
		}
	};
	localXmlHttp.send(null);
}


function getCasServiceForPage() {
	var keepQuery = '';

	var query = window.location.search.substring(1); 
	if (query) {
		var vars = query.split("&"); 
		for (var i=0;i<vars.length;i++) {
			var pair = vars[i].split("=");
			if (pair[0] != 'ticket') {
			  keepQuery += pair[0] + '=' + pair[1] + '&';
			}
		} 	
	}
	var serviceUrl = window.location.protocol + '//' + window.location.host + window.location.pathname;
	if (keepQuery != '') serviceUrl = serviceUrl + '?' + keepQuery;
	return serviceUrl;
}

function getDtcCodeFromUrl() {
	var path = window.top.location.pathname;
	var parts = path.toString().split('/');
	var moreSplit = parts[parts.length-1].split('.');
	return moreSplit[0];
}

function goToDtcPage(errorBoxJquerySelector, parms) {
	parms.method = 'getPageForDtcAndDottedId';
	$.get("/dtcServices.srv", parms,
			function(data) {
				if (data.trim() == "pageNotFound") {
					$(errorBoxJquerySelector).html("<div style='border:red 2px solid; padding:3px'>No matching DTC</div>");
				} else if (data.trim() == "multipleMatchesFound") {
					$(errorBoxJquerySelector).html("<div style='border:red 2px solid; padding:3px'>Multiple matches found</div>");
				} else {
					window.location = '/' + data;
				}
			}
		)	
}
 
/*
function reportAssociationProblem(bookcode) {
	alert("hi");
	alert ('bookcode: ' + bookcode);
	var comment = $("#" + bookcode + "-comment").val();
	alert ("comment: " + comment);
	var parms = {
		method: 'reportVehicleTreeIssueForBookcode',
		comment: 'this is a comment',
		bookcode: bookcode
	}
	$.get("/supportcenter/contentManagement/ProductEditService", parms);
	alert ('done');
} */

/*
	alert("here...");
	var myFormParams = $(myForm).find(":input");
	alert(myFormParams);
	var json=$.params2json(myFormParams);
	json.method = 'reportVehicleTreeIssueForBookcode';
	alert("method: " + json.method);
	alert(json.toString());

	var comment = $(myForm).find("input[name='comment']").val();
	var bookcode = $(myForm).find("input[name='bookcode']").val();
	var parms = {
		method: 'reportVehicleTreeIssueForBookcode',
		comment: comment,
		bookcode: bookcode
	}
*/
/*	var serialized = $(myForm).serialize();
	alert("serialized: " + serialized); */
/*	
	var inputs = $(myForm).find("input");
	alert("var inputs: " + inputs);
	var otherParms = {method: 'reportVehicleTreeIssueForBookcode'};
	for(i=0; i<inputs.length; i++) {
		var inputI = inputs[i];
		var myName = inputs[i].name;
		var myVal = inputs[i].value;
		otherParms.myName = myVal;
		//alert("elt: " + inputs[i] + ", " + myName + ", " + myVal);
	}
	alert ("comment: " + otherParms.comment);
	
	inputZero = inputs[0]; */
/*	for(key in inputZero) {
 		alert("key is "+[key]+", value is "+inputZero[key]);
	}*/
