// kkGeneralV9a.js - General JS functions for KK4000
//
// Copyright (c) 2001-2009 K Baker-Munton t/a Kintok

// JSLint "helper"
/*global alert, confirm, document, eval, location, navigator, parent, screen, window, MM_findObj */

//zzz TODO Change rkFrmMainGet() to rkFrmMainElementsGet()
//zzz TODO Change all references to objForm.MyField to be objForm["MyField"]
//zzz TODO Add ALERTs for Untested functions

var bIsLoaded=false;
function rkfnReportError(msg,url,line){
//DEBUG alert("JavaScript Error Handler");
var hWin=window.open("","","resizable,status,width=625,height=400");var hDoc=hWin.document;hDoc.write('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>LogJavaScript Error</title></head><body><h1 style="color:000000;"><div align=center><b>JavaScript Error Reporting Form</b></div></h1><br>\r\n');hDoc.write('<hr size=4 width="80%">');
hDoc.write('<form name="kkJSError" action="?PAGEID=36174&amp;ACT=SAVE2" method="POST">\r\n');
hDoc.write('<i>Click the "Report Error" button to send a bug report.</i><br>\r\n');hDoc.write('<input type="submit" value="Report Error">&nbsp;&nbsp;\r\n');hDoc.write('<input type="button" value="Dismiss" onClick="self.close()"></div>\r\n');hDoc.write('<table style="color:000000;">\r\n');hDoc.write('<tr><td>Your name <i>(optional)</i>: </td><td><input size=80 name="kkName" value=""></td></tr>\r\n');hDoc.write('<tr><td>Error Message: </td><td><input size=80 name="kkMsg" readOnly value="'+msg+'"></td></tr>\r\n');hDoc.write('<tr><td>document: </td><td><input size=80 name="kkURL" readOnly value="'+url+'"></td></tr>\r\n');hDoc.write('<tr><td>Line Number: </td><td><input size=80 name="kkLine" readOnly value="'+line+'"></td></tr>\r\n');hDoc.write('<tr><td>Browser Version: </td><td><input size=80 name="kkUA" readOnly value="'+navigator.userAgent+'"></td></tr>\r\n');hDoc.write('</table></form></body></html>\r\n');hDoc.close();hWin.focus();return true}
//DEBUG 
window.onerror=rkfnReportError;
//DEL function kkNext(){alert("NEXT function not yet implemented");return false;}
function rkfnEnterSubmit(e){var characterCode;if(e && e.which){e = e;characterCode = e.which;}else{e = event;characterCode = e.keyCode;}if(characterCode == 13){rkSaveHide();return false;}return true;}
function rkUrlActSet(strNew){var rExp;var strSource;var strReplace;var strURL;rExp=/Act\=[^\&]*/i;strSource=new String(document.URL);if(strSource.search(rExp)==-1){strURL=strSource+"&Act="+strNew}else{strReplace=new String("Act="+strNew);strURL=strSource.replace(rExp,strReplace);}return strURL}
function rkFrmActSet(frm,strNew){if(typeof(frm)=="undefined"){alert("rkFrmActSet:frm type undefined [" + frm + "/" + strNew + "]");}if(typeof(frm.Act)!="undefined"){frm.Act.value=strNew}else if(typeof(frm.act)!="undefined"){frm.act.value=strNew}else if(typeof(frm.ACT)!="undefined"){frm.ACT.value=strNew}else{alert("rkFrmActSet:frm.Act undefined [" + frm + "/" + strNew + "]");}}
function rkFrmMainGet(){var frmMain;frmMain=document.forms["kkFrmMain"];if(typeof(frmMain)=="undefined"){alert("rkFrmMainGet:frmMain undefined");return"undefined"}return frmMain;}
function rkFrmMainElementsGet(){var objForm;objForm=document.forms["kkFrmMain"].elements;if(typeof(frmMain)=="undefined"){alert("rkFrmMainGet:frmMain undefined");return"undefined"}return frmMain;}
function rkFrmMainFieldGet(strField){var frmMain;frmMain=rkFrmMainGet();return frmMain[strField].value;}
function rkFrmMainFieldPut(strField, value, blnFocus){var frmMain;frmMain=rkFrmMainGet();frmMain[strField].value = value;if(blnFocus===1){frmMain[strField].focus();}}
function rkClone(){var frmMain;var strURL;frmMain=rkFrmMainGet();strURL=rkUrlActSet("CLONE");document.body.innerHTML="LOADING..............";location.replace(strURL);}
function rkDelete(){var frmMain;frmMain=rkFrmMainGet();rkFrmActSet(frmMain,"DEL");if(frmMain.onsubmit()){frmMain.submit();}return false;}
function rkMoveToForm(arrFormData){var objform=document.forms["kkFrmMain"];var intLoop;for(intLoop=0;intLoop<arrFieldNames.length;intLoop++){objform[arrFieldNames[intLoop]].value=arrFormData[intLoop]}}
//USE: rkfnPagePrint
function rkPrint(){      alert("rkPrint() deprecated, USE: rkfnPagePrint");     window.print();}
function rkRefresh(){document.body.innerHTML="LOADING..............";location.reload(true);}
function rkSave(){var frmMain;frmMain=rkFrmMainGet();rkFrmActSet(frmMain,"SAVE2");if(frmMain.onsubmit===null){alert("No onsubmit method");}if(frmMain.onsubmit()){if(arguments.length>=2){rkfnHideShow(arguments[0],arguments[1]);}frmMain.submit();}return false;}
function rkSaveHide(){return rkSave('listing','loading');}
//USE: rkfnStyleDisplay
function rkStyleDisplay(streDiv, strAttribute){      alert("rkStyleDisplay() deprecated, USE: rkfnStyleDisplay");     var objDiv = MM_findObj(strDiv);if (objDiv){objeDiv.style.display = strAttribute;}}
function rkSubmit(){var frmMain;frmMain=rkFrmMainGet();if(frmMain.onsubmit()){frmMain.submit();}return false;}
function fnCopyFieldIntToForm(strField,intMinValue,intMaxValue,aryFieldValues,intOffset){var objInput=MM_findObj(strField);aryFieldValues[intOffset]=objInput.value;return fnCopyIntToForm(objInput,intMinValue,intMaxValue,aryFieldValues);}
function fnCopyIntToForm(objInput,intMinValue,intMaxValue,aryFieldValues){var intDefaultValue;var intValue;var intNewValue;var blnPass=0;intDefaultValue=objInput.defaultValue;intValue=objInput.value;if(!new RegExp("^-?(\\d|\\d{2}|\\d{3})(,?\\d{3})*$").test(intValue)){alert("Please enter an whole number value");blnPass=1}else{intNewValue=parseInt(intValue.replace(/,/g,""),10);if(intNewValue<intMinValue||intMaxValue<intNewValue){alert("Please enter a value between "+intMinValue+" and "+intMaxValue);blnPass=2}}if(blnPass===0){rkMoveToForm(aryFieldValues);}else{this.value=this.defaultValue;this.focus();}return blnPass;}
//USE: rkfnHideShow
function rkHideShow(strHideDiv,strShowDiv){      alert("rkHideShow() deprecated, USE: rkfnHideShow");     RK_showHideLayers(strHideDiv,'hide',strShowDiv,'show');self.scrollTo(0,0);}
function fnSetFieldSubmit(strField,strValue){var objInput=MM_findObj(strField);objInput.value=strValue;rkSave();}
function fnCopyIntToFormSubmit(objInput,intMin,intMax,aryData){if(fnCopyIntToForm(objInput,intMin,intMax,aryData)===0){rkSave("listing","loading");}}
function rkMoveToFormSubmit(aryData){rkMoveToForm(aryData);rkSave("listing","loading");}
function fnCopyFieldIntToFormSubmit(strFieldName,intMin,intMax,aryData,intOffset){if(fnCopyFieldIntToForm(strFieldName,intMin,intMax,aryData,intOffset)===0){rkSave("listing","loading");}}
function fnCopyStrToFormSubmit(strField,aryFieldValues,intOffset){var objInput=MM_findObj(strField);aryFieldValues[intOffset]=objInput.value;rkMoveToForm(aryFieldValues);rkSave("listing","loading");}
function rkChangeOption(objThis,intItem,intValue,strInput){var objInput=MM_findObj(strInput);var i;var intThisValue;intThisValue=parseInt(objThis.value,10);if(!objInput){alert("rkChangeOption:Cannot find objInput of name "+strInput);}if(objThis.type==="radio"){objInput.value=0+parseInt(intValue,10);}else if(objThis.type==="checkbox"){if(objThis.checked===true){if(isNaN(parseInt(objInput.value,10))){objInput.value=0+parseInt(intValue,10);}else{objInput.value=parseInt(objInput.value,10)+parseInt(intValue,10);}}else if(objThis.checked===false){if(isNaN(parseInt(objInput.value,10))){objInput.value=0-parseInt(intValue,10);}else{objInput.value=parseInt(objInput.value,10)-parseInt(intValue,10);}}else{alert("rkChangeOption:CHECKBOX:objThis.value ["+objThis.value+"] not recognised, type="+typeof(objThis.value));}}else{alert("rkChangeOption:objThis.type ["+objThis.type+"] not recognised, type="+typeof(objThis.type));}}
function rkFind(){var frmMain;frmMain=rkFrmMainGet();rkFrmActSet(frmMain,"DOFIND3");if(frmMain.onsubmit()){if(arguments.length>=2){rkfnHideShow(arguments[0],arguments[1]);}frmMain.submit();}return false;}
function rkFindHide(){return rkFind('listing','loading');}
function rkForm2URL(strField){var frmMain;var pObj;var strURL;frmMain = rkFrmMainGet();pObj = frmMain[strField];if (typeof(pObj) == "undefined"){alert("rkForm2URL:[" + strField + "] undefined");} else{strURL = '&amp;' + strField + '=' + escape(pObj.value);}return strURL;}
//USE: rkfnSelectedSet
function rkSelectedSet(strSelectName, strOption){      alert("rkHideShow() deprecated, USE: rkSelectedSet");     var i;var objSel = document.getElementById(strSelectName);if (strOption !== ""){for(i=0; i < objSel.length; i++){if (objSel.options[i].value == strOption){objSel.options[i].selected = true;}}}}
function rkLZ(intValue){return(intValue < 0 || intValue > 9 ? "" : "0")+intValue;}
function rkDateTimeFormat(dtDate){var strOutput;var MONTH_NAMES = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');if (dtDate == undefined){dtDate = new Date();}strOutput = rkLZ(dtDate.getDate()) + " " + MONTH_NAMES[dtDate.getMonth()] + " " + dtDate.getYear() + " " + rkLZ(dtDate.getHours()) + ":" + rkLZ(dtDate.getMinutes()) + ":" + rkLZ(dtDate.getSeconds());return strOutput;}


