Tuesday, July 29, 2008

Browser specific javascript coding

Hi Web developers,
You might have encountered some situations where we have to code something based on the browser where it is rendering.Here is a small utility javascript to return the browser version.So that we can code according to the version of browser.

Code

<script language="javascript" type="text/javascript">

function browser()
{
this.ver=navigator.appVersion
this.agent=navigator.userAgent
this.dom=document.getElementById?1:0
this.opera5=this.agent.indexOf("Opera 5")>-1
this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera5)?1:0;
this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera5)?1:0;
this.ie7=(this.ver.indexOf("MSIE 7")>-1 && this.dom && !this.opera5)?1:0;
this.ie4=(document.all && !this.dom && !this.opera5)?1:0;
this.ie=this.ie4||this.ie5||this.ie6||this.ie7
this.mac=this.agent.indexOf("Mac")>-1
this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0;
this.ns4=(document.layers && !this.dom)?1:0;
this.bw=(this.ie7 || this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5)
return this
}
var bw=new browser();

</script>


Usage

<script language="javascript" type="text/javascript">

function clicked()
{
if(bw.ie)
{
alert("Code for ie7");
}
else
{
alert("Code for another browser");
}
}

</script>

Wednesday, July 16, 2008

Catch the browser window closed event and do something.

Simple method which listen to the browser closed event by close button and performs some operations.

  1. Subscribe to the Body.onload using function init()

    <body onload="init();" >
    sample page
    </body>


  2. Subscribe to the onunload event of window object


    function init ( url )
    {
    alert("load");
    window.onunload=unloadwindow;
    }


  3. Do the oprations in the event handler


    function unloadwindow(e)
    {
    alert("unloaded window / closed");
    //Perform your operations here
    }

Monday, July 7, 2008

sql query to find nth largest

Its a famouse question ,if you have attended any interviews as a fresher.
There is no direct or single query to find out as far as I know.We have to use 2 queries and its as follows

Query to find 2nd largest
SELECT TOP (1) salary_amt, emp_id
FROM (SELECT TOP (2) salary_amt, emp_id
FROM salary ORDER BY salary_amt DESC) AS a
ORDER BY salary_amt
Little amount of explanation.
Consider the sample data below .The Name of the Table is Salary and it has 2 columns named emp_id and Salary_amt

Salary(emp_id,salary_amt)
  • (1,1000)
  • (2,500)
  • (3,4000)
  • (4,1000)
  • (5,5000)
  • (6,3000)
Lets start from the inner query which is in italics.This orders the records in descending order and returns top 2 records.
The result will be
  • (5,5000)
  • (3,4000)

Now we are querying on the result which we got.It sort the data(The above result) in ascending order and takes the top most and that is the 2nd largest.

  • (3,4000)

This can be generalized as follows for any value of n

SELECT TOP (1) salary_amt, emp_id
FROM (SELECT TOP (n) salary_amt, emp_id
FROM salary ORDER BY salary_amt DESC
) AS a
ORDER BY salary_amt

This can be altered to suit your situations such as nth smallest

SELECT TOP (1) salary_amt, emp_id
FROM (SELECT TOP (n) salary_amt, emp_id
FROM salary ORDER BY salary_amt) AS a
ORDER BY salary_amt DESC