//======================================================================= //input validation: // acqui/uncertainprice.tmpl uses this function uncheckbox(form, field) { var price = new Number(form.elements['price' + field].value); var tmpprice = ""; var errmsg = "ERROR: Price is not a valid number, please check the price and try again!" if (isNaN(price)) { alert(errmsg); for(var i=0; i 0) { return false; } return true; } //Function returns false if v is not a number (if maybenull is 0, it also returns an error if the number is 0) function isNum(v,maybenull) { var n = new Number(v.value); if (isNaN(n)) { return false; } if (maybenull==0 && v.value=='') { return false; } return true; } // this function checks if date is like DD/MM/YYYY function CheckDate(field) { var d = field.value; if (d!="") { var amin = 1900; var amax = 2100; var date = d.split("/"); var ok=1; var msg; if ( (date.length < 2) && (ok==1) ) { msg = _("Separator must be /"); alert(msg); ok=0; field.focus(); return false; } var dd = date[0]; var mm = date[1]; var yyyy = date[2]; // checking days if ( ((isNaN(dd))||(dd<1)||(dd>31)) && (ok==1) ) { msg = _("day not correct."); alert(msg); ok=0; field.focus(); return false; } // checking months if ( ((isNaN(mm))||(mm<1)||(mm>12)) && (ok==1) ) { msg = _("month not correct."); alert(msg); ok=0; field.focus(); return false; } // checking years if ( ((isNaN(yyyy))||(yyyyamax)) && (ok==1) ) { msg = _("years not correct."); alert(msg); ok=0; field.focus(); return false; } // check day/month combination if ((mm==4 || mm==6 || mm==9 || mm==11) && dd==31) { msg = _("Invalid Day/Month combination. Please ensure that you have a valid day/month combination."); alert(msg); ok=0; field.focus(); return false; } // check for february 29th if (mm == 2) { var isleap = (yyyy % 4 == 0 && (yyyy % 100 != 0 || yyyy % 400 == 0)); if (dd>29 || (dd==29 && !isleap)) { msg = _("Invalid Day. This year is not a leap year. Please enter a value less than 29 for the day."); alert(msg); ok=0; field.focus(); return false } } } return true; } // Checks wether start date is greater than end date function CompareDate(startdate, enddate) { startdate=startdate.split("/"); syear = startdate[2]; smonth = startdate[1]; sday = startdate[0]; enddate=enddate.split("/"); eyear = enddate[2]; emonth = enddate[1]; eday = enddate[0]; var sdate = new Date(syear,smonth-1,sday); var edate = new Date(eyear,emonth-1,eday); if (sdate > edate) { msg = _("Start date after end date, please check the dates!"); alert(msg); ok=0; field.focus(); return false; } return true; } // checks wether end date is before today, returns false if it is function CheckEndDate(enddate) { enddate=enddate.split("/"); eyear = enddate[2]; emonth = enddate[1]; eday = enddate[0]; var edate = new Date(eyear,emonth-1,eday); var today = new Date( ); if (today > edate) { msg = _("End date before today, Invalid end date!"); alert(msg); ok=0; field.focus(); return false; } return true; } //======================================================================= //======================================================================= // Functions for drag-and-drop functionality (function() { var Dom = YAHOO.util.Dom; var Event = YAHOO.util.Event; var DDM = YAHOO.util.DragDropMgr; DDApp = { init: function() { var uls = document.getElementsByTagName('ul'); var i,j; var ddtarget; for (i=0; i this.lastY) { this.goingUp = false; } this.lastY = y; }, onDragOver: function(e, id) { var srcEl = this.getEl(); var destEl = Dom.get(id); // We are only concerned with list items, we ignore the dragover // notifications for the list. if (destEl.nodeName.toLowerCase() == "li") { var orig_p = srcEl.parentNode; var p = destEl.parentNode; if (this.goingUp) { p.insertBefore(srcEl, destEl); // insert above } else { p.insertBefore(srcEl, destEl.nextSibling); // insert below } DDM.refreshCache(); } } }); })(); //creates new group, parameter is the group's name function newGroup(event, name) { if (name == ''){ return 0; } if (!enterpressed(event) && event != "button"){ return false; } var pardiv = document.getElementById('groups'); var newdiv = document.createElement('div'); var newh3 = document.createElement('h3'); var newul = document.createElement('ul'); var newclose = document.createElement('a'); var newrename = document.createElement('a'); var newbasketgroupname = document.createElement('input'); var nbgclosed = document.createElement('input'); var newp = document.createElement('p'); var reg=new RegExp("[-]+", "g"); var i = 0; var maxid = 0; while( i < pardiv.getElementsByTagName('input').length ){ if (! isNaN(parseInt(pardiv.getElementsByTagName('input')[i].name.split(reg)[1])) && parseInt(pardiv.getElementsByTagName('input')[i].name.split(reg)[1]) > maxid){ maxid = parseInt(pardiv.getElementsByTagName('input')[i].name.split(reg)[1]); } ++i; } // var bgid = parseInt(pardiv.getElementsByTagName('input')[pardiv.getElementsByTagName('input').length-2].name.split(reg)[1]) + 1; var bgid = maxid + 1; var newchanged = document.createElement('input'); newul.id="bg-"+bgid; newul.className='draglist'; newh3.innerHTML=name; // newh3.style.display="inline"; newclose.innerHTML="close"; newclose.href="javascript: closebasketgroup('"+bgid+"', 'bg-"+bgid+"');"; newrename.href="javascript:" + "renameinit("+bgid+");"; newrename.innerHTML="rename"; // newp.style.display="inline"; newp.innerHTML=" [ "; newp.appendChild(newrename); newp.innerHTML+=" / "; newp.appendChild(newclose); newp.innerHTML+=" ]"; newbasketgroupname.type="hidden"; newbasketgroupname.name="basketgroup-" + bgid + "-name"; newbasketgroupname.id = "basketgroup-" + bgid + "-name"; newbasketgroupname.value=name; nbgclosed.type="hidden"; nbgclosed.name="basketgroup-" + bgid + "-closed"; nbgclosed.value="0"; nbgclosed.id=nbgclosed.name; newchanged.type="hidden"; newchanged.id="basketgroup-"+bgid+"-changed"; newchanged.name=newchanged.id; newchanged.value="1"; newdiv.style.backgroundColor='red'; newdiv.appendChild(newh3); newdiv.appendChild(newp); newdiv.appendChild(newul); newdiv.appendChild(newbasketgroupname); newdiv.appendChild(nbgclosed); newdiv.appendChild(newchanged); newdiv.className='workarea'; pardiv.appendChild(newdiv); YAHOO.util.Event.onDOMReady(DDApp.init, DDApp, true); } //this traps enters in input fields function enterpressed(event){ var keycode; if (window.event) keycode = window.event.keyCode; else if (event) keycode = event.which; else return false; if (keycode == 13) { return true; } else return false; } //Closes a basketgroup function closebasketgroup(bgid) { var answer=confirm(_("Are you sure you want to close this basketgroup?")); if(! answer){ return; } ulid = 'bg-'+bgid; var i = 0; tagname='basketgroup-'+bgid+'-closed'; var ddtarget; var closeinput = document.getElementById(tagname); closeinput.value = 1; var changed = document.getElementById("basketgroup-"+bgid+"-changed"); changed.value=1; var div = document.getElementById(tagname).parentNode; var stufftoremove = div.getElementsByTagName('p')[0]; var ul = document.getElementById(ulid); var lis = ul.getElementsByTagName('li'); if (lis.length == 0 ) { alert(_("Why close an empty basket?")); return; } var cantprint = document.createElement('p'); div.className = "closed"; ul.className="closed"; for(i=0; iDebug Log" + ""); doc.close(); log.window_ = win; } var logLine = log.window_.document.createElement("div"); logLine.appendChild(log.window_.document.createTextNode(message)); log.window_.document.body.appendChild(logLine); } //======================================================================= function ownerPopup(f) { window.open("/cgi-bin/koha/admin/aqbudget_owner_search.pl?op=budget",'PatronPopup','width=740,height=450,location=yes,toolbar=no,scrollbars=yes,resize=yes'); } // //======================================================================= function getElementsByClass( searchClass, domNode, tagName) { if (domNode == null) domNode = document; if (tagName == null) tagName = '*'; var el = new Array(); var tags = domNode.getElementsByTagName(tagName); var tcl = " "+searchClass+" "; for(i=0,j=0; i 0 ) { remainingTotal.style.color = 'green'; } else { // if its negative, make it red.. remainingTotal.style.color = 'red'; } remainingTotal.textContent = remainingNew.toFixed(2) ; } function autoFillRow(bud_id) { var remainingTotal = document.getElementById("budget_est_"+bud_id) ; var remainingNew = new Number; var budgetTotal = document.getElementById("budget_tot_"+bud_id ).textContent; var arr = getElementsByClass(bud_id); budgetTotal = budgetTotal.replace(/\,/, ""); var qty = new Number; // get the totals for ( var i=0, len=arr.length; i


"); win.document.write(etc); win.document.write("

"); win.document.write("
"); } //======================================================================= // NEXT BLOCK IS USED BY NEWORDERBEMPTY function calcNeworderTotal(){ //collect values var f = document.getElementById('Aform'); var quantity = new Number(f.quantity.value); var discount = new Number(f.discount.value); var listinc = new Number (f.listinc.value); var currency = f.currency.value; var applygst = new Number (f.applygst.value); var listprice = new Number(f.listprice.value); var invoiceingst = new Number (f.invoiceincgst.value); var exchangerate = new Number(f.elements[currency].value); //get exchange rate var gst_on=(!listinc && invoiceingst); //do real stuff var rrp = new Number(listprice*exchangerate); var ecost = new Number(rrp * (100 - discount ) / 100); var GST = new Number(0); if (gst_on) { rrp=rrp * (1+f.gstrate.value / 100); GST=ecost * f.gstrate.value / 100; } var total = new Number( (ecost + GST) * quantity); f.rrp.value = rrp.toFixed(2); // f.rrp.value = rrp // f.rrp.value = 'moo' f.ecost.value = ecost.toFixed(2); f.total.value = total.toFixed(2); f.listprice.value = listprice.toFixed(2); // gst-stuff needs verifing, mason. if (f.GST) { f.GST.value=GST; } return true; } // ---------------------------------------- //USED BY NEWORDEREMPTY.PL /* function fetchSortDropbox(f) { var budgetId=f.budget_id.value; var handleSuccess = function(o){ if(o.responseText !== undefined){ sort_dropbox.innerHTML = o.responseText; } } var callback = { success:handleSuccess }; var sUrl = '../acqui/fetch_sort_dropbox.pl?sort=1&budget_id='+budgetId var sort_dropbox = document.getElementById('sort1'); var request1 = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback); var rr = '00'; // FIXME: --------- twice , coz the 2 requests get mixed up otherwise var handleSuccess2 = function(o){ if(o.responseText !== undefined){ sort2_dropbox.innerHTML = o.responseText; } } var callback2 = { success:handleSuccess }; var sUrl2 = '../acqui/fetch_sort_dropbox.pl?sort=2&budget_id='+budgetId; var sort2_dropbox = document.getElementById('sort2'); var request2 = YAHOO.util.Connect.asyncRequest('GET', sUrl2, callback2); } */ //USED BY NEWORDEREMPTY.PL function fetchSortDropbox(f) { var budgetId=f.budget_id.value; for (i=1;i<=2;i++) { var sort_dropbox = document.getElementById('sort'+i); var url = '../acqui/fetch_sort_dropbox.pl?sort='+i+'&budget_id='+budgetId; var xmlhttp = null; xmlhttp = new XMLHttpRequest(); if ( typeof xmlhttp.overrideMimeType != 'undefined') { xmlhttp.overrideMimeType('text/xml'); } xmlhttp.open('GET', url, false); xmlhttp.send(null); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { // stupid JS... } else { // wait for the call to complete } }; // rc = eval ( xmlhttp.responseText ); sort_dropbox.innerHTML = xmlhttp.responseText; } } //USED BY NEWORDEREMPTY.PL function totalExceedsBudget(budgetId, total) { var xmlhttp = null; xmlhttp = new XMLHttpRequest(); if ( typeof xmlhttp.overrideMimeType != 'undefined') { xmlhttp.overrideMimeType('text/xml'); } var url = '../acqui/check_budget_total.pl?budget_id=' + budgetId + "&total=" + total; xmlhttp.open('GET', url, false); xmlhttp.send(null); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { actTotal = eval ( xmlhttp.responseText ); if ( Math.abs(actTotal) < Math.abs(total) ) { // if budget is to low :( return true ; } else { return false; } } } } //USED BY AQBUDGETS.TMPL function budgetExceedsParent(budgetTotal, budgetId, newBudgetParent, periodID) { var xmlhttp = null; xmlhttp = new XMLHttpRequest(); if ( typeof xmlhttp.overrideMimeType != 'undefined') { xmlhttp.overrideMimeType('text/xml'); } // make the call... yawn // var url = '../admin/check_parent_total.pl?budget_id=' + budgetId + '&parent_id=' + newBudgetParent + "&total=" + budgetTotal + "&period_id="+ periodID ; var url = '../admin/check_parent_total.pl?total=' + budgetTotal + "&period_id="+ periodID ; if (budgetId ) { url += '&budget_id=' + budgetId }; if ( newBudgetParent ) { url += '&parent_id=' + newBudgetParent}; xmlhttp.open('GET', url, false); xmlhttp.send(null); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { // stupid JS... } else { // wait for the call to complete } }; var result = eval ( xmlhttp.responseText ); if (result == '1') { return _("- Budget total exceeds parent allocation\n"); } else if (result == '2') { return _("- Budget total exceeds period allocation\n"); } else { return false; } } //USED BY AQBUDGETS.TMPL function checkBudgetParent(budgetId, newBudgetParent) { var xmlhttp = null; xmlhttp = new XMLHttpRequest(); if ( typeof xmlhttp.overrideMimeType != 'undefined') { xmlhttp.overrideMimeType('text/xml'); } var url = '../admin/check_budget_parent.pl?budget_id=' + budgetId + '&new_parent=' + newBudgetParent; xmlhttp.open('GET', url, false); xmlhttp.send(null); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { // do something with the results } else { // wait for the call to complete } }; var result = eval ( xmlhttp.responseText ); if (result == '1') { return _("- New budget-parent is beneath budget\n"); // } else if (result == '2') { // return "- New budget-parent has insufficent funds\n"; // } else { // return false; } } function addColumn(p_sType, p_aArgs, p_oValue) { var allRows = document.getElementById('plan').rows; var colnum = p_oValue[0]; var code = p_oValue[1]; var colnum = new Number(colnum); for (var i=0; i