
function ByID(elementID) {
  if (typeof(elementID) == 'string') {
    return document.getElementById(elementID);
  } else {
    return elementID;
  }
}

function EncodeForURL(Content) {
  Content = Content.replace(/&/g,"**am**");
  Content = Content.replace(/=/g,"**eq**");
  Content = Content.replace(/\+/g,"**pl**");
  Content = Content.replace(/ /g,"%20");
  return Content;
}

function visible(eltID, isVisible) {
  elt = ByID(eltID);
   if (elt) {
    if (isVisible) {
      elt.style.display = '';
    } else {
      elt.style.display = 'none';
    }
  }
}

function TAjax() {
  this.xmlhttp = false;
  this.bComplete = false;
  this.success = false;
  this.Connect();
}

TAjax.prototype.Connect = function() {
  try {
	  this.xmlhttp = new XMLHttpRequest();
  } catch (e) {
  	var progIds = ['MSXML2.XMLHTTP', 'Microsoft.XMLHTTP', 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0'];

	  for (var iterator = 0; (iterator < progIds.length) && ( ! this.success); iterator ++) {
  	  try {
	    	this.xmlhttp = new ActiveXObject(progIds[iterator]);
		    this.success = true;
  	  } catch (e) {}
	  }
  }
};

TAjax.prototype.Disconnect = function() {
  delete this.xmlhttp;
};

TAjax.prototype.Call = function(sURL, sMethod, sVars, fnDone) {
  var self = this;

  if (!this.xmlhttp) {
    return false;
  }
  this.bComplete = false;

  sMethod = sMethod.toUpperCase();

  try {
    if (sMethod == "GET") {
      this.xmlhttp.open(sMethod, sURL+"?"+sVars, true);
      sVars = "";
    } else {
      this.xmlhttp.open(sMethod, sURL, true);
      this.xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
      this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      this.xmlhttp.send(sVars);
    }
    self.xmlhttp.onreadystatechange = function() {
      if ((self.xmlhttp.readyState == 4) && (!self.bComplete)) {
        self.bComplete = true;
        fnDone(self.xmlhttp);
      }
    };

    this.xmlhttp.send(sVars);
  }
  catch(z) { return false; }

  return true;
};

TAjax.prototype.Get = function(sURL, sVars, fnDone) {
  this.Call(sURL, 'GET', sVars, fnDone);
};

TAjax.prototype.Post = function(sURL, sVars, fnDone) {
  this.Call(sURL, 'POST', sVars, fnDone);
};

TAjax.prototype.RequestFinished = function (oXML) {
  this.AjaxObject.Result(oXML.responseText);
};

TAjax.prototype.getXML = function(tagName) {
  return this.xmlhttp.responseXML.documentElement.getElementsByTagName(tagName)[0].childNodes[0].nodeValue;
}

function addEvent(elm, evType, fn, useCapture) {
  if (elm.addEventListener) {
    elm.addEventListener(evType, fn, useCapture);
    return true;
  } else if (elm.attachEvent) {
    var r = elm.attachEvent('on' + evType, fn);
    EventCache.add(elm, evType, fn);
    return r;
  } else {
    elm['on' + evType] = fn;
  }
}

function getEventSrc(e) {
  if (!e) e = window.event;

  if (e.originalTarget)
	return e.originalTarget;
  else if (e.srcElement)
	return e.srcElement;
}

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

var EventCache = function(){
  var listEvents = [];
  return {
	listEvents : listEvents,

	add : function(node, sEventName, fHandler, bCapture){
	    listEvents.push(arguments);
	  },

	flush : function(){
	  var i, item;
	  for (i = listEvents.length - 1; i >= 0; i = i - 1) {
	    item = listEvents[i];

	    if (item[0].removeEventListener){
		  item[0].removeEventListener(item[1], item[2], item[3]);
		};

		/* From this point events' names have to be prefixed with 'on" */
		if (item[1].substring(0, 2) != "on") {
		  item[1] = "on" + item[1];
		};

		if (item[0].detachEvent) {
		  item[0].detachEvent(item[1], item[2]);
		};

		item[0][item[1]] = null;
	  };
	}
  };
}();

function validateEmail(email)
{
    if(email.length <= 0) 
	{
	  alert("Please enter email address")
	}
    var splitted = email.match("^(.+)@(.+)$");
    if(splitted == null) return false;
    if(splitted[1] != null ) 
	{
      var regexp_user=/^\"?[\w-_\.]*\"?$/;
      if(splitted[1].match(regexp_user) == null) return false;
    }
    if(splitted[2] != null)
    {
      var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
      if(splitted[2].match(regexp_domain) == null) 
      {
	    var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
	    if(splitted[2].match(regexp_ip) == null) return false;
      }
      return true;
    }
return false;
}

function validateReq(f)
{
	var whiteSpace = /^[\s]+$/;
	for(var itr=0;itr < f.elements.length;itr++)
	{
		obj = f.elements[itr]
		// obj.type == "textarea"
		if(obj.type == "text")
		{
			if(obj.value.length == 0 && obj.id !="Country") 
			{
				alert("Please enter your " + obj.id);
				obj.focus();
				return false;
			} else {
				if (obj.id =="Email" && !validateEmail(obj.value))
				{
					alert("Invalid Email!")
					obj.focus();
					return false;
				}
			}
		}	
		
	}
		return true;
}

function validateFields() {
  
  var frmEl = ByID('ContactForm');
  if (validateReq(frmEl))
       sendContactEmail(); 
}

function sendContactEmail () {
  showContactTimer();
  var vContactName = ByID('Name');
  var vContactEmail = ByID('Email');
  var vContactCountry = ByID('Country');
  var vContactMessage = ByID('Message');
  var vEformat = ByID('Eformat').value;
  var page = "../contact/contact.asp?contact=true&xml=true";

  //showContactTimer();
  visible('AjaxStatus', false);

  var str1 = EncodeForURL(vContactName.value);
  var str2 = EncodeForURL(vContactEmail.value);
  var str3 = EncodeForURL(vContactCountry.value);
  var str4 = EncodeForURL(vContactMessage.value);
  var stuff = "&Eformat="+vEformat+"&ContactName="+str1+"&ContactEmail="+str2+"&ContactCountry="+str3+"&ContactMessage="+str4;
  Ajax.Call(page, 'POST', stuff, ProcessingDone);
}

function showContactTimer () {
  visible('ProgressBar', true);
  sentTimer = setTimeout("hideContactTimer()", 10000);
}

function hideContactTimer () {
  var success = ByID('AjaxStatus');
  var fieldArea = ByID('ContactFormArea');
  var inputs = fieldArea.getElementsByTagName('input');
  var inputsLen = inputs.length;
  var tAreas = fieldArea.getElementsByTagName('textarea');
  var tAreasLen = tAreas.length;

  visible('ProgressBar', false);
  
  if (Ajax.getXML("result") == 'SUCCESS') {
  for (i = 0; i < inputsLen; i++) {
          	if (inputs[i].getAttribute('type') == 'text') {
            		inputs[i].value = '';
          	}
          }
      
      	for (j = 0; j < tAreasLen; j++) {
          	tAreas[j].value = '';
   	}
  //fieldArea.style.display = 'none';
  visible(success, true);
      success.innerHTML = Ajax.getXML("message");
      	
      
  } else {
  	success.innerHTML = Ajax.getXML("message");
    	for (i = 0; i < inputsLen; i++) {
        	if (inputs[i].getAttribute('type') == 'text') {
          		inputs[i].value = '';
        	}
        }
    
    	for (j = 0; j < tAreasLen; j++) {
        	tAreas[j].value = '';
   	}
    	visible(success, true);
  }

  
  
}

function ProcessingDone(AjaxObject) {
  result = AjaxObject.responseXML.documentElement.getElementsByTagName('result')[0].childNodes[0].nodeValue;
  hideContactTimer();
}

function ajaxContact() {
  var frmEl = ByID('ContactForm');
  addEvent(frmEl, 'submit', validateFields, false);
  frmEl.onsubmit = function() { return false; }
}

function ExtractFile(data){
    var m = data.match(/(.*)\/([^\/\\]+\.\w+)$/);
    return m[0]
}

function parseUrl(data) {
    var e=/^((http|ftp):\/)?\/?([^:\/\s]+)((\/\w+)*\/)([\w\-\.]+\.[^#?\s]+)(#[\w\-]+)?$/;
    var pageFileName = ExtractFile(window.location.href);		
    if (data.match(e)) {
        return  RegExp.$5;
    }
    else {
        return  "";
    }
}

//var pageFileName = parseUrl(window.location.href);
//if(pageFileName=='/contact') {

Ajax = new TAjax();


addEvent(window, 'load', ajaxContact, false);
addEvent(window, 'unload', EventCache.flush, false);

//}