Search This Blog For Stuff

Loading...

Sunday, March 7, 2010

Avoid getting a virus in the first place

Some advice I bestowed on a Win7 user after a virus malfunction on previous Vista installation -- In this case, the new user profile is a limited account and there's a separate account called "ADMIN" for -- well, you can guess.


BACKUPS
don't forget after each successful improvement (ie. installing bittorrent) "create a system restore point" or do a full "system image backup" -- you can back that directly to your external usb harddrive --- it will take lots of time but that's for monthly or just before doing something major.

if in trying to improve it or install something and it goes awry, just go back to before the mess using "system restore point" or in THE CASE OF VIRUS:  do the full system image restore (from USB harddrive or DVD's I gave you in your Win7 box
** NOTE: keep good records of date/time when you label these backups -- trust me, that helps a lot later.

ABOUT MAINTENANCE
just leave it on at least one night during the week, otherwise shutdown or AT LEAST hibernate.  Win7 is better than XP, but still wants to be restarted fairly often (full shutdown, startup).  Leaving it on one or two nights a week will keep it running smooth as it will do scans and defrag on it's own.

USER ACCOUNT
I know the admin thing and the prompts are horrible but it's a necessary evil to keep your system clean. 
For older software, you may need to 
  • rick (right-click) the setup.exe or whatever
  • choose "Run as Admin.."
If that fails, you can use "troubleshooter mode" which will help you give the installer unrestricted access to install and run (make sure you TRUST the program)


For the XP user: you can recreate this "Run as" functionality to run untrusted programs in a couple of ways.  The built-in way and the after-market way.  Either would be sufficient.  For the really paranoid (or extra cautious) folk, you can run most programs inside a "sandbox" like "sandboxie" which is a program I actually bought b/c it's so nifty.  So many uses for it that it needs it's own post, coming soon.  Meanwhile, just search.

CHANGE YOUR PASSWORDS
make good ones that you'll remember, but that have more than just lowercase letters:

g00dL0rd1L0v3@g00dp@ssw0Rd

"good lord I love a good password"

save yourself some headaches and log in as admin to do admin-type things -- sometimes logging out of other users or restarting is warranted and recommendable.  Typing it in a few times and burning it into your skull will help later when you need to remember it.  Windows will encrypt your stuff for you if you want it to.  Documents encrypted in that fashion become unrecoverable w/o the password -- so you CAN and SHOULD "create password reset disk" and lock in a firesafe.




Digg Technorati del.icio.us Stumbleupon Reddit Blinklist Furl Spurl Yahoo Simpy

Sunday, February 28, 2010

When dealing with a particularly nasty virus on a Vista machine -- av.exe a faux virus scanner telling you that you have to purchase the full version to remove all the many virus' found (a common scare tactic to glean your credit card number from you) -- I found myself able to create a new admin user and change the regular user into a limited account.

If you're interested in the virus, I ran through a more/less version of this post, and also did more scans once logged in via admin -- but don't log in as the regular user, that has been too badly tainted and the combination of virus scanners could not get the whole thing.  Basically it rolls like this:

offline scans (bootable CD's, linux -- knoppix mostly) with:
bitdefender
kaspersky
dr. web
f-secure
panda
avast

(those last two weren't on their own boot CD, so don't know if they have them, I used PE ver.)

from a boot disk like BartPE or UBCD, use regeditPE (of sorts) to load default user profile on C:\ and ensure it's cleanness, use other PE tools to find other auto-load places (hijackthis, etc)
* reset users' password to blank (cuz i no nose it)
* turn off any unknown services (try not to turn off drivers though, that's a pain to troubleshoot unless you're diligent enough to make copies of the ones you turn off) and also any suspect known ones (at this point, I disabled symantec entirely b/c I could not confirm it's cleanliness... along w/ any other runtimes I could not verify to be genuine)

boot up in safe mode

create admin user (note that av.exe starts running despite best efforts to this point)

reboot and login as admin
* SET A STRONG PASSWORD, reboot
* install SP2 and run updates

reboot and install Microsoft Security Essentials
* update and scan (found 3 more trojans and asked me to submit av.exe for analysis)

manually pick clean the users' settings directly from their profile (file level, DO NOT LOGIN AS THEM) and populate current user w/ favourites, repair'd or reinstalled apps, etc..

use the method below to copy the default user profile and delete/create a new profile for the user
* log in as them

...the whole copying a default user profile from existing pre-setup user is an excellent legacy procedure spawning from the days of XP.  So, for posterity, here it is in it's vista form (have tried once quickly in Windows 7 but failed... likely a permission problem or registry something).

My apologies to the person who wrote this, I think it was from a technet community forum or something like that -- not that anyone reads my blog but me -- but credits to that person, whomever it is...

----



    Anyhow, this is the way that I copy a user profile to the default profile:
  1. Configure the profile to copy then reboot and login as another administrator account.  The profile that I want to copy is always that of either the Administrator or an account with full administrator access.
  2. Press + to open the System window.  You can also get to it from Control Panel > System and Maintenance > System.
  3. Open the Advanced System Settings from the Tasks list and click Continue on the permission prompt.
  4. Click the Settings button under User Profiles.
  5. Highlight the profile you want to copy to the Default profile then click the Copy To... button.
  6. In the Copy To window, click Browse to select the C:\Users\Default folder or just type it into the Copy Profile To field.
  7. Click the Change button under the Permitted To Use section.
  8. In the Select User or Group window, type "Everyone" in the text box then click OK.  Leave off the quotes around Everyone.  Then Click OK.
  9. You are returned to the Copy To window.  Click OK.
  10. A Confirm Copy window will come up that tells you the directory already exists and asks if you're sure you want to continue.  Click Yes.
  11. After the profile is copied, you are returned to the User Profiles window.  Just close all the windows.


    After the copy, I open REGEDIT and load the ntuser.dat hive that is in the Default folder.  From there, I search for any values that contain the path information for the source profile's user folder (ie. C:\Users\SourceUser) and delete it.  Be certain you only delete these entries from the hive that you loaded into the registry.  Finally, unload the hive and exit the registry editor.

    Here's a quick rundown on opening the Default user's ntuser.dat file:

    1.  Open RegEdit
    2.  Highlight the HKEY_USERS key
    3.  Select Load Hive from the Files menu
    4.  Select the C:\Users\Default\ntuser.dat file and click Open
    5.  You will be asked for a Key Name.  I usually use DEFAULT_USER
    6.  Highlight the HKEY_USERS\DEFAULT_USER key and follow the directions in my previous post
    7.  After removing all the necessary entries, Highlight HKEY_USERS\DEFAULT_USER again
    8.  Select Unload Hive from the Files menu and click Yes to confirm
    9.  Close RegEdit and delete the ntuser.dat.log file from the C:\Users\Default folder



    I've never had any issues deleting the Registry Values that contain the source user path information and I've been using this process for years.  Please let me know if this helps you and if you need more assistance.





Digg Technorati del.icio.us Stumbleupon Reddit Blinklist Furl Spurl Yahoo Simpy

Tuesday, January 12, 2010

Chrome for Linux is (NOT!) killing my VMWare Workstation Virtual Machine in Ubuntu 9.10

--=LATEST=--
Well, all seems to be okay now running Win7 in VirtualBox OSE w/ the Sun VirtualBox Guest Additions and trimming down the RAM to 1GB.  So my problem is either:

a) 2GB RAM (out of 3.8GB) is too much RAM for Linux to give up
b) 2GB RAM is too much for VMware Workstation to manage
c) I have a bad RAM stick

So, after bumping my Win7 VM up to 2048MB RAM (and even installing Google Chrome, lol) the same sluggish host performance has not been found.  The performance of the VM is not awesome... but I have compiz on, some 16 FireFox tabs, shoutcast streaming techno music.  So, we're at about where we should be and I can rule out  a)  &  c)  as the culprits to my issue.

But I'll say one thing, Linux runs nicer off an SSD than Windows (even Win Se7en!!) and I haven't even tweaked it... ahh, nice to have a fresh copy of Karmic Koala anywhoo...

--=ORiGiNaL=--
VMware Workstation 7 running on 64 bit Ubuntu 9.10 host with Windows 7 x64 Ultimate as guest.

Win7 crawling at a snails pace -- so slow, it was making my PC useless.  I couldn't decide if it was the SSD drive I had installed W7 onto (via "Physical Disk" method) or what (well, true, there does seem to be a huge performance problem with using the OCZ Core 32GB SSD drive with the virtual machine) -- but after some troubleshooting, I found that it only became unbearable when Google Chrome was running.  Odd.

Thing is, I don't know enough about memory leaks or Linux itself to troubleshoot much more than this... all I can do is not run Workstation at the same time as Chrome.  That's okay, my FireFox was feeling neglected.

I can say this:  With VMware Workstation 6.5 and Ubuntu 9.10 with win7 guest, it was still exhibiting the same issues..  this is why I upgraded to Workstation 7 -- but that did not do it.  So, my thought is that it's Chrome.  Although, my old XP guest seems to not cause this kind of issue -- really at a loss on this one.

Anyone have thoughts or similar experiences?  I could not find much research on the interwebs about it.

--=UPDATE=--

okay, I went ahead and reconfig'd everything and installed Linux on the SSD and made a software raid stripe to house the Win7 VM -- system crawling again.  What the hell?  I didn't even install Chrome yet!!

Specs:
Asus P5B-vm
4GB 800Mhz RAM
Intel Core2 Quad Q6600 @ 2.4Ghz
2x 80GB WD
1x OCZ Core 32GB SSD

VM gets 2x Processors (1x Core), 2048GB RAM and a 40GB Pre-allocated vmdk virtual disk on a EXT4 partition on top of a 1MB cluster'd stripe array (across the 2x 80's)

ARRRRGGGH


Digg Technorati del.icio.us Stumbleupon Reddit Blinklist Furl Spurl Yahoo Simpy

Sunday, November 22, 2009

m3u to DVD in Ubuntu

stole this from the ubuntuforums website...
  1. used Rythmbox to create a dynamic playlist (genre LIKE alternative, year > 2002, artist <> 'nickleback')
  2. saved as m3u
  3. ran this command in terminal against my playlist file (I had k3b open, don't know if it needs to be...)
  4. trim down to 4.7GB, burn, play in DVD player on home theatre system... bob's your uncle, thank your mother for the eggs.

Re: How to burn music files (mp3, ogg...) according to a playlist (m3u, pls...)

Hi,
save your playlist as .m3u and then :

Code:
sed '/^#/d' MyPlayListFile.m3u | tr '\n' '\0' | xargs -0 k3b --datacd
or if you prefer Brasero

Code:
sed '/^#/d' cd\ aprile\ 2009.m3u | tr '\n' '\0' | xargs -0 brasero -d
bye Fil


Digg Technorati del.icio.us Stumbleupon Reddit Blinklist Furl Spurl Yahoo Simpy

Friday, August 14, 2009

disable the time synchronization in a virtual machine using vmware workstation

Should you, for whatever reason need to power up a VM hosting w/ VMWare Workstation without having it sync the time, edit the .vmx file for your virtual machine and add these settings:

tools.syncTime = "FALSE"
time.synchronize.continue = "FALSE"
time.synchronize.restore = "FALSE"
time.synchronize.resume.disk = "FALSE"
time.synchronize.resume.memory = "FALSE"
time.synchronize.shrink = "FALSE"
time.synchronize.tools.startup = "FALSE"
time.synchronize.resume = "FALSE"
rtc.startTime = 1250197532

RTC time is... well, I'm not getting into it... but this dude made an app to calc the right number for it -- he has a blog. But I can't find it. So here's a different link.


Digg Technorati del.icio.us Stumbleupon Reddit Blinklist Furl Spurl Yahoo Simpy

Hard Reset your HTC Android phone without access to the Settings menu

Um, so, my little HTC Dream sporting Android 1.5 (Cupcake) starting barfing on me the other day... when I would try to click into the settings menu, it would just disappear, poof, no error, nothing.

And with the random rebooting.

And the missing apps and settings... oye-vey. All because I let it die. Big time.

long story short, do this to get a hard-reset going:

  1. take the battery out
  2. hold down the "home" and "power" keys -- keep holding
  3. put the battery back in
  4. you'll see a cmos logo (mine aptly sports the Rogers logo) -- let go of the keys
  5. you'll see a triangle symbol
  6. press home/power together briefly
  7. use the menu to wipe / reset the phone

Bob is your uncle.

signed, Uncle Bob


Digg Technorati del.icio.us Stumbleupon Reddit Blinklist Furl Spurl Yahoo Simpy

Monday, August 10, 2009

BambooInvoice Canadian Tax System

UPDATE: Our good friend Derek Allard (whose brainchild is said BambooInvoice) has informed me over at the BI Forums that an update is forthcoming which will include a much more versitile taxation system. /me wonders what other delicious treats will be bundled with this new incarnation... shall it even be 1.0 ??!

--==:[0000.0000]:==--

Not just for Canadians, but anyone who may want to use one, the other or both taxes on a single line item in Bamboo Invoice.

**WARNING** This hack is not for the faint of heart, I may have missed something in the chronicling of this adventure and I can't guarantee this will work for you in any way.

In case you haven't heard, BambooInvoice is only the slickest open source online invoicing system built with CodeIgnitor.

This mod is quite a hack, but the principal is to double the 'taxable' functionality for each line item, thus having a taxable1 and taxable2 for each item on the invoice.

To pull this off, modify the existing bamboo_invoice_items.taxable field to be called bamboo_invoice_items.taxable1 and add another field of INT(1) or BOOLEAN (if you will) called bamboo_invoice_items.taxable2

...Then make the following changes to the following files.


***********
[/bamboo_system_files/application/controllers/invoices.php]
-> Line 141:

foreach ($items as $item)
{
//$taxable = (isset($item['taxable']) && $item['taxable'] == 1) ? 1 : 0;
$taxable1 = (isset($item['taxable1']) && $item['taxable1'] == 1) ? 1 : 0;
$taxable2 = (isset($item['taxable2']) && $item['taxable2'] == 1) ? 1 : 0;
$sub_amount = $item['quantity'] * $item['amount'];
$amount += $sub_amount;
$tax1_amount += $sub_amount * (($tax1_rate)/100) * $taxable1;
$tax2_amount += $sub_amount * (($tax2_rate)/100) * $taxable2;
}

echo '{"amount" : "'.number_format($amount, 2, $this->config->item('currency_decimal'), '').'", "tax1_amount" : "'.number_format($tax1_amount, 2, $this->config->item('currency_decimal'), '').'", "tax2_amount" : "'.number_format($tax2_amount, 2, $this->config->item('currency_decimal'), '').'", "total_amount" : "'.number_format($amount + $tax1_amount+$tax2_amount, 2, $this->config->item('currency_decimal'), '').'"}';
}


-> Line 225:

$amount = 0;
foreach ($items as $item)
{
$taxable1 = (isset($item['taxable1']) && $item['taxable1'] == 1) ? 1 : 0;
$taxable2 = (isset($item['taxable2']) && $item['taxable2'] == 1) ? 1 : 0;

$invoice_items = array(
'invoice_id' => $invoice_id,
'quantity' => $item['quantity'],
'amount' => $item['amount'],
'work_description' => $item['work_description'],
'taxable1' => $taxable1,
'taxable2' => $taxable2
);

$this->invoices_model->addInvoiceItem($invoice_items);
}

redirect('invoices/view/'.$invoice_id);

-> Line 426:
// add them back
$items = $this->input->post('items');
foreach ($items as $item)
{
$taxable1 = (isset($item['taxable1']) && $item['taxable1'] == 1) ? 1 : 0;
$taxable2 = (isset($item['taxable2']) && $item['taxable2'] == 1) ? 1 : 0;

$invoice_items = array(
'invoice_id' => $invoice_id,
'quantity' => $item['quantity'],
'amount' => $item['amount'],
'work_description' => $item['work_description'],
'taxable1' => $taxable1,
'taxable2' => $taxable2
);

$this->invoices_model->addInvoiceItem($invoice_items);
}

// give a session telling them it worked

-> Line 550:

$amount = 0;
foreach ($items as $item)
{
$taxable1 = (isset($item['taxable1']) && $item['taxable1'] == 1) ? 1 : 0;
$taxable2 = (isset($item['taxable2']) && $item['taxable2'] == 1) ? 1 : 0;

$invoice_items = array(
'invoice_id' => htmlspecialchars($invoice_id),
'quantity' => htmlspecialchars($item['quantity']),
'amount' => htmlspecialchars($item['amount']),
'work_description' => htmlspecialchars($item['work_description']),
'taxable1' => htmlspecialchars($taxable1),
'taxable2' => htmlspecialchars($taxable2)
);

$this->invoices_model->addInvoiceItem($invoice_items);
}
}

***********

[/bamboo_system_files/application/language/english/bamboo_lang.php]
-> Line 108:
$lang['invoice_item'] = 'Item';
$lang['invoice_item_no_tax1'] = 'GST Exempt';
$lang['invoice_item_no_tax2'] = 'PST Exempt';
$lang['invoice_last_used'] = 'last number used ';
***********

[/bamboo_system_files/application/models/invoices_model.php]
-> Line 92: ...replace the whole function...
function getSingleInvoice($invoice_id)
{
$this->db->select('invoices.*, clients.name, clients.address1, clients.address2, clients.city, clients.country, clients.province, clients.website, clients.postal_code, clients.tax_code');
$this->db->select('(SELECT SUM('.$this->db->dbprefix('invoice_payments').'.amount_paid) FROM '.$this->db->dbprefix('invoice_payments').' WHERE '.$this->db->dbprefix('invoice_payments').'.invoice_id=' . $invoice_id . ') AS amount_paid', FALSE);
$this->db->select('TO_DAYS('.$this->db->dbprefix('invoices').'.dateIssued) - TO_DAYS(curdate()) AS daysOverdue', FALSE);
$this->db->select('(SELECT SUM('.$this->db->dbprefix('invoice_items').'.amount * '.$this->db->dbprefix('invoice_items').'.quantity) FROM '.$this->db->dbprefix('invoice_items').' WHERE '.$this->db->dbprefix('invoice_items').'.invoice_id=' . $invoice_id . ') AS total_notax', FALSE);


$this->db->select('(SELECT ROUND(SUM(SubTotal_Tax1) * tax1, 3) as total_tax1
FROM (SELECT tax1, amt * qty AS SubTotal_Tax1
FROM (SELECT '.$this->db->dbprefix('invoice_items').'.quantity AS qty, '.$this->db->dbprefix('invoice_items').'.amount AS amt, ('.$this->db->dbprefix('invoices').'.tax1_rate / 100) as tax1
FROM '.$this->db->dbprefix('invoices').' LEFT JOIN '.$this->db->dbprefix('invoice_items').' ON '.$this->db->dbprefix('invoices').'.id = '.$this->db->dbprefix('invoice_items').'.invoice_id WHERE '.$this->db->dbprefix('invoice_items').'.invoice_id =' . $invoice_id . ' AND '.$this->db->dbprefix('invoice_items').'.taxable1 =1 ) AS tmp_Tax_Total ) AS tmp_Total) AS total_tax1', FALSE);


$this->db->select('(SELECT ROUND(SUM(SubTotal_tax2) * tax2, 3) as total_tax2
FROM (SELECT tax2, amt * qty AS SubTotal_tax2
FROM (SELECT '.$this->db->dbprefix('invoice_items').'.quantity AS qty, '.$this->db->dbprefix('invoice_items').'.amount AS amt, ('.$this->db->dbprefix('invoices').'.tax2_rate / 100) as tax2
FROM '.$this->db->dbprefix('invoices').' LEFT JOIN '.$this->db->dbprefix('invoice_items').' ON '.$this->db->dbprefix('invoices').'.id = '.$this->db->dbprefix('invoice_items').'.invoice_id WHERE '.$this->db->dbprefix('invoice_items').'.invoice_id =' . $invoice_id . ' AND '.$this->db->dbprefix('invoice_items').'.taxable2 =1 ) AS tmp_Tax_Total ) AS tmp_Total) AS total_tax2', FALSE);

$this->db->select('(SELECT SUM(total_notax + COALESCE(total_tax1,0) + COALESCE(total_tax2,0))) AS total_with_tax');


$this->db->join('clients', 'invoices.client_id = clients.id');
$this->db->join('invoice_items', 'invoices.id = invoice_items.invoice_id', 'left');
$this->db->join('invoice_payments', 'invoices.id = invoice_payments.invoice_id', 'left');
$this->db->groupby('invoices.id');
$this->db->where('invoices.id', $invoice_id);

return $this->db->get('invoices');
}

// --------------------------------------------------------------------

-> Line 238:
$this->db->select('TO_DAYS('.$this->db->dbprefix('invoices').'.dateIssued) - TO_DAYS(curdate()) AS daysOverdue', FALSE);
$this->db->select('(SELECT SUM('.$this->db->dbprefix('invoice_items').'.amount * '.$this->db->dbprefix('invoice_items').'.quantity) FROM '.$this->db->dbprefix('invoice_items').' WHERE '.$this->db->dbprefix('invoice_items').'.invoice_id='.$this->db->dbprefix('invoices').'.id) AS subtotal', FALSE);

$this->db->join('clients', 'invoices.client_id = clients.id');

***********

[/bamboo_system_files/application/views/invoices/edit.php]
-> Line 42:
<th><?php echo $this->lang->line('invoice_work_description');?></th>
<th><?php echo $this->lang->line('invoice_taxable1');?></th>
<th><?php echo $this->lang->line('invoice_taxable2');?></th>
<th><?php echo $this->lang->line('invoice_amount_item');?></th>
-> Line 64:
</td>
<td><p><label><input type="checkbox" name="items[<?php echo $item_count;?>][taxable1]" value="1" onclick="recalculate_items();" <?php if ($item->taxable1 == 1) {echo 'checked="checked" ';}?>/><span><?php echo $this->lang->line('invoice_taxable1');?>?</span></label></p></td>
<td><p><label><input type="checkbox" name="items[<?php echo $item_count;?>][taxable2]" value="1" onclick="recalculate_items();" <?php if ($item->taxable2 == 1) {echo 'checked="checked" ';}?>/><span><?php echo $this->lang->line('invoice_taxable2');?>?</span></label></p></td>
<td nowrap="nowrap"><p><label><span><?php echo $this->lang->line('invoice_amount');?></span><?php echo $this->settings_model->get_setting('currency_symbol');?><input type="text" id="amount" name="items[<?php echo $item_count;?>][amount]" size="5" value="<?php echo $item->amount;?>" onkeyup="recalculate_items();" value="" /></label></p></td>

***********

[/bamboo_system_files/application/views/invoices/newinvoice.php]
-> Line 38:
<th><?php echo $this->lang->line('invoice_work_description');?></th>
<th><?php echo $tax1_desc;?></th>
<th><?php echo $tax2_desc;?></th>
<th><?php echo $this->lang->line('invoice_amount_item');?></th>

-> Line 54:
</td>
<td><p><label><input type="checkbox" name="items[1][taxable1]" value="1" onclick="recalculate_items();" <?php if ($row->tax_status) {echo 'checked="checked" ';}?>/><span><?php echo $this->lang->line('invoice_taxable1');?>?</span></label></p></td>
<td><p><label><input type="checkbox" name="items[1][taxable2]" value="1" onclick="recalculate_items();" <?php if ($row->tax_status) {echo 'checked="checked" ';}?>/><span><?php echo $this->lang->line('invoice_taxable2');?>?</span></label></p></td> <td nowrap="nowrap"><p><label><span><?php echo $this->lang->line('invoice_amount');?></span><?php echo $this->settings_model->get_setting('currency_symbol');?><input type="text" id="amount" name="items[1][amount]" size="5" value="0.00" onkeyup="recalculate_items();" value="" /></label></p></td>
<td> </td>
***********

[/bamboo_system_files/application/views/invoices/view.php]
-> Line 169:
<td><?php echo auto_typography($item->work_description);?></td>
<td><p><?php echo $this->settings_model->get_setting('currency_symbol') . str_replace('.', $this->config->item('currency_decimal'), $item->amount);?> <?php if ($item->taxable1 == 0){echo '(' . $this->lang->line('invoice_item_no_tax1') . ')';}?>
<?php if ($item->taxable2 == 0){echo '(' . $this->lang->line('invoice_item_no_tax2') . ')';}?></p></td>
<td><p><?php echo $this->settings_model->get_setting('currency_symbol') . number_format($item->quantity * $item->amount, 2, $this->config->item('currency_decimal'), '');?></p></td>
***********

[/js/createinvoice.js]
-> Line 84:
theInput.setAttribute('type', 'checkbox');
theInput.setAttribute('name', 'items['+item_count+'][taxable1]');

if (taxable)

-> Line 105: ...insert the following...

var td = document.createElement('td');
var p = document.createElement('p');
var label = document.createElement('label');
var span = document.createElement('span');
var theData = document.createTextNode(lang_taxable);
var theInput = document.createElement('input');
theInput.setAttribute('type', 'checkbox');
theInput.setAttribute('name', 'items['+item_count+'][taxable2]');

if (taxable)
{
theInput.setAttribute('checked', 'checked');
}
else
{
theInput.checked = false;
}

theInput.setAttribute('value', '1');
theInput.setAttribute('onclick', 'recalculate_items();');
span.appendChild(theData);
label.appendChild(span);
label.appendChild(theInput);
p.appendChild(label);
td.appendChild(p);
row.appendChild(td);



Digg Technorati del.icio.us Stumbleupon Reddit Blinklist Furl Spurl Yahoo Simpy

Video Bar

Loading...

Usage Policy

You are free to view, read, click and use the features of this blog as outlined in the terms & services agreement found here. All post data is copyright it's original owner as indicated or the blog editor. All registered trademarks and copy protected images or text found on this site belong to their respective owner in their copy protected country. The only one responsible in any way for any thing related to the content found herein is you - for it is you whom is interpreting it.