<!--
function isEmailAddr(email)
{
  var result = false;
  var theStr = new String(email);
  var index = theStr.indexOf("@");
  if (index > 0)
  {
    var pindex = theStr.indexOf(".",index);
    if ((pindex > index+1) && (theStr.length > pindex+1))
	result = true;
  }
  return result;
}

function validRequired(formField,fieldLabel,defaultVal)
{
	var result = true;
	var errDisplay = document.getElementById("err"+formField.name);
	if (formField.value == "" || formField.value == defaultVal)
	{
		errDisplay.innerHTML = "Please enter a value for the \"" + fieldLabel +"\" field."
		//alert('Please enter a value for the "' + fieldLabel +'" field.');
		formField.focus();
		result = false;
	}
	
	return result;
}

function allDigits(str)
{
	return inValidCharSet(str,"0123456789");
}

function inValidCharSet(str,charset)
{
	var result = true;

	// Note: doesn't use regular expressions to avoid early Mac browser bugs	
	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0)
		{
			result = false;
			break;
		}
	
	return result;
}

function validEmail(formField,fieldLabel,defaultVal,required)
{
	var result = true;
	var errDisplay = document.getElementById("err"+formField.name);
	if (required && !validRequired(formField,fieldLabel))
		result = false;U

	if (result && ((formField.value.length < 3) || !isEmailAddr(formField.value)) )
	{
		errDisplay.innerHTML = "Please enter a complete email address in the form: yourname@yourdomain.com"
		formField.focus();
		result = false;
	}
   
  return result;

}

function validNum(formField,fieldLabel,defaultVal,required)
{
	var result = true;
	var errDisplay = document.getElementById("err"+formField.name);
	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
 		if (!allDigits(formField.value))
 		{
 			errDisplay.innerHTML = "Please enter a complete email address in the form: yourname@yourdomain.com"
			formField.focus();		
			result = false;
		}
	} 
	
	return result;
}


function validInt(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
 		var num = parseInt(formField.value,10);
 		if (isNaN(num))
 		{
 			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	
	return result;
}


function validDate(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
 		var elems = formField.value.split("/");
 		
 		result = (elems.length == 3); // should be three components
 		
 		if (result)
 		{
 			var month = parseInt(elems[0],10);
  			var day = parseInt(elems[1],10);
 			var year = parseInt(elems[2],10);
			result = allDigits(elems[0]) && (month > 0) && (month < 13) &&
					 allDigits(elems[1]) && (day > 0) && (day < 32) &&
					 allDigits(elems[2]) && ((elems[2].length == 2) || (elems[2].length == 4));
 		}
 		
  		if (!result)
 		{
 			alert('Please enter a date in the format MM/DD/YYYY for the "' + fieldLabel +'" field.');
			formField.focus();		
		}
	} 
	
	return result;
}

function validateForm(frm)
{
	// Customize these calls for your form

	// Start ------->
	if (!validRequired(frm.Name,"Name", "Your Name"))
		return false;

	if (!validEmail(frm.Email,"Email Address","Your Email Address",true))
		return false;

	//if (!validDate(frm.available,"Date Available",true))
	//	return false;

	if (!validNum(frm.Phone,"Phone Number",true))
		return false;
		
	if (!validRequired(frm.AddressLine1,"Address",true))
		return false;
		
	if (!validRequired(frm.City,"City",true))
		return false;
		
	if (!validRequired(frm.State,"State",true))
		return false;
	// <--------- End
	
	return true;
}

function newWin(loc, w, h) {
	if (!w) { w = 630;}
	if (!h) { h = 500;}
	window.open(loc,"images","height="+h+",width="+w+",status=yes,toolbar=no,menubar=no,location=no,resizable=yes,scrollbars=yes");
	return false;
	
}

function setActiveStyleSheet(title) {
  var i, a, main;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
      a.disabled = true;
      if(a.getAttribute("title") == title) a.disabled = false;
    }
  }
}

function getActiveStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
  }
  return null;
}

function getPreferredStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1
       && a.getAttribute("rel").indexOf("alt") == -1
       && a.getAttribute("title")
       ) return a.getAttribute("title");
  }
  return null;
}

function createCookie(name,value,days,path,domain,secure) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime() + (days*24*60*60*1000) );
   		expires = date.toGMTString();
  	}
   document.cookie = name + "=" + escape(value) +
    ((expires) ? "; expires=" + expires : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}

window.onload = function(e) {
  	var cookie = readCookie("style");
  	var title = cookie ? cookie : getPreferredStyleSheet();
	setActiveStyleSheet(title);
}

window.onunload = function(e) {
  var title = getActiveStyleSheet();
  createCookie("style", title, 180, "/");
}

var cookie = readCookie("style");
var title = cookie ? cookie : getPreferredStyleSheet();
setActiveStyleSheet(title);

csize = 0;
szs = ['80%','90%','100%','110%','120%','130%','140%'];

function textSize(dir) {
	var cs = parseFloat(readCookie("txtsize"));
	if (!cs) { cs = csize; }
	if (dir=="up") {
			if (cs < szs.length-1) { 
				cs += 1;
				setSize(cs); 
			}
	} else {
			if (cs >= 1) { 
				cs -= 1;
				setSize(cs); 
			}
		}
}
function setSize(size) {
		createCookie("txtsize", size, 180, "/");
		csize = size;
		document.body.style.fontSize = szs[size];
}
/*function getAccessButtons(){
	

	html = "";

	return html;
}

function adjustClass(node, debug) {

  		if (node.nodeName=="LI") {
  			node.onmouseover=function() {
  				this.className="hover";
  				
    		}
  			node.onmouseout=function() {
  				this.className=this.className.replace("hover", "");
   			}
		}
}
startList = function() {
	
		if (document.all && document.getElementById) {	
			n = document.getElementById("topnav").childNodes[0];
			
			if (n) {
			l = n.childNodes.length;
			
			for (i=0; i<l; i++) {
 				node = n.childNodes[i];
 				adjustClass(node);
 				nl = node.childNodes.length;
 				
 				for (j=0;j<nl;j++) {
 					cn = node.childNodes[j];
 					
 					if (cn.nodeName=="UL") {
 						cl = cn.childNodes.length;
 						
 						for (k=0; k<cl; k++) {
 							cnode = cn.childNodes[k];	
 							adjustClass(cnode);
 						}
 					}
 				}	
			}
			}
		}
}
window.onload=startList;
*/

//UTILITIES
var isDOM = document.getElementById;

function getById(id) {
		return document.getElementById(id);
	}


function getParentNodeByType(obj, type) {
		pn = obj.parentNode;
		if (pn.nodeName == type || pn.nodeName == type.toUpperCase()) {
				return pn;
			}
				
		return getParentNodeByType(pn, type);
	}


function removeWhiteSpaceNodes(parobj) {
			var notWhiteSpaceNode = /\S/;
				
			for (i=0;i<parobj.childNodes.length;i++){
				if ((parobj.childNodes[i].nodeType == 3) && (!notWhiteSpaceNode.test(parobj.childNodes[i].nodeValue))) {
					parobj.removeChild(parobj.childNodes[i]);
						i--;
				}
			}
		}

//



function TextScroller() 
{
	
	// @private
	var _d_ = document;
	var _mm_ = "mousemove";
	var _omm_ = "onmousemove";
	var _md_ = "mousedown";
	var _omd_ = "onmousedown";
	var _mu_ = "mouseup";
	var _omu_ = "onmouseup";
	var _omov_ = "onmouseover";
	var _omo_ = "onmouseout";
	var _text = '';
	var aintrvl;
	
	// @public
	this.content = '';
	this.height = '';
	
	
	
	// @private Methods
	this.__init = function() {
				
		removeWhiteSpaceNodes(this.content);
		
		_text = this.content.childNodes[1];
		
		_text.style.height = this.height + 'px';
		_text.style.overflow = 'hidden';
		
		
		//this.__attachHandler(_text, _omov_, __stopScroll);
		//this.__attachHandler(_text, _omo_, this.__startScroll);
		
		this.__startScroll('+');

	}
	
	
	
	this.__startScroll = function() {
		
		
		var dir = '+';
		var y = 0;
		
		aintrvl = setInterval("_animate('+')",50);
		var _tsH = _text.scrollHeight;
		var _tsT = _text.scrollTop;
		
		_animate = function() {
			
			_text.scrollTop = y;
			
			if (dir == '+') {
				y+=1;
				if (y >= (_tsH/1.5)-1) {
					dir = '-';
				}
			} else {
				y-=1;
				if (y <= -20) {
					dir = '+';
					
					//clearInterval(aintrvl)
					//y=0;
					
				}
				
			}
		}	
	
	}
	
	
	this.stopScroll = function() {
		//alert(this);
		clearInterval(aintrvl);
	
	}
	
	this.__attachHandler = function(obj, evt, func) {
			obj.addEventListener(evt, func, false);
	
	}
	
	this.startScroll = function(pnl) {
		this.content = pnl;
		
		this.__init();
		
	}
	
	
	
}



function setTextScroller() {
	pnl = getById("fragsuccess");	
	
	if (pnl) {
		pnl.scroller = new TextScroller();
	
		pnl.scroller.height = 200;
	
		pnl.scroller.startScroll(pnl);
		
	} else {
		return;
	}

}




function domReady()
{
	this.n = typeof this.n == 'undefined' ? 0 : this.n + 1;
	
	if (typeof document.getElementsByTagName != 'undefined' 
		&& (document.getElementsByTagName('body')[0] != null || document.body != null)) {	
		//alert("The DOM is ready!");

	} else if(this.n < 60) {
		setTimeout('domReady()', 250);
	}
};

domReady();


function showTime() {
	var w=new Array("Sunday", "Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
	var m=new Array("Jan.","Feb.","March","April","May","June","July","August","Sept.","Oct.","Nov.","Dec.");

	
	var ed = getById('dateinside');
	
	if (!ed)
		return false;
	
	var d = new Date;
	var month = d.getMonth();
	var day = d.getDate();
	var year = d.getFullYear();
	var wday = d.getDay();
	
	var c = document.createElement('div');
	var ct = document.createTextNode(w[wday] + ', ' + m[month] + ' ' + day + ' ' + year);
	
	
	c.id = 'date';
	
	
	c.appendChild(ct);
	ed.appendChild(c);
	
	
}

var E = {
	add: function(obj, evt, func) {
		if (document.addEventListener) obj.addEventListener(evt, func, false);
		else if(document.attachEvent) obj.attachEvent('on'+evt,func);
		},
	remove: function(obj, evt, func) {
			obj.removeEventListener(evt, func, false);
		},
	get: function(e, p) {
			var e = e || window.event;
			if (p) E.pd(e);
			return t = e.target || e.srcElement;
		},
	pd: function(e) {
			if (e.stopPropagation) e.stopPropagation();	 
			else if(e.cancelBubble) e.cancelBubble = true;			
			if (e.preventDefault) e.preventDefault();
			else e.returnValue = false; 
	},
	pos: function(e) {
		var left = 0;
		var top  = 0;
		while (e.offsetParent){
			left += e.offsetLeft;
			top  += e.offsetTop;
			e     = e.offsetParent;
		}
		left += e.offsetLeft;
		top  += e.offsetTop;

		return {x:left, y:top};
	}
}


var Req = {
	__GET: {},
	filename: '',
	query_string: location.search || '',
	type: '',
	uri: location.href,
	initialized: false,
	
	init: function() {
		ps = this.uri
				
		this.type = ps.match(/^https?|ftp|file/);		
		ps = ps.replace(/https?:\/\/|file:\/|ftp:\/\//g, '');
		
		ps = ps.split('/');
		psl = ps.length
		 
		ps[psl-1] = ps[psl-1].split('?');
		this.filename = (ps[psl-1].length > 1) ? ps[psl-1].shift() : ps.pop();
		
		params = location.search.slice(1).split('&');
		for (i=0;i<params.length;i++) {
			x = params[i].split('=');
			this.__GET[x[0]] = unescape(x[1]);
		}
		this.initialized = true;
	},
	get: function(key) {
		return (this.__GET[key] != undefined) ? this.__GET[key] : false;
	},
	set: function(params) {
		//params {'key':'value', 'key2':'value2'}
		try {
			for (key in params) {
				if (key != '')
					this.__GET[key] = params[key];
			}
		} catch(e) {}
	},
	serialize: function() {
		params = [];
		for (key in this.__GET)
			if (key != '')
				if (this.__GET[key] != undefined)
					params.push(key + '=' + escape(this.__GET[key]))
		
		return params.join('&');
		
	},
	Cookie: {
		set: function(name,value,days,path,domain,secure) {
			if (!days) days = 360;
		    
			var date = new Date();
		    date.setTime(date.getTime() + (days*24*60*60*1000) );
		   	expires = date.toGMTString();
		  	
		   document.cookie = name + "=" + escape(value) +
		    ((expires) ? "; expires=" + expires : "") +
		    ((path) ? "; path=" + path : "") +
		    ((domain) ? "; domain=" + domain : "") +
		    ((secure) ? "; secure" : "");
		},

		get: function(name) {
		  var nameEQ = name + "=";
		  var ca = document.cookie.split(';');
		  for(var i=0;i < ca.length;i++) {
		    var c = ca[i];
		    while (c.charAt(0)==' ') c = c.substring(1,c.length);
		    if (c.indexOf(nameEQ) == 0) return unescape(c.substring(nameEQ.length,c.length));
		  }
		  return null;
		}
	}
}
Req.init();

var Util = {
		
		clean: function(parobj) {
			var notWhiteSpaceNode = /\S/;
				
			for (i=0;i<parobj.childNodes.length;i++){
				if ((parobj.childNodes[i].nodeType == 3) 
				&& (!notWhiteSpaceNode.test(parobj.childNodes[i].nodeValue))) {
					parobj.removeChild(parobj.childNodes[i]);
						i--;
				}
			}
		}
	
	
	}
SWin = {
	root: '',
	open: function(url, w, h) {
		try {
			this.make(url, w, h)
		} catch(e) {
			newWin(url, w, h)
		}
	},
	make: function(url, w, h) {
		root = document.createElement('div');
		root.style.position = 'absolute';
		root.style.width = w+'px';
		root.style.height = h+20+'px';
		root.style.border = '5px solid #666';
		root.style.background = '#fff';
		root.style.top = '0';
		root.style.left = '50%';
		root.style.margin = '0 0 0 -'+w/2+'px';
		
		
		iframe = document.createElement('iframe');
		iframe.src = url;
		iframe.style.width = w+'px';
		iframe.style.height = h+'px';
		iframe.style.border = 'none';
		
		ftr = document.createElement('div');
		ftr.style.height = '16px';
		ftr.style.background = '#ededed';
		ftr.style.width = w-20+'px';
		ftr.style.textAlign = 'right';
		ftr.style.padding = '2px 10px';
		
		a = document.createElement('a');
		a.href = '#';
		a.appendChild(document.createTextNode('Close'));
		E.add(a, 'click', SWin.close)
		
		ftr.appendChild(a);
		root.appendChild(iframe);
		root.appendChild(ftr);
		document.body.appendChild(root);
		this.root = root;		
	},
	close: function(e) {
		t = E.get(e, true);
		document.body.removeChild(root);
	}
	
	
}
PageUtils = {
	version: '2.0',
	Email: {
		prepare_form: function() {
			var frm = document.forms[0];
			E.add(frm, 'submit', PageUtils.Email.submit)
			try {
				uinfo = Req.Cookie.get('urinfo');
				if (uinfo) {
					uinfo = uinfo.split('|-:-|');
					if (uinfo[0]) frm['y_name'].value = uinfo[0];
					if (uinfo[1]) frm['y_email'].value = uinfo[1];
					if (uinfo[2]) frm['f_name'].value = uinfo[2];
					if (uinfo[3]) frm['f_email'].value = uinfo[3];
				}
				var page = Req.get('page')  || 'index.html';
				var page_title = Req.get('title') || page;
			
				getById('page_to_send').innerHTML = '<strong>'+page_title+'</strong>';
				getById('send_page_title').value = page_title;
				getById('send_page_url').value = page;
			} catch (e) {}
		},
		send_page: function(path_to_form) {
			if (!path_to_form) return;
			Req.set({'page':Req.filename});
			
			page_title = '';
			h3s = document.getElementsByTagName('h3');
			if (h3s[0] && h3s[0].innerHTML) {
				page_title = h3s[0].innerHTML;
				Req.set({'title':page_title});
			}
			SWin.open(path_to_form + '?' + Req.serialize(), 500, 400);
		},
		submit: function(e) {
			frm = E.get(e);
			Req.Cookie.set('urinfo', frm['y_name'].value+
									'|-:-|'+frm['y_email'].value+
									'|-:-|'+frm['f_name'].value+
									'|-:-|'+frm['f_email'].value);
		}
	}
}
function send_page_by_email(path_to_form) {
	PageUtils.Email.send_page(path_to_form);
	return false;
}

window.onload = function() {
		setTextScroller();
		showTime();
	};

function add2favorites(){
	if(!window.external) {alert("Please use Cntrl + D to bookmark");
						return false;}
	window.external.AddFavorite('http://www.h1b.biz', 'Law Offices of Jacob J. Sapochnick - US Immigration Law');
}



