addEvent(window, 'load', initForm);

var highlight_array = new Array();

function initForm(){
	initializeFocus();
	browserDetect();
}

// NEW
function updFunc (frm,xID,xType,xNums,val) {
	var xmlIDs = xID.split(',');
	var funcTypes = xType.split(',');
	var valsToUse = xNums.split(',');
	var values = val.split('|_|');
	var curLnk;
	for (x=0;x < xmlIDs.length;x++) {
		var curType = funcTypes[x];
		var curVNum = valsToUse[x];
		if (curType=='url') {
			curLnk = document.getElementById(xmlIDs[x]);
			curLnk.href = curLnk.href.replace(curVNum,values[0]);
			curLnk.title = curLnk.title.replace(curVNum,values[0]);
		} else if (curType=='id') { 
			eval('curLnk = frm.'+xmlIDs[x]+';');
			curLnk.value = values[curVNum];
		}
	}
}

var msgtst;
// NEW
function viewSource(url) {
  msgtst=window.open(url,"msgtst","height=600,width=800");
	if (!msgtst.opener) msgtst.opener = self;
	setTimeout("changeSrc(msgtst)",3*1000);
//	msg.document.close();
//d.document.open('text/plain').write(document.documentElement.outerHTML);
}

function changeSrc (win) {
	var scode = parseDom(win.document,1);
//	alert(scode);
//	win.document.write(parseDom(scode,1));
//	win.document.open('text/plain').write(win.document.documentElement.outerHTML);
	win.document.open('text/plain').write(scode);
	win.document.close();
	if (window.focus) {win.focus();}
}

function showDom()
{
  document.body.bgColor="yellow";
  document.getElementById('resulttree').value = parseDomTree(document,1);
  document.getElementById('resultsrc').value = parseDom(document,1);

}

function parseDom(node,level)
{
  var domtree = '';
  for (var i=0; i < node.childNodes.length; i++)  
  {
    if(node.childNodes[i].nodeType == 1) // element
    {
       domtree += '<' + node.childNodes[i].tagName;
       if(node.childNodes[i].attributes) // if has attributes
       {
         for(j=0;j<node.childNodes[i].attributes.length; j++)
           domtree += ' ' + node.childNodes[i].attributes[j].name + '=\"'  + node.childNodes[i].attributes[j].value+'\"';
       }
       
       if(node.childNodes[i].hasChildNodes()) // parse recursive all childs
       {
         domtree += '>';

         domtree += parseDom(node.childNodes[i],level+1);     
         domtree += '</'+node.childNodes[i].tagName+'>'; // close talk
       } 
       else // no childs and so close xhtml compatible
           domtree += ' />';
    }
    else if(node.childNodes[i].nodeType == 3) // text elements , just show data
    {
       domtree += node.childNodes[i].data;
    }
    else if(node.childNodes[i].nodeType == 8) // comment, show data between comments
    {
	domtree += '<!--' + node.childNodes[i].data + '-->';   
    }
    else if(node.childNodes[i].nodeType == 10) //root node
    {
       //ignore
    }
    else // unknown 
    {
       domtree += 'unknown type: ' + node.childNodes[i].nodeType;
       
       domtree += ' value=' + node.childNodes[i].value  + 
               ' id=' + node.childNodes[i].id + 
               ' title=' + node.childNodes[i].innerhtml + 
               ' data=' + node.childNodes[i].data;
    }
  }
  return domtree;
}

























// KEEPER
function initializeFocus(){
	fields = getElementsByClassName(document, "*", "field");
	for(i = 0; i < fields.length; i++) {
		if(fields[i].type == 'radio' || fields[i].type == 'checkbox' || fields[i].type == 'file') {
			fields[i]["focussed"] = false;
			fields[i].onclick = function(){clearSafariRadios(); addClassName(this.parentNode.parentNode, "focused", true)};
			fields[i].onfocus = function(){ this["focussed"] = true; clearSafariRadios(); addClassName(this.parentNode.parentNode, "focused", true)};
			fields[i].onblur = function(){this["focussed"] = false;}; 
			fields[i]["isfocussed"] = function(){return this.focussed;}; 
			highlight_array.splice(highlight_array.length,0,fields[i]);
		}
		else {
			fields[i]["focussed"] = false;
			fields[i].onfocus = function(){ this["focussed"] = true; clearSafariRadios();addClassName(this.parentNode.parentNode, "focused", true)};
			fields[i].onblur = function(){ this["focussed"] = false; removeClassName(this.parentNode.parentNode, "focused");chkThis(this)};
			fields[i]["isfocussed"] = function(){return this.focussed;}; 
			chkThis(fields[i]);
		}
	}
}

function chkSub() { 
	errors = getElementsByClassName(document, "*", "error");
	if (errors.length>0) { alert('Please complete the fields marked in red.'); return false; } else { return true; }
}

function iVEmail(str) {
   return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
}
function iVUrl(str) {
	var regexp = /(http:\/\/www.|https:\/\/www.|www.)(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
//	var regexp = /^(http:\/\/www.|https:\/\/www.|ftp:\/\/www.|www.){1}([\w]+)(.[\w]+){1,2}$/;	
	return regexp.test(str);
}

function chkThis(cur) {
//	alert(cur.id);
	var reqNum = cur.id.replace('Field','');
	var req = (reqNum==1) ?document.getElementById('req_0'):document.getElementById('req_'+reqNum);
	var empty;
	if (reqNum==8) { // Email check
		empty = (iVEmail(cur.value))?0:1;
	} else if (reqNum==9) {
		empty = (iVUrl(cur.value))?0:1;
	} else { empty = (cur.value=='')?1:0; }
	
//	alert (req.id);
	if (empty && req) { addClassName(cur.parentNode.parentNode, "error", true); } else {
		if (reqNum==0 || reqNum==1) { 
			var first = document.getElementById('Field0');
			var last = document.getElementById('Field1');
			if (reqNum==0 && !empty && last.value=='') { 
				addClassName(cur.parentNode.parentNode, "error", true);  
			} else if (reqNum==1 && !empty && first.value=='') { 
				addClassName(cur.parentNode.parentNode, "error", true);  
			} else { removeClassName(cur.parentNode.parentNode, "error"); document.getElementById('fullName').value=first.value+' '+last.value;}
		} else { removeClassName(cur.parentNode.parentNode, "error"); }
	}
}

// KEEPER
function clearSafariRadios() {
	for(var i = 0; i < highlight_array.length; i++) {
		if(highlight_array[i].parentNode) {
			removeClassName(highlight_array[i].parentNode.parentNode, 'focused');
		}
	}
}

// KEEPER
function browserDetect(){
	var detect = navigator.userAgent.toLowerCase();
	var container = document.getElementsByTagName('html');
	if(detect.indexOf('safari') + 1){
		addClassName(container[0], 'safari', true);
	}
	if(detect.indexOf('firefox') + 1){
		addClassName(container[0], 'firefox', true);
	}
}


// KEEPER
function getElementsByClassName(oElm, strTagName, strClassName){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];		
		if(oRegExp.test(oElement.className)){
			arrReturnElements.push(oElement);
		}	
	}
	return (arrReturnElements)
}

// KEEPER
function addClassName(objElement, strClass, blnMayAlreadyExist){
   if ( objElement.className ){
      var arrList = objElement.className.split(' ');
      if ( blnMayAlreadyExist ){
         var strClassUpper = strClass.toUpperCase();
         for ( var i = 0; i < arrList.length; i++ ){
            if ( arrList[i].toUpperCase() == strClassUpper ){
               arrList.splice(i, 1);
               i--;
             }
           }
      }
      arrList[arrList.length] = strClass;
      objElement.className = arrList.join(' ');
   }
   else{  
      objElement.className = strClass;
      }
}

// KEEPER
function removeClassName(objElement, strClass){
   if ( objElement.className ){
      var arrList = objElement.className.split(' ');
      var strClassUpper = strClass.toUpperCase();
      for ( var i = 0; i < arrList.length; i++ ){
         if ( arrList[i].toUpperCase() == strClassUpper ){
            arrList.splice(i, 1);
            i--;
         }
      }
      objElement.className = arrList.join(' ');
   }
}

// KEEPER
function addEvent( obj, type, fn ) {
  if ( obj.attachEvent ) {
    obj["e"+type+fn] = fn;
    obj[type+fn] = function() { obj["e"+type+fn]( window.event ) };
    obj.attachEvent( "on"+type, obj[type+fn] );
  } 
  else{
    obj.addEventListener( type, fn, false );	
  }
}


