var xmlHttp
function post_form(frm, action)
{
    frm = document.getElementById(frm)    
    if (frm)
    {
        frm.method='post';
        if ((action != null) && (action != ''))
            frm.action=action;
        frm.submit();
    }
}

function popUp(id, URL, w, h) {
    eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=0,width=" + w + ",height=" + h + "');");
}

function isDigit() {
    if(navigator.userAgent.indexOf("MSIE") != -1) 
    { /* for IE */ 
        if ((event.keyCode < 48)||(event.keyCode > 57 )) {
            event.returnValue=false;     
        }
    }
}

function isDigitForNetscape(e) {
    if ((navigator.appName.indexOf("Netscape") != -1) || (navigator.appName.indexOf("Opera") != -1)) 
    { /* for Netscape, Mozilla, Opera */        
        if ((e.keyCode == 32)||(e.keyCode == 59)||(e.keyCode == 61)||(e.keyCode == 109)||(e.keyCode == 188)||((e.keyCode >= 65) && (e.keyCode <= 90))||((e.keyCode >= 190) && (e.keyCode <= 192))||((e.keyCode >= 219) && (e.keyCode <= 222)))
        {e.preventDefault()=false;}        
    }    
}

function isDecimal(val)
{            
    if(navigator.userAgent.indexOf("MSIE") != -1) 
    { /* for IE */ 
        if ((event.keyCode < 48)||(event.keyCode > 57 )) {
            if (event.keyCode != 46)
	        {event.returnValue=false;}
        }
        //if key being pressed is decimal point, check if decimal point already exist
        if (val.indexOf(".") != -1)
        {
            if (event.keyCode == 46)
	            {event.returnValue=false;}
        }
    }    
}

function isDecimalForNetscape(val, e)
{    
    if ((navigator.appName.indexOf("Netscape") != -1) || (navigator.appName.indexOf("Opera") != -1)) 
    { /* for Netscape, Mozilla, Opera */        
        if ((e.keyCode == 32)||(e.keyCode == 59)||(e.keyCode == 61)||(e.keyCode == 109)||(e.keyCode == 188)||(e.keyCode == 191)||(e.keyCode == 192)||((e.keyCode >= 65) && (e.keyCode <= 90))||((e.keyCode >= 219) && (e.keyCode <= 222)))
        {e.preventDefault()=false;}
        //if key being pressed is decimal point, check if decimal point already exist
        if (val.indexOf(".") != -1)
        {
            if (e.keyCode == 190)
	            {e.preventDefault()=false;}
        }
    }
}

function validateContactNo(id, msg, len, t)
{ 
    var bIsContactNo = true
    obj = document.getElementById(id);
    str = obj.value
    if (str != "")
    {
        if (str.length != len)
        { bIsContactNo = false }
        else
        {
            fc =str.charAt(0)
            if (t == 'r')
            {
                if (fc != "6")
                    { bIsContactNo = false }
            }
            else if(t == 'm')
            {
                if (fc != "8" && fc != "9" )
                    { bIsContactNo = false }
            }
            else
            {
                if (fc != "8" && fc != "9" && fc != "6" )
                    { bIsContactNo = false }
            }
        }
    }
    else
    {bIsContactNo = false }
    
    if (bIsContactNo)
    { return true; }
    else
    { alert(msg); obj.focus(); return false; }   
}

function validateFileExtension(id, msg, validextensions)
{
    obj = document.getElementById(id);
    if (obj.value == ""){ alert(msg); obj.focus(); return false; }
    fulext = obj.value.substring(obj.value.lastIndexOf('.') + 1).toLowerCase();
    if ((fulext!='jpg') && (fulext!='jpeg')){ alert(msg); obj.focus(); return false; }
    return true;
}

function validatePostalCode(id, msg)
{
    obj = document.getElementById(id);
    if (obj.value.length == 6) { return true; } else { alert(msg); obj.focus(); return false; }
}

function validateDate(id, msg)
{
    obj = document.getElementById(id);
    if (isDate(obj.value)) { return true; } else { alert(msg); obj.focus(); return false; }
}

function validateTxt(id, msg)
{
    obj = document.getElementById(id);
    if (obj.value != ""){ return true; } else { alert(msg); obj.focus(); return false; }
}

function validateCbx(id, msg)
{
    obj = document.getElementById(id);
    if (obj.checked){ return true; } else { alert(msg); obj.focus(); return false; }
}

function validateCbo(id, msg)
{    
    obj = document.getElementById(id);
    if (obj.options[obj.selectedIndex].value != ''){ return true; } else { alert(msg); obj.focus(); return false; }
}

function validateRad(id, cnt, msg)
{
    bValid = false;
    for (i=1;i<=cnt;i++){
        obj = document.getElementById(id+i.toString());
        if(obj.checked){bValid=true;}
    }
    if (bValid){ return true; } else { alert(msg); return false; }
}

function validateNRIC(id, msg)
{    
    obj = document.getElementById(id);
    bValid = false;
    if (obj.value.length == 9)
    {                
        if (obj.value.charAt(0).toUpperCase() == 'S')
        {
            if (isNaN(obj.value.charAt(8)))
            {
                var status = true;
                for (var i=1;i<8;i++)
                {
                    if (isNaN(obj.value.charAt(i)))
                    { status = false; }        
                }                                
                if (status)
                { bValid = true; }
            }
        }
    }
    if (!bValid)
    { alert(msg); obj.focus(); return false; }
    else
    { return true; }
}

function validateEmail(id, msg){
    obj = document.getElementById(id);
    str = trim(obj.value)
    var bIsEmail = true
	var at = '@';
	var dot = '.';
	var lat = parseInt(str.indexOf(at));
	var ldot = parseInt(str.lastIndexOf(dot));
	var lstr = parseInt(str.length);
	
	//no '@' or '@' is first character or '@' is the last character
	if ((lat <= 0) || (lat == parseInt(lstr-1)))
		bIsEmail =  false;

	//no '.' or '.' is first character or '.' is the last character
	if (bIsEmail && (ldot <= 0) || (ldot == parseInt(lstr-1)))
		bIsEmail =  false;

	//presence of another '@'
	if (bIsEmail && str.indexOf(at, parseInt(lat+1)) != -1) 
		bIsEmail =  false;

	//presence of '.' before or after '@'
	if (bIsEmail && (str.substr(parseInt(lat - 1), 1) == dot) || (str.substr(parseInt(lat + 1), 1) == dot))
		bIsEmail =  false;

	//check '.' is at least one character after '@'
	if (bIsEmail && str.indexOf(dot, parseInt(lat + 2)) == -1) 
		bIsEmail =  false;

	//check for blank
	if (bIsEmail && str.indexOf(" ") != -1) 
		bIsEmail =  false;

	//check the length after the last '.' is not less than 2 characters
	if (bIsEmail && str.substr(parseInt(ldot + 1)).length < 2) 
		bIsEmail =  false;

	if (bIsEmail && !isAlphaNumeric(str.substr(ldot + 1)))
		bIsEmail =  false;
	
	if (bIsEmail) { return true;}
	else { alert(msg); obj.focus(); return false; }
	
}
function isAlphaNumeric(str){
	for (i=0; i<str.length; i++){
		if (!((str.charCodeAt(i)>=97) && (str.charCodeAt(i)<=122)) && !((str.charCodeAt(i)>=65) && (str.charCodeAt(i)<=90)) && !((str.charCodeAt(i)>=48) && (str.charCodeAt(i)<=57))){
			return false;
		}
	}
	return true;
}

function trim(inputString)
{
	var retValue = inputString;
	var ch = retValue.substring(0, 1);

	while (ch == " ")
	{ // Check for space at the start of the string
		retValue = retValue.substring(1, retValue.length);
		ch = retValue.substring(0, 1);
	}

	ch = retValue.substring(retValue.length-1, retValue.length);

	while (ch == " ")
	{ // Check for spaces at the end of the string
		retValue = retValue.substring(0, retValue.length-1);
		ch = retValue.substring(retValue.length-1, retValue.length);
	}
	
	return retValue;
}

function isEmptyValue(id)
{
    var obj = document.getElementById(id);
    if (obj)
    {
        if (trim(obj.value) != '') {return false;}
    }
    return true;
}

function isDate(datestring)
{    
    var daystring = ''
    var monthstring = ''
    var yearstring = ''
    
    if(datestring == ''){ return false;}
    if(datestring.indexOf('/') != -1)
    {
        daystring = datestring.substring(0, datestring.indexOf('/'))
        datestring = datestring.substring(datestring.indexOf('/')+1)
        if(datestring.indexOf('/') != -1)
        {
            monthstring = datestring.substring(0, datestring.indexOf('/'))
            datestring = datestring.substring(datestring.indexOf('/')+1)
            yearstring = datestring
        }            
    }

    if((daystring != '') && (monthstring != '') && (yearstring != ''))
    {                
	if (daystring == '08') {daystring = '8'; } 
	if (daystring == '09') {daystring = '9'; } 
	if (monthstring == '08') {monthstring = '8'; } 
	if (monthstring == '09') {monthstring = '9'; } 

        //if day is not between 1 - 31 or month is not between 1 - 12        
        if (parseInt(daystring) < 1 || parseInt(daystring) > 31 || parseInt(monthstring) < 1 || parseInt(monthstring) > 12) {return false;;}
        //if month does not have 31 days
        if (parseInt(daystring) == 31 && (parseInt(monthstring) == 2 || parseInt(monthstring) == 4 || parseInt(monthstring) == 6 || parseInt(monthstring) == 9 || parseInt(monthstring) == 11)) {return false;;}            
        //leap year
        if (parseInt(monthstring) == 2)
        {                
            var isleap = (parseInt(yearstring) % 4 == 0 && (parseInt(yearstring) % 100 != 0 || parseInt(yearstring) % 400 == 0));
            if (parseInt(daystring) > 29 || (parseInt(daystring) == 29 && !isleap)) {return false;;}
        }
        if(daystring.length == 1) {daystring = '0' + daystring}
        if(monthstring.length == 1) {monthstring = '0' + monthstring}            
            return true;
    }
    return false;
}

function redirect(url)
{
    window.location = url;
}

function stateChanged() 
{ 
    if (xmlHttp.readyState==4)
    {
        document.getElementById("divGrid").innerHTML=xmlHttp.responseText;
    }
}

function GetXmlHttpObject()
{
    var xmlHttp=null;
    try
    {
        // Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
    }
    catch (e)
    {
        // Internet Explorer 5
        try
        {
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
        // Internet Explorer 6
        catch (e)
        {
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return xmlHttp;
}

function showReport(col, dir, url)
{    
    xmlHttp=GetXmlHttpObject();
    if (xmlHttp==null)
    {
        alert ("Your browser does not support AJAX!");
        return;
    }
    url=url+"?c="+col+"&d="+dir;
    xmlHttp.onreadystatechange=stateChanged;
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);        
}

function showScrap(counter, url)
{    
    xmlHttp=GetXmlHttpObject();
    if (xmlHttp==null)
    {
        alert ("Your browser does not support AJAX!");
        return;
    }
    url = url + '&c=' + counter
    xmlHttp.onreadystatechange=scrapStateChanged;
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
}

function scrapStateChanged() 
{ 
    if (xmlHttp.readyState==4)
    {   
        var txt=xmlHttp.responseText.toString().split('!@#$%');
        document.getElementById("spaTitle").innerHTML=txt[0];
        document.getElementById("divScrap").innerHTML=txt[1];
        document.getElementById("spaFrom").innerHTML=txt[2];
        document.getElementById("spaCounter").innerHTML=txt[3];
    }
}