var r={
  'special':/[\W]/g,
  'quotes':/['\''&'\"']/g,
  'singlequote':/['\'']/g,
  'notnumbers':/[^\d]/g
}
var numArr= "0123456789";
var validInput="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@.-_";
var invalidChars="/\\[]\"':;|<>+=,?*";

function valid(o,w){
  o.value = o.value.replace(r[w],'');
}



function countMe() {
	var max = document.getElementById('max_chars'); 
	var characters = document.getElementById('characters'); 
	var counter = document.getElementById('counter');
	var remaining = document.getElementById('remaining');
	counter.value = characters.value.length;
	remaining.value = max.value - characters.value.length;
	if (characters.value.length > max.value)
	{
		counter.style.color = "#fff"
		counter.style.font = "bold"
		counter.style.background = "Red"
	}
	else
	{
		counter.style.color = "#fff"			
		counter.style.background = "#0DFF00"				
	}
}



function replaceQuotes(string){
return string.replace(/'/g,"\'");
}

function popUp2(URL,w,h) {
day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width="+w+",height="+h+"');");
}

function autoFill(src,dest){
document.getElementById(dest).value=document.getElementById(src).value;
}

function addOption(selectbox,text,value )
{
	var optn = document.createElement("OPTION");
	optn.text = text;
	optn.value = value;
	selectbox.options.add(optn);
}


function isNumber(noValue){
var temp;
var isvalid=true;

for (var i=0; i<noValue.length; i++) 
{temp = "" + noValue.substring(i, i+1);
if (numArr.indexOf(temp) == "-1"){isvalid=false;}}return isvalid;}

function validInput(intext){
var isvalid=true;
var temp;
for (var i=0; i < intext.length; i++) 
{temp = "" + intext.substring(i, i+1);
if (validInput.indexOf(temp) == "-1"){isvalid=false;}}return isvalid;}

function editor_date_month_change(month_el,day_el,year_el){var month_el=ge(month_el);var day_el=ge(day_el);var year_el=year_el?ge(year_el):false;var new_num_days=_month_get_num_days(month_el.value,year_el.value&&year_el.value!=-1?year_el.value:false);var b=day_el.options[0].value==-1?1:0;for(var i=day_el.options.length;i>new_num_days+b;i--){remove_node(day_el.options[i-1]);}
for(var i=day_el.options.length;i<new_num_days+b;i++){day_el.options[i]=new Option(i+(b?0:1),i+(b?0:1));}}
function _month_get_num_days(month,year){var temp_date;if(month==-1){return 31;}
temp_date=new Date(year?year:1912,month,0);return temp_date.getDate();}


function hasChars(intext){
var invalid=false;
var temp;
for (var i=0; i < intext.length; i++) 
{temp = "" + intext.substring(i, i+1);
if (invalidChars.indexOf(temp) == "-1"){invalid=true;}}return invalid;}


function submitSearch(){document.frmSearch.submit();}
function changeDevice(){document.frmDevices.submit();}
function changeDType(){document.frmDType.submit();}

function isNetscape(v) {
  /*
  ** Check if the browser is Netscape compatible
  **    v  version number
  ** returns  true if Netscape and version equals or greater
  */
  return isBrowser("Netscape", v);
  }

function isMicrosoft(v) {
  /*
  ** Check if the browser is Microsoft Internet Explorer compatible
  **    v  version number
  ** returns  true if MSIE and version equals or greater
  */
  return isBrowser("Microsoft", v);
  }

function isBrowser(b,v) {
  /*
  ** Check if the current browser is compatible
  **  b  browser name
  **  v  version number (if 0 don't check version)
  ** returns true if browser equals and version equals or greater
  */
  browserOk = false;
  versionOk = false;

  browserOk = (navigator.appName.indexOf(b) != -1);
  if (v == 0) versionOk = true;
  else  versionOk = (v <= parseInt(navigator.appVersion));
  return browserOk && versionOk;
  }

function textCounter(field,cntfield,maxlimit) {

if(field.value.length > 612){
smsCount.innerHTML='5 Messages';
}else if(field.value.length > 459){
smsCount.innerHTML='4 Messages';
}else if(field.value.length > 306){
smsCount.innerHTML='3 Messages';
}else if(field.value.length > 160){
smsCount.innerHTML='2 Messages';
}else{
smsCount.innerHTML='';
}
if (field.value.length > maxlimit) // if too long...trim it!
field.value = field.value.substring(0, maxlimit);
// otherwise, update 'characters left' counter
else
cntfield.value = maxlimit - field.value.length;
}

function toggle(item){
	animatedcollapse.toggle(item);
}


function toggleServicesOpen(){
	animatedcollapse.toggle('divServicesItems');
	document.portal_services_head_opened.style.visibility='hidden';
	document.portal_services_head_opened.style.display='none';
	document.portal_services_head_closed.style.visibility='visible';
	document.portal_services_head_closed.style.display='block';
}

function toggleServicesClose(){
	animatedcollapse.toggle('divServicesItems');
	document.portal_services_head_closed.style.visibility='hidden';
	document.portal_services_head_closed.style.display='none';
	document.portal_services_head_opened.style.visibility='visible';
	document.portal_services_head_opened.style.display='block';
}

function toggleSecurityOpen(){
	animatedcollapse.toggle('divSecurityItems');
	document.portal_security_head_opened.style.visibility='hidden';
	document.portal_security_head_opened.style.display='none';
	document.portal_security_head_closed.style.visibility='visible';
	document.portal_security_head_closed.style.display='block';
}

function toggleSecurityClose(){
	animatedcollapse.toggle('divSecurityItems');
	document.portal_security_head_closed.style.visibility='hidden';
	document.portal_security_head_closed.style.display='none';
	document.portal_security_head_opened.style.visibility='visible';
	document.portal_security_head_opened.style.display='block';
}
function togglePremiumOpen(){
	animatedcollapse.toggle('divPremiumItems');
	document.portal_Premium_head_opened.style.visibility='hidden';
	document.portal_Premium_head_opened.style.display='none';
	document.portal_Premium_head_closed.style.visibility='visible';
	document.portal_Premium_head_closed.style.display='block';
}

function togglePremiumClose(){
	animatedcollapse.toggle('divPremiumItems');
	document.portal_Premium_head_closed.style.visibility='hidden';
	document.portal_Premium_head_closed.style.display='none';
	document.portal_Premium_head_opened.style.visibility='visible';
	document.portal_Premium_head_opened.style.display='block';
}

function toggleRequestsOpen(){
	animatedcollapse.toggle('divRequestsItems');
	document.portal_Requests_head_opened.style.visibility='hidden';
	document.portal_Requests_head_opened.style.display='none';
	document.portal_Requests_head_closed.style.visibility='visible';
	document.portal_Requests_head_closed.style.display='block';
}

function toggleRequestsClose(){
	animatedcollapse.toggle('divRequestsItems');
	document.portal_Requests_head_closed.style.visibility='hidden';
	document.portal_Requests_head_closed.style.display='none';
	document.portal_Requests_head_opened.style.visibility='visible';
	document.portal_Requests_head_opened.style.display='block';
}

function toggleLRequestsOpen(){
	animatedcollapse.toggle('requestsQLast');
	document.last_requests_head_opened.style.visibility='hidden';
	document.last_requests_head_opened.style.display='none';
	document.last_requests_head_closed.style.visibility='visible';
	document.last_requests_head_closed.style.display='block';
}

function toggleLRequestsClose(){
	animatedcollapse.toggle('requestsQLast');
	document.last_requests_head_closed.style.visibility='hidden';
	document.last_requests_head_closed.style.display='none';
	document.last_requests_head_opened.style.visibility='visible';
	document.last_requests_head_opened.style.display='block';
}



function encode_cookie(cookie_value) {

  // This variable holds the encoded cookie characters
  var coded_string = ""
  
  // Run through each character in the cookie value
  for (var counter = 0; counter < cookie_value.length; counter++) {
  
    // Add the character's numeric code to the string
    coded_string += cookie_value.charCodeAt(counter)
    
    // Separate each code with a plus sign (+)
    if (counter < cookie_value.length - 1) {
      coded_string += "+"
    }
  }
  return coded_string
}

function decode_cookie(coded_string) {

  // This variable holds the decoded cookie value
  var cookie_value = ""
  
  // Use + to split the coded string into an array
  var code_array = coded_string.split("+")
  
  // Loop through the array
  for (var counter = 0; counter < code_array.length; counter++) {

    // Convert the code into a character and 
    // add it to the cookie value string
    cookie_value += String.fromCharCode(code_array[counter])
  }
  return cookie_value
}