// common validation functions

// whitespace characters
var whitespace = " \t\n\r";


function isEmail (s)
{ 
    // there must be >= 1 character before @, so we
    // start looking at character position 1 
    // (i.e. second character)
    var i = 1;
    var sLength = s.length;

    // look for @
    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;

    // look for .
    while ((i < sLength) && (s.charAt(i) != "."))
    { i++
    }

    // there must be at least one character after the .
    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}


function isInteger (s)
{   var i;

    // Search through string's characters one by one
    // until we find a non-numeric character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);

        if (!isDigit(c)) return false;
    }

   //checking range
    if(parseInt(s)>2147483647  || parseInt(s)<-2147483648) return false;

    // All characters are numbers.
    return true;
}

function isDigit (c)
{
   return ((c >= "0") && (c <= "9"));
}


function isEmpty(s)
{
   return ((s == null) || (s.length == 0));
}


function isWhitespace (s)
{   var i;
    // Is s empty?
    if (isEmpty(s)) return true;
    // Search through string's characters one by one
    // until we find a non-whitespace character.
    // When we do, return false; if we don't, return true.
    for (i = 0; i < s.length; i++)
    {   // Check that current character isn't whitespace.
        if (whitespace.indexOf(s.charAt(i)) == -1) return false;
    }
    // All characters are whitespace.
    return true;
}

function isSubsetOf(s, charset)
{   var i;
    for (i = 0; i < s.length; i++)
    {
        if (charset.indexOf(s.charAt(i)) == -1) return false;
    }
    return true;
}

function isDate(sDate, format)
{
	var dd = "(0[1-9]|[1-2][0-9]|3[0-1])";
	var mm = "(0[1-9]|1[0-2])";
	var yy = "(\\d{2})";
	var yyyy = "(\\d{4})";
	
	format = format.replace("dd", dd);
	format = format.replace("mm", mm);
	format = format.replace("yyyy", yyyy);
	format = format.replace("yy", yy);
	
	var re = new RegExp("^" + format + "$")
	
	return re.test(sDate);
}


function warnInvalid (theField, s)
{   theField.focus()
    theField.select()
    alert(s)
    return false
}

function selRegion(opt){
   var href, pos;
         
   href = window.location.href;
   href = href.replace(/(region=\d{1,}(&)?)|(&region=\d{1,}$)/, "");
   href = href.replace(/(page=\d{1,}(&)?)|(&page=\d{1,}$)/, "");
   href = href.replace(/\?$/, "");

   if (opt.options[opt.selectedIndex].value > 0)
   {
    if(href.indexOf("?") < 0) href += "?";
    else href += "&";
 
    href += "region=" + opt.options[opt.selectedIndex].value;
   }

   window.location.replace(href);
 }


function getCookieVal(offset){
	var endstr = document.cookie.indexOf(";", offset);
	if(endstr == -1){ endstr = document.cookie.length; }
	return unescape( document.cookie.substring( offset, endstr ) );
}


function GetCookie( name ){

	var arg = name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;

	while( i< clen ){
		
		var j = i + alen;
		if( document.cookie.substring(i, j) == arg ){
			return getCookieVal(j);
		}
		
		i = document.cookie.indexOf(" ", i) + 1;
		
		if(i == 0) break;

	}
	
	return "";
}


function DeleteCookie(name, path, domain){

	if(GetCookie(name)){
		document.cookie = name + "=" +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		": expires=Thu, 01-Jan-70 00:00:01 GMT";
	}

}


function SetCookie(name, value, expires, path, domain, secure){

	document.cookie = name + "=" + escape(value) +
	((expires) ? "; expires=" + expires.toGMTString() : "") +
	((path) ? "; path=" + path : "") +
	((domain) ? "; domain=" + domain : "") +
	((secure) ? "; secure" : "");

}

function selectToggle(select){
	var  nSelected, sSelectedList, sSelectedValue;
	var sInactiveBackGroundColor;
	
	nSelected = select.selectedIndex;

	sInactiveBackGroundColor = select.style.backgroundColor;

	if (nSelected < 0 || (nSelected + 1)> select.length) {return;};

	sSelectedValue =  select.options[nSelected].value;
  	sSelectedList =  ',' + document.all(select.name + '_values').value;

	if (sSelectedList.length > 1 && sSelectedList.charAt(sSelectedList.length-1) != ','){
  		sSelectedList +=  ',';
  	}

	select.selectedIndex = -1

	var  re = new RegExp(',' + sSelectedValue + ',')

	if (  sSelectedList.search(re)  >= 0 ) {
		select.options[nSelected].style.backgroundColor = sInactiveBackGroundColor;
		select.options[nSelected].style.color = 'black';

		sSelectedList = sSelectedList.replace(re,  ',') ;
	}
	else{
			select.options[nSelected].style.backgroundColor = 'navy';
			select.options[nSelected].style.color = 'white';

			sSelectedList += sSelectedValue + ',';
	}
	
	
	sSelectedList = sSelectedList.substring(1, sSelectedList.length);

	if (sSelectedList.charAt(sSelectedList.length-1) == ','){
		sSelectedList = sSelectedList.substring(0, sSelectedList.length-1);
  	}


	select.parentElement.all(select.name + '_values').value = sSelectedList;
  
}


function selectToggleInit(select){

	if(select.IsInitialized == 'true'){return;};
	select.IsInitialized = true;
	
	select.multiple = false;

 	var sSelectedList =  ',' + document.all(select.name + '_values').value +',';

	select.selectedIndex = -1;

	for(i=0; i<select.length; i++){
		if(  sSelectedList.indexOf( ',' + select.options[i].value  + ',' ) >= 0 ){
			select.options[i].style.backgroundColor = 'navy';
			select.options[i].style.color = 'white';
		}
	}

}
