   
function ext(stringText){
  try{
   return stringText.slice(stringText.lastIndexOf(".")+1).toLowerCase();
   }catch(e){}
}
function logerror(ex){
try{
  var str = "Exception Number: " + (ex.number & 0xFFFF);
  str+=", Description: " + ex.description;
  str+=", Name is: " + ex.name+", Message: " + ex.message;
  alert(str);
}catch(exception){}
}
function isIE(){
   return ((document.all)?true:false);
}

function waitCursor(){
   // change mouse (make this optional later)
   document.body.style.cursor ="progress";
}

function isImage(fieldName, emptyAllowed){
//  var myarray = new Array("gif", "jpg", "jpeg", "png");
  var myarray = new Array("jpg", "jpeg", "png");
  var filenameOK = false;
  try{
   var filename_value = el(fieldName).value;
   if(filename_value.length == 0 && emptyAllowed){
      return true;
   }else if(filename_value.length <= 5){// a.jpg
      return false;
   }
   var ext = filename_value.slice(filename_value.lastIndexOf(".")+1).toLowerCase();
   var allowSubmit = false; 
   for (var i = 0; i < myarray.length; i++) { 
    if (myarray[i] == ext) { 
        filenameOK = true;
         break; 
     }
   }
   if (!filenameOK){
    // alert("Nur Bilder dürfen hochgeladen werden ! types:  "+ (myarray.join(", "))+"");
   }
  }catch(e){}
  return filenameOK;
}

function  forwardTo(destURL){
  window.location.href = destURL;
}


function ms(){
  return new Date().getTime();
}


   function getFormById(formId) {
     // alert("getFormById('"+formId+"')");
      //return getForm(document.getElementById(formId) );
      var Zurl = "";
      //alert("Zurl='"+Zurl+"'");
      var Zmethod = "";
      //alert("Zmethod='"+Zmethod+"'");
      var Zpars = "";
      
      try{ Zurl = $(formId).getAttribute('action'); }catch(e){}
     // alert("Zurl='"+Zurl+"'");
      try{ Zmethod = $(formId).getAttribute('method'); }catch(e){}
     // alert("Zmethod='"+Zmethod+"'");
      try{ Zpars = Form.serialize(formId); }catch(e){}
     // alert("Zpars='"+Zpars+"'");
//var myAjax = new Ajax.Request(Zurl, {method: Zmethod, parameters: Zpars, onComplete: okHandler, onFailure: errHandler});
   return Zpars;
   }
   

  function showFormContent(){
    var formId="myform"; 
    alert( getFormById(formId) );
    return false;
   }
//--------XML Cool
function  getCoolXML(responseText, tag){
  var elementText = false;
  try{
  var start_tag = "<"+tag+">";
  var stop_tag = "</"+tag+">";
  
  pos1 = responseText.indexOf(start_tag);
  if(pos1<1){
   return false;
  }
  pos1 += start_tag.length;
  // alert("pos1:'"+pos1+"'");
  pos2 = responseText.indexOf(stop_tag);
  if(pos2<1){
   return false;
  }
  // alert("pos2:'"+pos2+"'");
  
  elementText = responseText.substring(pos1,pos2);
  // alert("elementText:'"+elementText+"'");
  }catch(e){}
  return elementText;
  
}

//-------------------------important helpers-----------------------------
function include(js_filename){
   document.write('<script type="text/javascript" src="'+js_filename+'"></script>');
}

// ----------- STANDARD STUFF -------------------------
function isAlien(a) {
   return isObject(a) && typeof a.constructor != 'function';
}

function isArray(a) {
    return isObject(a) && a.constructor == Array;
}

function isBoolean(a) {
    return typeof a == 'boolean';
}

function isEmpty(o) {
    var i, v;
    if (isObject(o)) {
        for (i in o) {
            v = o[i];
            if (isUndefined(v) && isFunction(v)) {
                return false;
            }
        }
    }
    return true;
}

function isFunction(a) {
    return typeof a == 'function';
}

function isNull(a) {
    return typeof a == 'object' && !a;
}

function isNumber(a) {
    return typeof a == 'number' && isFinite(a);
}

function isObject(a) {
    return (a && typeof a == 'object') || isFunction(a);
}

function isString(a) {
    return typeof a == 'string';
}

function isUndefined(a) {
    return typeof a == 'undefined';
} 

//-----------------------

function setText(elementId, strText){
//alert("setText 1");
  try{
      var elementObject = el(elementId);
      var tagName = elementObject.tagName.toLowerCase();
//alert("setText tagName:'"+tagName+"'");
     
      if (tagName == "div") {
         elementObject.innerHTML = strText;
      }else if(tagName == "textarea"){
         elementObject.value = strText;
      }else if(tagName == "input"){
         var type = elementObject.type.toLowerCase();
//alert("setText type:'"+type+"'");
         if(type == "text" || type == "hidden"){
            elementObject.value = strText;
         }else if(type == "checkbox"){
            elementObject.checked = strText;
         }else if(tagName == "radio"){
            elementObject.value = strText;
         }else if(tagName == "select"){
            elementObject.selectedIndex = strText;
         }else{
            elementObject.value = strText;
         }
      }
   }catch(ex){
   }
//alert("setText 3");
 }

function highlightSearchKeyword(){
if("" == document.referrer){
  return;
}

if ("" != "<b style=\"color:black;background-color:#ffff66\">document.referrer</b>") {
  var query = "<b style=\"color:black;background-color:#ffff66\">document.referrer</b>".split("?");
  var field = "";
  if (query[0].indexOf("google.")) {
    field = "q=";
  } else if (query[0].indexOf("msn.")) {
    field = "q=";
  } else if (query[0].indexOf("yahoo.")) {
    field = "p=";
  }
  if ((query.length > 1) && ("" != field)) {
    var pairs = query[1].split("&");
    for(var i = 0; pairs.length > i; ++i) {
      if (0 == pairs[i].indexOf(field)) {
        var keywords = pairs[i].substr(2).split("+");
        keywords = unescape(keywords.join(" "));
        document.write(keywords);
      }
    }
  }
}

}

/*this is a general purpose function that keeps you from having to type 'document.getElementById'.. saves time and typing. I use it's like EVERYWHERE*/

function el(elementId){

    var elementObject = null;
 try{
   elementObject = document.all ? 
                   document.all[elementId] : document.getElementById(elementId);
//   elementObject = document.getElementById(elementId);

  }catch(e){}   
  return elementObject;
}


function elV(elementId){
  try{
      return trim(el(elementId).value);
  }catch(e){}
	return '';
}

function openURL(fieldName){
		 var queryString =  elV(fieldName);
		 queryString2 = queryString.replace(" ","+");
		 var newURL = "/submitform.htm?qq="+queryString2;
		alert("queryString:"+queryString+", queryString2:"+queryString2+", newURL:"+newURL);
		 newURL="http://www.google.com/search?hl=en&q="+queryString2+"&btnG=Google+Search"
     location.href = newURL;
		 //window.open(newURL);
		 //window.navigate(newURL);
     //window.opener = null; // this is so that IE doesn't show the confirm close message
     //window.opener.location.href = newURL;
     //self.close();
		 return false;
}

function setTitle(titleText){
  document.title=titleText;
}
/*this function creates an element, appends it to the parent, and then returns it so you can set it's innerHTML, style and other attributes.  You never know what you're going to need to do after creating one. */
function addElement(elementType, elementId, parentId) {
  try{
    if( el(elementId)){return false;}// add only once
    var elementObject = document.createElement(elementType);
    elementObject.setAttribute('id', elementId);
    elementObject.setAttribute('name', elementId);
    el(parentId).appendChild(elementObject);
    return(elementObject);
  }catch(ex){}
}

/*This last function removes the element from it's parent, even without you having to know who it's parent IS.  I considered calling it 'popElement' because it returns the removed element in-case you need it somewhere... 'removeChild' doesn't really delete the element anyway, so you may as well be able to keep an handle on it if you want to. */
function removeElement(elementId) {
  try{
  var elementObject = el(elementId);
  var parentElementObject = elementObject.parentNode;
  return(parentElementObject.removeChild(elementObject));
  }catch(ex){}
}

function appendDivText(divId, strText, cssText){
  try{
      var tmpDiv = document.createElement('div');
      tmpDiv.innerHTML = strText;
      if(cssText){
        tmpDiv.style.cssText = cssText;
      }
      el(divId).appendChild(tmpDiv);
   }catch( e){
   }
}

function getAttributeEls(attributeId){
  var elements = new Array();
  var allels = (document.all) ? document.all : document.getElementsByTagName('*');
  for(i=0;i<allels.length;i++){
        var attributeValue = allels[i].getAttribute(attributeId);
        if(attributeValue){
           elements.push(allels[i]);
        }
  }
  return elements;
}
function thereIs(){
  var attributeId = 'check';
  var elemArr =  getAttributeEls(attributeId);
  for(i=0;i<elemArr.length;i++){
        var elem = elemArr[i];
        var checkType = elem.getAttribute(attributeId);
        var isOptional = (elem.getAttribute("optional")==null)?false:true;
        alert("checkType:"+checkType+", isOptional:"+isOptional);
        checkType=elem.check; 
        isOptional=elem.optional; 
        //alert("checkType:"+checkType+", isOptional:"+isOptional);
              var inp = elem.tagName;
              var type = elem.getAttribute('type');
              alert("inp:"+inp+", type:"+type);

        if(checkType=="name"){
 

        }else if(checkType=="email"){

        }else if(checkType=="email"){

        }
         
  }
}
function startUpHref() {
   if (document.getElementsByTag) {
      var anchs = document.getElementsByTag("a");
      for (i = 0; i < anchs.length; i++) {
         if (anchs[i].rel == "fillform") {
            anchs[i].onclick = document.forms[0].discover.value = 
"test3, test4";
         }
      }
   }
   else {
      return false;
   }
/*
# In the body of the page
<form>
<input type="text" name="all" id="discover" size="16" value="test1, 
test2" />
</form>
<a href="#" rel="fillform">click me</a
*/
}

function getComboAttribute(elementId, attributeId){
  var comboBox= document.getElementById(elementId);
  for(i=0;i<comboBox.length;i++){
     if(comboBox[i].selected == true){
        var attributeValue = comboBox[i].getAttribute(attributeId);
        //alert("getComboAttribute(elementId:'"+elementId+"', attributeId:'"+attributeId+"'") comboBox["+i+"].selected:'"+comboBox[i].selected+"', attributeValue:'"+attributeValue+"'");
        return attributeValue;
     }else{
        //alert("getComboAttribute(elementId:'"+elementId+"', attributeId:'"+attributeId+"'") comboBox["+i+"].selected:'"+comboBox[i].selected+"'");
     }
  }
  return false;
}


function toggle(id){
   try{
       var obj = el(id);
       if(obj.style.display == "block"){
          obj.style.display = "none";
       }else{
          obj.style.display = "block";
       } 
   }catch(e){
   }
   return false;
}  

function swap(id1, id2){
   try{
       var obj1 = el(id1);
       var obj2 = el(id2);
       if(obj1.style.display == "none"){
          obj1.style.display = "block";
          obj2.style.display = "none";
       }else{
          obj1.style.display = "none";
          obj2.style.display = "block";
       } 
   }catch(e){
   }
   return false;
}  

function check(field) {
//  alert("field:'"+field+"'");
//  alert("field.length:'"+field.length+"', field.value:'"+field.value+"'");
  if(!field.length){
     field.checked = true;
  }else{
     for (i = 0; i < field.length; i++) {
             field[i].checked = true;
     }
  }
  return true; 
}

function uncheck(field) {
  if(!field.length){
     //alert("yeah");
     field.checked = false;
  }else{
    for (i = 0; i < field.length; i++) {
        field[i].checked = false; 
    }
  }
  return true; 
}

function check_all(element_name)
{
    set_all(element_name, true);
}
function uncheck_all(element_name)
{
    set_all(element_name, false);
}
function set_all(element_name, new_check_value)
{
     var boxes = document.getElementsByTagName('input');
     for (i = 0; i < boxes.length; i++)
     {
          if (boxes[i].type == 'checkbox' && boxes[i].name==element_name){
                boxes[i].checked = new_check_value;
          }
     }
}

//-------------------hide show for delete confirm message in user photo area

function els(elementId){
    var elementObjects = document.all ? document.all[elementId] :
                               document.getElementsByName(elementId);
     return elementObjects;
}

function getFormObject(elementId){
    var formObject = document.getElementById  ? document.getElementById(elementId): 
                                              document.forms[elementId];
     return formObject;
}

function show(elementId){
   try{
      el(elementId).style.display = "block";
      //el(elementId).style.cssText= "display:block;";
   }catch(e){}
   return false;
}
function hide(elementId){
   try{
      el(elementId).style.display = "none";
   }catch(e){}
   return false;
}

 function setStyle(elementId, styleText){
          setCssText(elementId, styleText);
 }
 function setCssText(elementId, styleText){
   try{
   el(elementId).style.cssText= styleText;
   }catch(e){}
  }

function hasLinkBeenVisited(url) {
   var link = document.createElement('a');
   link.href = url;
   document.body.appendChild(link);
   
   if (link.currentStyle) { //IE
      var color = link.currentStyle.color;
      //alert("[IE] url:"+url+", color:"+color)
      if (color == '#800080'){
         return true;
      }
   } else { // Firefox
     link.setAttribute("href",url);
     var computed_style = document.defaultView.getComputedStyle( link, null );
     if (computed_style) {
        //alert("[FIREFOX] url:"+url+", computed_style.color:"+computed_style.color)
        if (computed_style.color == 'rgb(128, 0, 128)') 
        {
  	       return true;
        }
     }
  }
  return false;
}
 function appendCssText(elementId, styleText){
   try{
   el(elementId).style.cssText = (el(elementId).style.cssText)+";"+styleText;
   }catch(e){}
  }


 function setElStyle(elementId, styleText){
          setElCssText(elementId, styleText);
 }
 function setElCssText(el, styleText){
   try{
   el.style.cssText= styleText;
   }catch(e){}
  }
 function setClassName(elementId, styleId){
   try{
     el(elementId).className= styleId;
   }catch(e){}
  }

 function trim(str)
{
   return str.replace(/^\s*|\s*$/g,"");
}

function focusEl(elementId){
  try{
   el(elementId).focus();
   }catch(e){}
}

function getRadioValue(elementName) 
{
 try{
  var elements = document.getElementsByTagName('input');
  var i = 0, elm=false;
  while( elm=elements.item(i++) ){
    if (elm.getAttribute('type') == "radio" && 
        elm.getAttribute('name') == elementName &&
        elm.checked
       ){
      //alert(" elm.getAttribute('id'):'"+ elm.getAttribute('id')+"', elm.value:'"+elm.value+"'");
       return  elm.value;
     }
   }
  }catch(e){ }
  return false;
}

function isRadioChecked(elementName) 
{
 try{
  var elements = document.getElementsByTagName('input');
  var i = 0, elm=false;
  while( elm=elements.item(i++) ){
    if (elm.getAttribute('type') == "radio" && 
        elm.getAttribute('name') == elementName &&
        elm.checked
       ){
      //alert(" elm.getAttribute('id'):'"+ elm.getAttribute('id')+"', elm.value:'"+elm.value+"'");
       return  true
     }
   }
  }catch(e){ }
  return false;
}

function clearForm(formIdent) 
{ 
  var form, elements, i, elm; 
  form = document.getElementById
    ? document.getElementById(formIdent) 
    : document.forms[formIdent]; 

	if (document.getElementsByTagName)
	{
		elements = form.getElementsByTagName('input');
		for( i=0, elm; elm=elements.item(i++); )
		{
			if (elm.getAttribute('type') == "text")
			{
				elm.value = '';
			}
		}
	}

	// Actually looking through more elements here
	// but the result is the same.
	else
	{
		elements = form.elements;
		for( i=0, elm; elm=elements[i++]; )
		{
			if (elm.type == "text")
			{
				elm.value ='';
			}
		}
	}
}
	
function addEvent(elm, strEvent, fnHandler)
{
	return ( elm.addEventListener
	? elm.addEventListener( strEvent, fnHandler, false)
	: elm.attachEvent( 'on'+strEvent, fnHandler)
	);
}


