//part_gen_test20090122.pl
//part_gen_test20090122_v2.pl
//part_gen_test20090519.pl
var strURL = "http://www.novatechweb.com/cgi-bin/part_gen_test2010-02-17.pl";
var showtooltips = true;

function toggle() {
	//alert('called toggle2()');
	if (showtooltips === true) {
		//alert('toggle called, showtooltips: true / turning to false');
		showtooltips = false;
		$('.containhidden').attr('style','display:none');
		
	}
	else {
		//alert('toggle called, showtooltips: false / turning to true');
		showtooltips = true;
		$('.containhidden').removeAttr('style');
	}
	return false;
}

var _previous_html = "";
function startup() {
	var strMsel = "";
	
	switch(strPage) {
		case "orion5":
			strMsel = "Orion5";
			break;
		case "orion5r":
			strMsel = "Orion5r";
			break;
		case "orionlx":
			strMsel = "OrionLX";
			break;
		default:
			strMsel = "Orion5r";
			break;
	}
	//alert("strURL = '"+strURL+"' || msel = '"+strMsel+"'");
	$("#mainContent").load(strURL, {msel:strMsel, rnd:Math.random()*1024}, doneWithAjaxLoadHandler);
}

function doneWithAjaxLoadHandler() {
	var options = { 
			target:        '#mainContent',   // target element(s) to be updated with server response 
			beforeSubmit:  showRequest,  // pre-submit callback 
			success:       showResponse,  // post-submit callback 

			// other available options: 
			url:			strURL       // override for form's 'action' attribute 
			//type:      type        // 'get' or 'post', override for form's 'method' attribute 
			//dataType:  null        // 'xml', 'script', or 'json' (expected server response type) 
			//clearForm: true        // clear all form fields after successful submit 
			//resetForm: true        // reset the form after successful submit 

			// $.ajax options can be used here too, for example: 
			//timeout:   3000 
	}; 

	// bind form using 'ajaxForm' 
	var frmOrder = $('#mainContent').children('form[name="orderform"]');
	frmOrder.ajaxForm(options);
  frmOrder.attr('action',strURL); // url in .ajaxForm call does not seem to work (2009-12-14)
  //log('changed form["action"] to '+strURL);
	jQuery.each( $("INPUT[type='checkbox']"), eachCheckbox);
	jQuery.each( $("INPUT[type='radio']"), eachRadio);
	log("==== START ====");
}
function eachRadio() {
	$(this).addClass("radio");
}
function eachCheckbox() {
	$(this).addClass("checkbox");
}

function eachFormField() {
	var eleItem = $(this);
	var strElementName = this.name;
	var strElementType = this.type;
	var strElementValue = "";
	if (jQuery.trim(strElementName).length < 1) {
		return;
	}
	switch (strElementType) {
		case "text":
			strElementValue = eleItem.val();
			break;
		case "radio":
			if (eleItem.attr('checked') === true) {
				strElementValue = eleItem.attr('value');
//log(" ==> saving radio '"+strElementName+"' with value '"+strElementValue+"'");
			} else {
				return;
			}
			break;
		case "checkbox":
			if (eleItem.attr('checked') === true) {
				strElementValue = eleItem.attr('value');
log(" ==> saving checkbox '"+strElementName+"' with value '"+strElementValue+"'");
			} else {
				return;
			}
			break;
		default:
			return;
	}
	var objRow = new Object();
	objRow.name = strElementName;
	objRow.value = strElementValue;
	objRow.type = strElementType;
	formElements.push(objRow);
}

var formElements = new Array();
function saveFormData() {
	formElements = new Array();
	jQuery.each( $("INPUT"), eachFormField); //[name='var_Ax']
}

function loadFormData() {
	for ( var i = 0; i < formElements.length; i++) {
		var objRow = formElements[i];
		var strElementName = objRow.name;
		var strElementType = objRow.type;
		var strElementValue = objRow.value;
		if (jQuery.trim(strElementName).length < 1) {
			continue;
		}
		switch (strElementType) {
			case "text":
				eleItem = $("INPUT[name='"+strElementName+"'][type='text']");
				eleItem.val(strElementValue);
				break;
			case "radio":
				eleItem = $("INPUT[name='"+strElementName+"'][type='radio'][value='"+strElementValue+"']");
				if (eleItem.length > 0) {
					eleItem.attr('checked', true);
					//log(" *** loading radio '"+strElementName+"' with value '"+strElementValue+"'");
				} else {
					log(" ### FAILED radio '"+strElementName+"' with value '"+strElementValue+"'");
				}
				break;
			case "checkbox":
				eleItem = $("INPUT[name='"+strElementName+"'][type='checkbox']");
				if (eleItem.length == 1) {
					eleItem.attr('checked', true);
					log(" *** loading checkbox '"+strElementName+"' with value '"+strElementValue+"'");
				} else if (eleItem.length > 0) {
					log("--+++----+++----+++----+++----+++----+++----+++----+++--");
					log("--+++-- JQUERY returned > 1 elements for checkbox '"+strElementName+"'");

					for ( var j=0; j < eleItem.length; j++) {
						var rowItem = eleItem[j];
						var strRowName = rowItem.name;
						var strRowType = rowItem.type;
						var strRowValue = rowItem.value;
						log("       element["+j+"] = name:"+strRowName+"; type:"+strRowType+"; value:"+strRowValue+";");
					}
					log("--+++----+++----+++----+++----+++----+++----+++----+++--");
				} else {
					log(" ### FAILED checkbox '"+strElementName+"' with value '"+strElementValue+"'");
				}
				break;
			default:
				continue;
		}
	}
}

// pre-submit callback 
function showRequest(formData, jqForm, options) { 
    // formData is an array; here we use $.param to convert it to a string to display it 
    // but the form plugin does this for you automatically when it submits the data 
	_previous_html = $("#mainContent").html();
	saveFormData();
    var queryString = $.param(formData); 
 
    // jqForm is a jQuery object encapsulating the form element.  To access the 
    // DOM element for the form do this: 
    // var formElement = jqForm[0]; 
 
    //alert('About to submit: \n\n' + queryString); 
 
    // here we could return false to prevent the form from being submitted; 
    // returning anything other than false will allow the form submit to continue 
    return true; 
} 
 
// post-submit callback 
function showResponse(responseText, statusText)  { 
    // for normal html responses, the first argument to the success callback 
    // is the XMLHttpRequest object's responseText property 
 
    // if the ajaxForm method was passed an Options Object with the dataType 
    // property set to 'xml' then the first argument to the success callback 
    // is the XMLHttpRequest object's responseXML property 
 
    // if the ajaxForm method was passed an Options Object with the dataType 
    // property set to 'json' then the first argument to the success callback 
    // is the json data object returned by the server 
 
    // alert('status: ' + statusText + '\n\nresponseText: \n' + responseText + 
    //    '\n\nThe output div should have already been updated with the responseText.'); 
		$.scrollTo("#contentsBox");
} 

$(document).ready(startup);

function goBackAndUpdate() {
	//alert("goBackAndUpdate");
	 $("#mainContent").html(_previous_html);
	 doneWithAjaxLoadHandler();
	 loadFormData();
}
function logConsole() {
    if (false && window.console && window.console.log)
        window.console.log('[nt] ' + Array.prototype.join.call(arguments,''));
};

var _strDebug = "";
function log(strLog) {
	logConsole(strLog); return;
	//var eleDivDebuglog = $("#div_debuglog", __myDoc);
	var eleDivDebuglog = $("body", __myDoc).find("#div_debuglog");
	if (eleDivDebuglog.length < 1) {
		$("body", __myDoc).append("<div id='div_debuglog' style='position: fixed; left: 0; top: 0;'><p>" + strLog + "</p><BR /></div>");
		eleDivDebuglog = $("body", __myDoc).find("#div_debuglog");
		eleDivDebuglog.hide();
	}
	_strDebug = "<span style='margin:0;padding:0;'>" + strLog + "</span><br/>" + _strDebug;
	eleDivDebuglog.html("<div style='overflow:scroll; height:500px; width:600px; border:1;'>" + _strDebug + "</div>");
}
__myDoc = window.document;
