/*
 *  @description Jednoduche funkce pro usnadneni programovani v JavaScriptu
 *  @author Michal Brauner
 *  @email michal.brauner@ogilvydevelopment.cz
 *  @last_update 2007-08-22 23:08:00
 *
 */

/*  @description Vytvori novy element
 *  @param string elementType jmeno elementu (tagu)
 *  @param array params pole paametru ( array( array(attr, value) ) )
 *  @parent object parent
 *  @return object
 */
function createNewElement( elementType, params, parent ) {

  if ( !elementType.length || !parent )
    return;

  var newElement = false;
  
  currentElement = document.createElement(elementType);
  
  if ( currentElement ) {
    if ( params.length ) {
      for ( var i=0; i<params.length; i++ ) {
        if ( (params[i].length>=2) ) {
          currentElement.setAttribute(params[i][0], params[i][1] );
        }
      }
    }
    newElement = parent.appendChild( currentElement );
  }
    
  return newElement;
}



/*
 *  @description Funkce odstrani element
 *  @param node e
 */
function remove_element( e ) {

  if ( !e )
    return;

  e.parentNode.removeChild(e);
}



/*
 *  @description  Funkce spoji polozky pole do retezce pomoci oddelovace
 *  @author Michal Brauner
 */
function implode( separator, arr ) {

  if ( !arr || arr.length<=0 )
    return '';
    
  var i, str='';
  
  str = arr[0];
  
  for ( i=1; i<arr.length; i++ )
    str += separator + arr[i];
  
  return str;
}

/*
 *  Otestuje jestli je promenna cislo, vraci true / false
 */
function is_number( value ) {
  var regular = '^[0-9]*$';
  
  if ( !value )
    return false;
    
  return value.match(regular);
}


/*
 *  @description Vrati pole objektu html dokumentu ktere se shoduji s tridou
 *  @param string class_name
 *  @param string tag_name
 *  @return array
 */
function getElementsByClass(class_name, tag_name)
{

  var elements = new Array(0);
  
  
  // ziskame vsechn objekty daneho tagu
  var all_elements = document.getElementsByTagName( tag_name );

  if ( all_elements.length ) {
    var i, regular, tmp_txt;
    
    // vytvorime regularni vyraz pomoc ktereho budeme hledat jmeno tridy
    regular = '\\b';
    for ( i=0; i<class_name.length; i++ )
      regular = regular + '['+class_name.substr(i,1)+']';
    regular = regular + '\\b';
    
    for ( i=0; i<all_elements.length; i++ ) {
      if ( all_elements[i].className.match(regular) ) {
        elements.push(all_elements[i]);
      }
    }
  }

  return elements;
  
  
}


/*
 *  @description Zobrazi nove okno prohlizece s danou adresou o zadane vysce, sirce a s parametry
 *  @param string href
 *  @param int width
 *  @param int height
 *  @param string other
 */
function wopen(href,width,height,other){

   var sirkaOkna;
   var vyskaOkna;
   var nastaveni;

   sirkaOkna=screen.availWidth;
   vyskaOkna=screen.availHeight;


   sirkaOkna -= width;
   sirkaOkna -= 25; //scrollbar
   sirkaOkna /= 2;

   vyskaOkna -= height;
   vyskaOkna /= 2;

   vyskaOkna = Math.round(vyskaOkna);
   sirkaOkna = Math.round(sirkaOkna);

   if ( other != '' )
     nastaveni = 'width='+width+',height='+height+',menubar=no,top='+vyskaOkna+',left='+sirkaOkna+','+other+'';
   else
     nastaveni = 'width='+width+',height='+height+',menubar=no,top='+vyskaOkna+',left='+sirkaOkna+'';

  okno = window.open(href,'',''+nastaveni+'');

  if(okno) okno.focus();

}

/*
 *  @description  Zjisti jestli funkce existuje
 *  @param object o
 *  @return bool
 *
 */
function isFunction(o) {
  return (typeof(o)=="function");
}

/*
 *  @description Overi jestli je email validni
 *  @param string m
 *  @return bool
 */
function check_validEmail(m){
  var mail = "^[_a-zA-Z0-9\.\-]+@[_a-zA-Z0-9\.\-]+[\.]{1}[a-zA-Z]{2,4}$";
  return (m.match(mail)) ? true : false;
}

/**
 *  Vrati vysku okna
 */
function winHeight()
{
   if (window.innerHeight)
      /* NN4 a kompatibilnĂ­ prohlĂ­ĹľeÄŤe */
      return window.innerHeight;
   else if
   (document.documentElement &&
   document.documentElement.clientHeight)
      /* MSIE6 v std. reĹľimu - Opera a Mozilla
      jiĹľ uspÄ›ly s window.innerHeight */
      return document.documentElement.clientHeight;
   else if
   (document.body && document.body.clientHeight)
      /* starĹˇĂ­ MSIE + MSIE6 v quirk reĹľimu */
      return document.body.clientHeight;
   else
      return null;
}


/**
 *  Vrati sirku okna
 */
function winWidth()
{
   if (window.innerWidth)
      /* NN4 a kompatibilnĂ­ prohlĂ­ĹľeÄŤe */
      return window.innerWidth;
   else if
   (document.documentElement &&
   document.documentElement.clientWidth)
      /* MSIE6 v std. reĹľimu - Opera a Mozilla
      jiĹľ uspÄ›ly s window.innerHeight */
      return document.documentElement.clientWidth;
   else if
   (document.body && document.body.clientWidth)
      /* starĹˇĂ­ MSIE + MSIE6 v quirk reĹľimu */
      return document.body.clientWidth;
   else
      return null;
}