/**
 *
 * @application Finchware
 * @version 0.0.0.1
 * @author Chris Keegan
 * @copyright Evans & Finch, 2009
 *
 **/

/**
 *
 * @access public
 * @return void
 **/

function PreventDefaultEventHandling( e /* event */ )
{
  if (window.event)
  {
    window.event.returnValue = false;
  }
  else
  {
    e.preventDefault();
  }
}

/**
 *
 * @access public
 * @return void
 **/

function PreValidateAndSubmit( o_event )
{
  if ( !o_event )
  {
    o_event = window.event;
  }

  var o_target = o_event.target;
  if ( !o_target )
  {
    o_target = o_event.srcElement;
  }

  var o_form = o_target.parentNode;

  while( o_form.tagName != "FORM" )
  {
    o_form = o_form.parentNode;
  }
  var str_form_name = o_form.id;

  var form_valid = true;
  for ( var x=0; x<o_form.elements.length; x++ )
  {
    var element = o_form.elements[ x ];
    var required = element.attributes.getNamedItem( "required" );
    if ( required && required.value == "yes" )
    {
      var w_content_valid = CheckForWysiwygContent( element.id );
      var edit_error_id = element.className + "_error";
      var edit_error_element = document.getElementById( edit_error_id );

      if ( element.value.length == 0 && !w_content_valid )
      {
        if ( edit_error_element )
        {
          edit_error_element.style.display = "block";
        }
        form_valid = false;
      }
      else
      {
        if ( edit_error_element )
        {
          edit_error_element.style.display = "none";
        }
      }
    }
  }

  if ( form_valid == false )
  {
    PreventDefaultEventHandling( o_event );
    //o_form.submit();
  }
}

/**
 *
 * @access public
 * @return void
 **/

function CheckForWysiwygContent( str_id )
{
  var w_frame = document.getElementById( "wysiwyg" + str_id );
  if (w_frame == null )
    return false;

  var w_document = w_frame.contentWindow.document;
  var w_element = w_document.getElementsByTagName( "BODY" );
  if ( w_element == null )
    return false;

  var w_content = w_element[ 0 ].textContent;
  if ( w_content == null )
    return false;

  return w_content.length != 0;
}

/**
*
* @access public
* @return void
**/

function PreloadImages( in_dir, out_dir )
{
	var sheets = document.styleSheets;
	var cssPile = "";
	for ( var i = 0; i<sheets.length; i++ )
	{
		var thisSheetRules = document.styleSheets[ i ].cssRules;
		for ( var j = 0; j<thisSheetRules.length; j++ )
		{
			cssPile += thisSheetRules[ j ].cssText;
		}
	}
	
	//parse string for image urls and load them into the DOM
	var allImgs = [];		//new array for all the image urls  
	//var imgUrls = cssPile.match(/[^\/]+\.(gif|jpg|jpeg|png)/g);//reg ex to get a string of between a "/" and a ".filename"
	//var test = "background-image: url(../images/nav/off/off.png);";
	//cssPile = cssPile.replace( reg_expr, "" );
	//urls = cssPile.match(/[^\/]+\.(gif|jpg|jpeg|png)/g);//reg ex to get a string of between a "/" and a ".filename"
	//urls = cssPile.match( /\([^\(\)]*\)/ );
	var urls = cssPile.match( /url\([^\)\(]*\)/g );
	if ( urls != null && urls.length>0 && urls != "" )
	{
		for ( var x=0; x<urls.length; x++ )
		{
			var image = urls[ x ].match(/[^\/]+\.(gif|jpg|jpeg|png)/g);//reg ex to get a string of between a "/" and a ".filename"
			if ( image != null )
			{
				var reg_expr = new RegExp( "(" + in_dir + ")\/" );
				var url = urls[ x ];
				var image = new Image();
				if ( url.match( /http:/ ) == null )
				{
					url = url.replace( reg_expr, "" );
					url = url.replace( /^url\(/, "" );
					url = url.replace( /[\)]$/, "" );
					image.src = document.URL + out_dir + '/' + url;
				}
				else
				{
					url = url.replace( /^url\(/, "" );
					url = url.replace( /[\)]$/, "" );
					image.src = url;
				}
				//image.src = str_dir +'/'+ url;
				allImgs[ x ] = image;
			}
			
		}
	}
	
	/*
	var imgUrls = cssPile.match(/[^\/]+\.(gif|jpg|jpeg|png)/g);//reg ex to get a string of between a "/" and a ".filename"
	if ( imgUrls != null && imgUrls.length>0 && imgUrls != "" )
	{
		for ( var x=0; x<imgUrls.length; x++ )
		{
			allImgs[ x ] = new Image(); //new img obj
			allImgs[ x ].src = str_dir +'/'+ imgUrls[ x ];
		}
	}
	*/
	
	return allImgs;
}

