var Event   = YAHOO.util.Event;
var Connect = YAHOO.util.Connect;
var Dom     = YAHOO.util.Dom;
var Loading = null;

function check_email(str) {
	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	if (str.indexOf(at)==-1){
	   return false;
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   return false;
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	    return false;
	}

  if (str.indexOf(at,(lat+1))!=-1){
    return false;
  }

  if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
    return false;
  }

  if (str.indexOf(dot,(lat+2))==-1){
    return false;
  }

  if (str.indexOf(" ")!=-1){
    return false;
  }
  return true;
}

function update_strength(input_field_id,output_display_id) {
  var input_field = document.getElementById(input_field_id);
  var output_display = document.getElementById(output_display_id);
  var input_str = input_field.value;
  var input_length = input_str.length;
  var strength = 0;
  number_re = new RegExp("[0-9]");
  if(number_re.test(input_str)){strength++;}
  non_alpha_re = new RegExp("[^A-Za-z0-9]");if(non_alpha_re.test(input_str)){strength++;}
  upper_alpha_re = new RegExp("[A-Z]");if(upper_alpha_re.test(input_str)){strength++;}
  if(input_length>=8){strength++;}
  var strength_str='Password strength:&nbsp;';
  if(strength<=1){strength_str=strength_str+'<strong style="color:grey">Weak</strong>';}else if(strength<=2){strength_str=strength_str+'<strong style="color:blue">Medium</strong>';}else{strength_str=strength_str+'<strong style="color:green">Strong</strong>';}
  if(input_str.length<6){strength_str='<strong style="color:orange">Too short</strong>';}
  output_display.innerHTML=strength_str;
}

var stub = function(e) {
  Event.preventDefault(e);
  return false;
}

function reportError(err)
{
  alert(err);
}

function findInArray(arr, val) {
  for (j in arr) {
    if (arr[j] == val) {
      return j;
    }
  }
  return false;
}

function isArrEmpty(arr)
{
  for (j in arr) {
    if (arr[j]) {
      return false;
    }
  }
  return true;
}

function forceLogin(str)
{
  alert(str);
  location.href = '/login?go=' + encodeURIComponent(location.href);
}

function initLoading() {
  Loading = $('<div>').appendTo('body').html('<img src="http://64.27.9.254/js/yui/treeview/assets/treeview-loading.gif" style="vertical-align:middle;" border="0"/>&nbsp;<strong>Loading...</strong>').addClass('l');
}
function showLoading(){
  if(!Loading){
    initLoading();
  }
  Loading.css('display', 'block')
}

function hideLoading(){
  if(!Loading){
    initLoading();
  }
  Loading.css('display', 'none')
}

function getElement(id){return document.getElementById(id);}
function putHTML(id, val){$('#' + id).html(val);}
function selectAll(id){getElement(id).select();}
function getRadioValue(RadioName){var colRadio = document.getElementsByName(RadioName);for (var i = 0; i < colRadio.length; i++){if (colRadio[i].checked){return colRadio[i].value;}}return null;}

function textCounter(field, countfield, maxlimit) {
  field=getElement(field);
  countfield=getElement(countfield);
  if (field.value.length > maxlimit) {
      field.value = field.value.substring(0, maxlimit);
  } else {
      var chars = maxlimit - field.value.length;
      countfield.innerHTML = chars.toString();
  }
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i > ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function syncDayNumSel(daysElem, monthElem, yearElem) {
    var year = getElement(yearElem).options[getElement(yearElem).selectedIndex].value;
    var month = getElement(monthElem).options[getElement(monthElem).selectedIndex].value;
    var daysElem = getElement(daysElem);

    daysElem.options[29].disabled = false;
    daysElem.options[30].disabled = false;
    daysElem.options[31].disabled = false;

    if (month == '02' || month == '04' || month == '06' || month == '09' || month == '11'){
        daysElem.options[31].disabled = true;
        if (daysElem.selectedIndex == 31) daysElem.selectedIndex = 30;
        if (month == '02'){
            daysElem.options[30].disabled = true;
            if (daysElem.selectedIndex == 30) daysElem.selectedIndex = 29;
            if ((year%4) == 0 ){
                daysElem.options[29].disabled = true;
                if (daysElem.selectedIndex == 29) daysElem.selectedIndex = 28;
            }
        }
    }
}

function toggleDiv(id) {
  var oldStyle = $('#' + id).css('display');
  $('#' + id).css('display', oldStyle=='none'?'block':'none')
}

function toggleFold(id) {
  var state = $('#' + id).css('display');
  $('#' + id + '_hdr').toggleClass('fold')
  $('#' + id).css('display', state == 'block' ? 'none' : 'block');
}

function softWrap(str, maxcolumns) {
  var strSoftHyphen = (navigator.userAgent.toLowerCase().indexOf("applewebkit") > -1 || document.all) ? "&shy;" : "<wbr />";
  maxcolumns = 10;
  if (str.indexOf('<nowbr>') != -1) {
      return str;
  }

  var wordspaceRe     = new RegExp('^\\w{1,' + maxcolumns + '}\\s+');
  var punctuationRe   = new RegExp('^[!\\._\\-\\\\\,=\\*]{1,' + maxcolumns + '}');

  var wrapstr = "";
  var charCount = 0;
  while(str.length) {
    var endidx = 1;

    if(str.length < maxcolumns) {
      wrapstr += str;
      break;
    }

    var spaceMatches = str.match(wordspaceRe);
    if(spaceMatches && spaceMatches[0]) {
      endidx = spaceMatches[0].length;
      wrapstr += str.substring(0, endidx);
      str = str.substring(endidx);
      charCount = 0;
      continue;
    } else {

      if(str.charAt(0) == "<" && str.indexOf(">") > -1) {
        endidx = str.indexOf(">") + 1;
        charCount++;
      } else if( str.charAt(0) == "&" && str.match(/^&\w+;/) ) {
        endidx = (str.indexOf(";") > -1) ? str.indexOf(";") +1 : str.length;
        charCount++;
      } else {
        var puncMatches = str.match(punctuationRe);
        if(puncMatches && puncMatches[0]) {

          endidx = puncMatches[0].length;
          charCount += endidx;
        } else {
          charCount++;
        }
      }
    }
    wrapstr += str.substring(0, endidx);

    if(charCount >= maxcolumns) {
      wrapstr += strSoftHyphen;
      charCount = 0;
    }
    str = str.substring(endidx);
  }
  return wrapstr;
}

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+$/,"");}
String.prototype.toHtmlSpecial  = function(){return this.replace(/</ig,"&lt;").replace(/>/ig,"&gt;");}
String.prototype.toHtml         = function(){return this.replace(/&lt;/ig,"<").replace(/&gt;/ig,">").replace(/&quot;/ig,"\"");}
String.prototype.nl2br          = function(){return this.replace(/\r\n/ig,"<br />").replace(/\n/ig,"<br />");}