
	/*
 * Clear Default Text: functions for clearing and replacing default text in
 * <input> elements.
 *
 * by Ross Shannon, http://www.yourhtmlsource.com/
 */

addEvent(window, 'load', init, false);

function init() {
    var formInputs = document.getElementsByTagName('input');
    for (var i = 0; i < formInputs.length; i++) {
        var theInput = formInputs[i];
        
        if (theInput.type == 'text' && theInput.className.match(/\bcleardefault\b/)) {  
            /* Add event handlers */          
            addEvent(theInput, 'focus', clearDefaultText, false);
            addEvent(theInput, 'blur', replaceDefaultText, false);
            
            /* Save the current value */
            if (theInput.value != '') {
                theInput.defaultText = theInput.value;
            }
        }
    }
}

function clearDefaultText(e) {
    var target = window.event ? window.event.srcElement : e ? e.target : null;
    if (!target) return;
    
    if (target.value == target.defaultText) {
        target.value = '';
    }
}

function replaceDefaultText(e) {
    var target = window.event ? window.event.srcElement : e ? e.target : null;
    if (!target) return;
    
    if (target.value == '' && target.defaultText) {
        target.value = target.defaultText;
    }
}




// form validation
  
  function validate() {
  
  var txt='';
  var element;
  
  if (document.getElementById('email').value == ''){
  element = document.getElementById('email');
  txt = 'E-mail';
  } else if (document.getElementById('email2').value == ''){
  element = document.getElementById('email2');
  txt = 'Repeat e-mail';
  }
  
  
  if (txt != '') {
	  alert('Please,\nfill in \'' + txt + '\'!');
	  element.focus();
	  return false;
  } else if (!emailCheck(document.getElementById('email').value)){
  element = document.getElementById('email');
  alert('Please,\nfill in proper e-mail address!');
  element.focus();
  return false;
  } else if (!emailCheck(document.getElementById('email2').value)){
  element = document.getElementById('email2');
  alert('Please,\nfill in proper e-mail address!');
  element.focus();
  return false;
  } else if(document.getElementById('email2').value != document.getElementById('email').value) {
  element = document.getElementById('email');
  alert('Please,\nmake the 2 e-mail addresses match!');
  element.focus();
  return false;
  } else
  return true;
  }
  
  
function validate2() {

var txt='';
var element;
if (document.getElementById('email').value == '') {
element = document.getElementById('email');
txt = 'E-mail'; 
} else if (document.getElementById('email2').value == '') {
element = document.getElementById('email2');
txt = 'Repeat e-mail';
} else if (document.getElementById('message').value == '') {
element = document.getElementById('message');
txt = 'Message'; 
}

if (txt != '') {
alert('Please,\nfill in \'' + txt + '\'!');
element.focus();
return false;
} else if (!emailCheck(document.getElementById('email').value)){
element = document.getElementById('email');
alert('Please,\nfill in proper e-mail address!');
element.focus();
return false;
} else if (!emailCheck(document.getElementById('email2').value)){
element = document.getElementById('email2');
alert('Please,\nfill in proper e-mail address!');
element.focus();
return false;
} else if(document.getElementById('email2').value != document.getElementById('email').value) {
element = document.getElementById('email');
alert('Please,\nmake the 2 e-mail addresses match!');
element.focus();
return false;
} else
return true;
//return confirm('Ready to send message and receive a reply at:\n\n\t' + document.getElementById('email').value);

}

function emailCheck (emailStr)
    {
        var emailPat=/(.+)@(.+)/;
        var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
        var validChars="\[^\\s" + specialChars + "\]"
        var quotedUser="(\"[^\"]*\")";
        var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
        var atom=validChars + '+';
        var word="(" + atom + "|" + quotedUser + ")";
        var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
        var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
        var matchArray=emailStr.match(emailPat);
        if (matchArray==null)
            {
             //alert("Email address seems incorrect (check @ and .'s)");
             return false;
            }
        var user=matchArray[1]
        var domain=matchArray[2]

        if (user.match(userPat)==null)
            {
                //alert("The email username doesn't seem to be valid.");
                return false;
            }

        var IPArray=domain.match(ipDomainPat);
        if (IPArray!=null)
            {
             for (var i=1;i<=4;i++)
                 {
                     if (IPArray[i]>255)
                         {
                             //alert("Email Destination IP address is invalid!");
                          return false;
                         }
                    }
                //return true;
            }

        var domainArray=domain.match(domainPat)
        if (domainArray==null)
            {
             //alert("The email domain name doesn't seem to be valid.");
                return false;
            }

        var atomPat=new RegExp(atom,"g");
        var domArr=domain.match(atomPat);
        var len=domArr.length;
        if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3)
            {
                //alert("The email address must end in a three-letter domain, or two letter country.");
                return false;
            }

        if (len<2)
            {
                //var errStr="This email address is missing a hostname!";
                //alert(errStr);
                return false;
            }

        return true;
    }
	
	/* 
 * Cross-browser event handling, by Scott Andrew
 */
function addEvent(element, eventType, lamdaFunction, useCapture) {
    if (element.addEventListener) {
        element.addEventListener(eventType, lamdaFunction, useCapture);
        return true;
    } else if (element.attachEvent) {
        var r = element.attachEvent('on' + eventType, lamdaFunction);
        return r;
    } else {
        return false;
    }
}

/* 
 * Kills an event's propagation and default action
 */
function knackerEvent(eventObject) {
    if (eventObject && eventObject.stopPropagation) {
        eventObject.stopPropagation();
    }
    if (window.event && window.event.cancelBubble ) {
        window.event.cancelBubble = true;
    }
    
    if (eventObject && eventObject.preventDefault) {
        eventObject.preventDefault();
    }
    if (window.event) {
        window.event.returnValue = false;
    }
}

/* 
 * Safari doesn't support canceling events in the standard way, so we must
 * hard-code a return of false for it to work.
 */
function cancelEventSafari() {
    return false;        
}

/* 
 * Cross-browser style extraction, from the JavaScript & DHTML Cookbook
 * <http://www.oreillynet.com/pub/a/javascript/excerpt/JSDHTMLCkbk_chap5/index5.html>
 */
function getElementStyle(elementID, CssStyleProperty) {
    var element = document.getElementById(elementID);
    if (element.currentStyle) {
        return element.currentStyle[toCamelCase(CssStyleProperty)];
    } else if (window.getComputedStyle) {
        var compStyle = window.getComputedStyle(element, '');
        return compStyle.getPropertyValue(CssStyleProperty);
    } else {
        return '';
    }
}

/* 
 * CamelCases CSS property names. Useful in conjunction with 'getElementStyle()'
 * From <http://dhtmlkitchen.com/learn/js/setstyle/index4.jsp>
 */
function toCamelCase(CssProperty) {
    var stringArray = CssProperty.toLowerCase().split('-');
    if (stringArray.length == 1) {
        return stringArray[0];
    }
    var ret = (CssProperty.indexOf("-") == 0)
              ? stringArray[0].charAt(0).toUpperCase() + stringArray[0].substring(1)
              : stringArray[0];
    for (var i = 1; i < stringArray.length; i++) {
        var s = stringArray[i];
        ret += s.charAt(0).toUpperCase() + s.substring(1);
    }
    return ret;
}

/*
 * Disables all 'test' links, that point to the href '#', by Ross Shannon
 */
function disableTestLinks() {
  var pageLinks = document.getElementsByTagName('a');
  for (var i=0; i<pageLinks.length; i++) {
    if (pageLinks[i].href.match(/[^#]#$/)) {
      addEvent(pageLinks[i], 'click', knackerEvent, false);
    }
  }
}

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

function readCookie(name) {
    var cookieCrumbs = document.cookie.split(';');
    var nameToFind = name + '=';
    for (var i = 0; i < cookieCrumbs.length; i++) {
        var crumb = cookieCrumbs[i];
        while (crumb.charAt(0) == ' ') {
            crumb = crumb.substring(1, crumb.length); /* delete spaces */
        }
        if (crumb.indexOf(nameToFind) == 0) {
            return crumb.substring(nameToFind.length, crumb.length);
        }
    }
    return null;
}

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