@baisong 
This is really pedantic of me, but my cache clear is taking forever and I have nothing better to do.  Could you change else if to elseif as per https://drupal.org/coding-standards#controlstruct  (No idea why that's in the coding standards, but it is)