// read the query string and get the value for a parameter
function getURLParam(key)
{
	var value = "";
	var url = window.location.href;

	if ( url.indexOf("?") > -1 )
	{
		key	= key.toLowerCase();
		var queryString	= url.substr(url.indexOf("?")).toLowerCase();
		var queryStringArr	= queryString.split("&");

		for ( var iParam = 0; iParam < queryStringArr.length; iParam++ )
		{
			if ( queryStringArr[iParam].indexOf(key + "=") > -1 )
			{
				var aParam = queryStringArr[iParam].split("=");
				value = aParam[1];
				break;
			}
		}
	}

	return value;
}

function getFilenameFromURL()
{
	var filename	= "";
	var url = window.location.href;

	if(url.indexOf('?') != -1)
	{
		filename = url.substring(url.lastIndexOf('/')+1,url.indexOf('?')) ;
	}
	else
	{
		filename = url.substring(url.lastIndexOf('/')+1) ;
	}

	return filename;
}

function toggleDisplay(id, status)
{
	//var Dom = YAHOO.util.Dom;

	if (status)
	{
		status	= '';
	}
	else
	{
		status	= 'none';
	}

	if (document.getElementById(id))
	{
		document.getElementById(id).style.display = status;
	}
}

function toggleDisplayByCSS(cssName, status)
{
	//var Dom = YAHOO.util.Dom;
	var elements = document.getElementByIdElementsByClassName(cssName);

	if (status)
	{
		status	= '';
	}
	else
	{
		status	= 'none';
	}

	for (var i=0, k=elements.length; i<k; i++)
	{

		elements[i].style.display = status;
	}
}

function isNumber(value)
{
	if(value == '' || value < 1 || isNaN(value) || value.indexOf('.') > -1)
	{
		return false;	// if value is not a number then return false
	}
	return true;
}

function checkNumberBoxValue(id, label, emptyMsg, errorMsg, allowEmpty, allowZeroes, vlength, vMsg)
{
	if(vlength == undefined)
	{
		vlength	= 0;
	}

	if(id.value == '' && allowEmpty == 1)
	{
		return true;
	}
	else if(id.value == '' && allowEmpty != 1)
	{
		label.innerHTML = emptyMsg;
		id.value = '';
		id.focus();
		return false;
	}
	else if(allowEmpty != 1 && id.value.length != vlength)
	{
		label.innerHTML = vMsg;
		id.value = '';
		id.focus();
		return false;
	}
	else if(allowZeroes == 1 && id.value == 0)
	{
		return true;
	}
	else if(!isNumber(id.value))
	{
		label.innerHTML = errorMsg;
		id.value = '';
		id.focus();
		return false;
	}

	label.innerHTML="";
	return true;
}

function checkNumberBoxMinValue(id, label, emptyMsg, errorMsg, allowEmpty, minlength, minMsg)
{
	if(minlength == undefined)
	{
		minMsg	= 0;
	}

	if(id.value == '' && allowEmpty == 1)
	{
		return true;
	}
	else if(id.value == '' && allowEmpty != 1)
	{
		label.innerHTML = emptyMsg;
		id.value = '';
		id.focus();
		return false;
	}
	else if(id.value != '' && id.value.length < minlength)
	{
		label.innerHTML = minMsg;
		id.value = '';
		id.focus();
		return false;
	}
	else if(!isNumber(id.value))
	{
		label.innerHTML = errorMsg;
		id.value = '';
		id.focus();
		return false;
	}

	label.innerHTML="";
	return true;
}

function isValidFile(obj, extension, label, mesg)
{
	var arr;
	arr = obj.value.split('.');
	len	= arr.length;

	var pattern=new RegExp(extension,"ig");

	if (!arr[len-1].match(pattern))
	{
		label.innerHTML=mesg;
		obj.value = '';
		obj.focus();
		return false;
	}

	label.innerHTML='';
	return true;
}

function isObjEmpty(obj)
{
	if(obj.value.trim() == "" || isNull(obj.value))
	{
		return true;
	}
	return false;
}

function isEmpty(value)
{
	if(value.trim() == "" || isNull(value))
	{
		return true;
	}
	return false;
}

function isNull(val)
{
	return(val==null);
}

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}
//pads left
String.prototype.lpad = function(padString, length) {
	var str = this;
    while (str.length < length)
    {
    	str = padString + str;
    }
    return str;
}
//pads right
String.prototype.rpad = function(padString, length) {
	var str = this;
	while (str.length < length)
        str = str + padString;
    return str;
}
String.prototype.pad = function(l, s, t){
	s	= String(s);
	return s || (s = " "), (l -= this.length) > 0 ? (s = new Array(Math.ceil(l / s.length)
		+ 1).join(s)).substr(0, t = !t ? l : t == 1 ? 0 : Math.ceil(l / 2))
		+ this + s.substr(0, l - t) : this;
};

function checkValue(id,label,emptyMsg)
{
	if(id.value == '' )
	{
		label.innerHTML=emptyMsg;
		id.focus();
		return false;
	}
	label.innerHTML="";
	return true;
}

function checkAlphaNumeric(id,label,emptyMsg,errorMsg)
{
	var charpos = id.value.search("[^A-Za-z0-9]");
	if(id.value == '' )
	{
		label.innerHTML=emptyMsg;
		id.focus();
		return false;
	}
	else if ( charpos >= 0 )
	{
		label.innerHTML=errorMsg;
		id.value="";
		id.focus();
		return false;
	}
	label.innerHTML="";
	return true;
}

function checkAlphaSpaceNumeric(id,label,emptyMsg,errorMsg)
{
	var charpos = id.value.search("[^A-Za-z0-9 ]");
	if(id.value == '' )
	{
		label.innerHTML=emptyMsg;
		id.focus();
		return false;
	}
	else if ( charpos >= 0 )
	{
		label.innerHTML=errorMsg;
		id.value="";
		id.focus();
		return false;
	}
	label.innerHTML="";
	return true;
}

function checkAlpha_Numeric(id,label,emptyMsg,errorMsg)
{
	var charpos = id.value.search("[^A-Za-z0-9_]");
	if(id.value == '' )
	{
		label.innerHTML=emptyMsg;
		id.focus();
		return false;
	}
	else if ( charpos >= 0 )
	{
		label.innerHTML=errorMsg;
		id.value="";
		id.focus();
		return false;
	}
	label.innerHTML="";
	return true;
}

function checkAlphaSpace_Numeric(id,label,emptyMsg,errorMsg)
{
	var charpos = id.value.search("[^A-Za-z0-9_ ]");

	if(id.value.trim() == '' )
	{
		label.innerHTML=emptyMsg;
		id.focus();
		return false;
	}
	else if ( charpos >= 0 )
	{
		label.innerHTML=errorMsg;
		id.value="";
		id.focus();
		return false;
	}

	label.innerHTML="";
	return true;
}

function checkEmail(id,label,emptyMsg, errorMsg, allowEmpty)
{
	var charPos = id.value.search(/^\w+(((\.|-){0,1}\w+))*\@\w+(((\.|-){0,1}\w+))?\.[A-Za-z]{2,}$/);

	if(id.value=='' && allowEmpty != 1)
	{
		label.innerHTML=emptyMsg;
		id.focus();
		return false;
	}
	else if(id.value != '' && charPos == -1)
	{
		label.innerHTML=errorMsg;
		id.value="";
		id.focus();
		return false;
	}
	else
	{
		label.innerHTML="";
		return true;
	}
}

function checkPhoneNumber(id, label, emptyMsg, errorMsg, allowEmpty, minlength, minMsg)
{
	var charPos = id.value.search("[^0-9]-");

	if(minlength == undefined)
	{
		minMsg	= 0;
	}

	if(id.value == '' && allowEmpty == 1)
	{
		return true;
	}
	else if(id.value == '' && allowEmpty != 1)
	{
		label.innerHTML = emptyMsg;
		id.value = '';
		id.focus();
		return false;
	}
	else if(id.value != '' && minlength != undefined && id.value.length < minlength)
	{
		label.innerHTML = minMsg;
		id.value = '';
		id.focus();
		return false;
	}
	else if(!checkInternationalPhone(id.value))
	{
		label.innerHTML = errorMsg;
		id.value = '';
		id.focus();
		return false;
	}

	label.innerHTML="";
	return true;
}

function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkInternationalPhone(strPhone)
{
	// Declaring required variables
	var digits = "0123456789";
	// non-digit characters which are allowed in phone numbers
	var phoneNumberDelimiters = "()- ";
	// characters which are allowed in international phone numbers
	// (a leading + is OK)
	var validWorldPhoneChars = phoneNumberDelimiters + "+";
	// Minimum no of digits in an international phone no.
	var minDigitsInIPhoneNumber = 10;
	var bracket=3;

	strPhone=strPhone.trim();
	if(strPhone.indexOf("+")>1) return false;
	if(strPhone.indexOf("-")!=-1)bracket=bracket+1;
	if(strPhone.indexOf("(")!=-1 && strPhone.indexOf("(")>bracket)return false;
	var brchr=strPhone.indexOf("(");
	if(strPhone.indexOf("(")!=-1 && strPhone.charAt(brchr+2)!=")")return false;
	if(strPhone.indexOf("(")==-1 && strPhone.indexOf(")")!=-1)return false;
	s=stripCharsInBag(strPhone,validWorldPhoneChars);
	return (isNumber(s) && s.length >= minDigitsInIPhoneNumber);
}
