/* Webnetwork functions */
/**
 * output a formatted price, used in shopping carts
 * calculate_shipping function declared in page to include db-generated values
 * @todo replace with money.js
 */
function currencyFormat(id,val)
{
	val=parseFloat(val);
	if(val<=0 || isNaN(val))
	{
		$('#'+id).html('');
	}
	else
	{
		val = Math.floor(val*100+0.50000000001);
		cents = val%100;
		if(cents<10)
		{
			cents = "0" + cents;
		}
		val = Math.floor(val/100).toString();
		//add thousands separator
		for (var i = 0; i < Math.floor((val.length-(1+i))/3); i++)
		{
			val = val.substring(0,val.length-(4*i+3))+','+ val.substring(val.length-(4*i+3));
		}
		
		$('#'+id).html('$'+val+'.'+cents);
	}
	return;
}

/**
 * recover form details if server-side validation fails
 * details are passed back in json format via cookie
 * @todo jQuery objectify functionality
 */
function refillFormAdv(x)
{
  fields = document.forms[x].elements;
  j = readCookie(x+'formJson')
  if(!j)
  {
    return;
  }
  
  v = eval("("+URLDecode(j)+")"); // extract values
  for(i in fields)
  {
    f = fields[i];
    id = f.id;
	t = f.type;
	
    if(id) {id = id.replace(/-/g,'_');}else{continue;}
    if(t=='radio')
	{
		z=eval('v.' + f.name); //radio buttons
	}
	else
	{
		z=eval('v.' + id);
	}
	
    if(z)
    {
	  switch(t)
	  {
		case "text":
		case 'textarea':
		  f.value = z;
		  break;
		  
		case 'checkbox':
			f.checked = true;
		  break;
		  
		case 'radio':
		  if(f.value == z)
		  {
		    f.checked = true;
		  }
		  break;
		  
		case 'select-one':
		  for(o in f.options)
		  {
		    if(f.options[o] && f.options[o].value == z)
			{ 
			  f.options[o].selected=true; 
			}
		  }
                  if(f.onchange)
                  {
                    f.onchange({target : f});
                  }
		  break;
		// add other element types later if needed
        default: 
		  break;
	  }
	}
  }
  eraseCookie(x+'formJson');
}

/**
 * helper for refillFormAdv
 * @todo jQuery objectify functionality
 */
function URLDecode(v)
{
  v = unescape(v);
  while(v.indexOf('+')>-1){  v = v.replace("+"," "); }
  return v;
}

/**
 * cookie handling functions
 * from http://www.quirksmode.org/js/cookies.html
 * @todo find jQuery equivalent
 */
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

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;
}

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

/**
 * fire it up
 */
$(document).ready(function(){
	// gallery
	$("a[rel=gallery]").colorbox();
	
	//distribute top menu items to fit page width
	/*
	cont_width = $('#menuWrapper').innerWidth();
	menu_items = $('#menu > li');
	num = menu_items.length;
	extra = cont_width%num;
	each = (cont_width-extra)/num;
	
	$(menu_items).css('width',each+'px').has('ul').css('width',(each+extra)+'px');
	// */
	
	//set content area border below upper background.
	/*
	n = $('#content-wrapper').innerHeight()-415;
	if(n>0){
		$("#lower_page_borders").height(n);
	}
	// */
	
	//match sidebar height to content, or vice versa
	//h = Math.max($('#navigation').height(),$('#shop_display').height() + $('#page_display').height()); //add _display-s because both are present on front page
	//$('#navigation').height(h); //only the sidebar ever needs to get bigger 

	// search field default text and clearing
	/*
	$('#search').val('Type keyword here').focus(function()
	  { if($(this).val()=='Type keyword here'){$(this).val('');} }).blur(function()
	  { if($(this).val()==''){$(this).val('Type keyword here');} })
	*/
		
	//flag older IE 
	if(!$.support.htmlSerialize && !$.support.opacity) // IE feature detection
	{
	//identify IE8 or earlier
	$('body').addClass('ie8');
	
	//add structural elements (usually for rounded corners)
	/*
	struct = '<span class="ie-tl"></span><span class="ie-tr"></span><span class="ie-br"></span><span class="ie-bl"></span>';
	
	//could put everything in one selector but list for clarity
	// eg
	//$('#menu li:first-child, #menu li:last-child').append(struct);
	//$('#footer').append(struct);
	// */
	
	//compensate for irregular first-child/last-child support
	$('li:first-child').addClass('ie-first');$('li:last-child').addClass('ie-last');
	} //end IE detection

	//flag IE9
	if(!$.support.optSelected && $.support.opacity)
	{
		$('body').addClass('ie9');
	}
	
	/* debugging
	for(i in $.support){
		console.log(i+' '+$.support[i]);
	}
	*/
	
	//noise
	/*
	controls = '<div id="music">Site Music <a href="">On</a> <a href="">Off</a></div>';
	$('#searchbox').after(controls);
	$('#music a').click(function(){
		toggleMusic(false);
	});
	
	toggleMusic(true);
	*/
	
}); //end ready

