function showflash(param, version) {
	document.writeln(param); 
}



var evt = {
  add: function(elem, evt, todo) {
    if(elem.addEventListener) {
      elem.addEventListener(evt, todo, false);
    }
    else if (elem.attachEvent) { // ie
      elem.attachEvent('on' + evt, todo);
    }
  },
  
  remove: function(elem, evt, todo) {
    if(elem.removeEventListener) {
      elem.removeEventListener(evt, todo, false);
    }
    else if (elem.detachEvent) { // ie
      elem.detachEvent('on' + evt, todo);
    }
  }
}


function getElementComputedStyle(elem, prop){  
  if (typeof elem!="object") elem = document.getElementById(elem);    
  // external stylesheet for Mozilla, Opera 7+ and Safari 1.3+  
  if (document.defaultView && document.defaultView.getComputedStyle)  {    
    if (prop.match(/[A-Z]/)) prop = prop.replace(/([A-Z])/g, "-$1").toLowerCase();    
    return document.defaultView.getComputedStyle(elem, "").getPropertyValue(prop);  
  }    

// external stylesheet for Explorer and Opera 9  
  if (elem.currentStyle)  {    
    var i;    while ((i=prop.indexOf("-"))!=-1) prop = prop.substr(0, i) + prop.substr(i+1,1).toUpperCase() + prop.substr(i+2);    
    return elem.currentStyle[prop];  
  }    return "";
}



var formchecker = Class.create();

formchecker.prototype = {
  initialize: function(formname) {
  
    this.formelement = document.getElementById(formname);

    if(this.formelement!=null) {  
      this.req = this.getrequiredfiels();
      this.checkformonrun();
    
      for(var i=0; i<this.req.length; i++) {
        this.req[i].onblur = this.onchangefieldvalue.bindAsEventListener(this);
        this.req[i].onkeyup = this.onchangefieldvalue.bindAsEventListener(this);
      }
      
      formElements = this.getFormElements();
      
      for(var i=0; i<formElements.length; i++) {
        if(formElements[i].className=='phone' || formElements[i].className=='phone require' || formElements[i].className=='digit'  || formElements[i].className=='digit require') {
          formElements[i].onkeydown = this.interceptValueAndMakeDigits.bindAsEventListener(this);
        }
      }
      
    }
  },
  
  interceptValueAndMakeDigits: function(evt) {
    var element = Event.element(evt);

    if(evt.keyCode) var code = evt.keyCode;
    else if(evt.which) var code = evt.which;

    if((code>=48 && code<=57) || (code>=97 && code<=105) || (code>=37 && code<=40) || (code==8 || code==9 || code==13 || code==46)) return true;
    else return false;
  },
  
  getfieldtype: function(element) {

    var elemclassname = element.className;
    
    var re = /phone/;
    if(re.test(elemclassname)) { return 'phone';  }
    
    var re = /email/;
    if(re.test(elemclassname)) { return 'email';  }
    
    
    else {  return 'default';   }
  },
  
  getrequiredfiels: function() {
    var allelems = this.formelement.elements;
    var elems = new Array();
    var re = /require/i; // regexp
    var j = 0;
    
    for(var i=0; i<allelems.length; i++) {
      if(re.test(allelems[i].className)) {
        elems[j] = allelems[i];
        j++;
      }
      
    }
    

    var req = new Array();
    var j = 0;
    for(var i in elems) {
      if(elems[i].className) {
        req[j] = elems[i];
        j++;
      }
    }
    return req;
  },
  
  getFormElements: function() {
    return this.formelement.elements;
  },
  
  checkfield: function(element) {
    var type = this.getfieldtype(element);
    switch(type) {
      case 'default' : return (element.value.length > 1) ? true : false; break;
      case 'email' : return this.checkfield_email(element); break;
      case 'phone' : return this.checkfield_phone(element); break;
    } 
    
  },
  
  checkfield_email: function(element) {
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(element.value)){ 
      return true 
    } 
    else { return false; }
  }, 

  checkfield_phone: function(element) {
    
    if (element.value.length > 7){ 
      var re = /^[0-9]{8,15}?/;
      if(re.test(element.value)) {
        return true;
      }
      else { return false; }
    } 
    else { return false; }
  },
  

  
  checkallfields: function() {
    for(var i=0; i<this.req.length; i++) {
      if(this.checkfield(this.req[i]) == false) {return false;}
    }
    return true;
  },
  
  onchangefieldvalue: function(evt) {
    var element = Event.element(evt);
    if(this.checkfield(element)) {
      this.fieldactivation(element);
    }
    else {
      this.fielddeactivation(element);
    }
    
    if(this.checkallfields()) { this.formactivation();  }
    else { this.formdeactivation();  }
  },
  
  checkformonrun: function() { 

    for(var i=0; i<this.req.length; i++) {
     
      if(this.checkfield(this.req[i]) == false) {
        this.fielddeactivation(this.req[i]);
      }else {
        this.fieldactivation(this.req[i]);
      }
    }
    
    if(this.checkallfields()) { this.formactivation();  }
    else { this.formdeactivation();  }
    
  },
  
  formactivation: function(element) {
    var submitbtn = this.findsubmit();
    submitbtn.disabled = false;
  },
  
  formdeactivation: function(element) {
    var submitbtn = this.findsubmit();
    submitbtn.disabled = true;
  },
  
  fieldactivation: function(element) {
    element.style.color = 'black';
    var brothers = element.parentNode.childNodes;
    for(var i=0; i<brothers.length; i++) {
      if(brothers[i].className == 'bullet') {
        
        brothers[i].style.display = 'none';
      }
    }
  },

  fielddeactivation: function(element) {
    element.style.color = 'red';
    var brothers = element.parentNode.childNodes;
    for(var i=0; i<brothers.length; i++) {
      if(brothers[i].className == 'bullet') {
        brothers[i].style.display = 'inline';
      }
    }

  },
  
  findsubmit: function() {
    for(var i=0; i<this.formelement.elements.length; i++) {
      if(this.formelement.elements[i].type == 'submit') {
        return this.formelement.elements[i];
      }
    }
  }

}


var bannerPopup = Class.create();
bannerPopup.prototype = {
  initialize: function() {
    if($('bannerpopup')) {
      $('bannerpopup').onclick = this.closeBanner.bindAsEventListener(this);
      //document.getElementsByTagName('body').item(0).onresize = this.res.bindAsEventListener(this);
      //window.onresize = this.res.bindAsEventListener(this);
    }
  },
  res: function() {
    var bannerHeight = $('bannerpopup').clientHeight;
    var bdyHeight = document.getElementsByTagName('body').item(0).scrollHeight;
    //alert(bannerHeight + ' - ' + bdyHeight);
  },
  closeBanner: function() {
    $('bannerpopup').style.display = 'none';
  }
}


function run() {
  new formchecker("form");
  new bannerPopup();
}


evt.add(window, 'load', run);  

