Ginaspa = {};
Ginaspa.behaviors = {};

Ginaspa.attachBehaviors = function() {
  if (Drupal.jsEnabled && Ginaspa.behaviors) {
    // Execute all of them.
    jQuery.each(Ginaspa.behaviors, function() {
      this();
    });
  }
};
Ginaspa.behaviors.addresscopy = function()
{
	$('select#edit-panes-ginaspabilling-copy-address').change(function(){
		
		var label=$("select#edit-panes-ginaspabilling-copy-address option:selected").text();
		if(eval("address_"+label)==false)
		{
		$('input#edit-panes-ginaspabilling-billing-first-name').attr("value","");
		$('input#edit-panes-ginaspabilling-billing-last-name').attr("value","");
		$('input#edit-panes-ginaspabilling-billing-company').attr("value","");
		$('input#edit-panes-ginaspabilling-billing-street1').attr("value","");
		$('input#edit-panes-ginaspabilling-billing-street2').attr("value","");
		$('input#edit-panes-ginaspabilling-billing-city').attr("value","");
		$('input#edit-panes-ginaspabilling-billing-phone').attr("value","");
		$('input#edit-panes-ginaspabilling-billing-postal-code').attr("value","");
		$('select#edit-panes-ginaspabilling-billing-country').val("");
		$('select#edit-panes-ginaspabilling-billing-zone').val("");
		}else
		{
		$('input#edit-panes-ginaspabilling-billing-first-name').attr("value",eval("address_"+label).first_name);
		$('input#edit-panes-ginaspabilling-billing-last-name').attr("value",eval("address_"+label).last_name);
		$('input#edit-panes-ginaspabilling-billing-company').attr("value",eval("address_"+label).company);
		$('input#edit-panes-ginaspabilling-billing-street1').attr("value",eval("address_"+label).street1);
		$('input#edit-panes-ginaspabilling-billing-street2').attr("value",eval("address_"+label).street2);
		$('input#edit-panes-ginaspabilling-billing-city').attr("value",eval("address_"+label).city);
		$('input#edit-panes-ginaspabilling-billing-phone').attr("value",eval("address_"+label).phone);
		$('input#edit-panes-ginaspabilling-billing-postal-code').attr("value",eval("address_"+label).postal_code);
		$('select#edit-panes-ginaspabilling-billing-country').val(eval("address_"+label).country);
		$('select#edit-panes-ginaspabilling-billing-zone').val(eval("address_"+label).zone);
		}
	});
}
Ginaspa.behaviors.shiptoinfo =function()
{
	$('div#shipto-info').css({color:"#6BAEA5",cursor:"pointer"}).click(function(){
		var popup = window.open(Drupal.settings['base_path'] + 'cart/shipping/shiptoinfo', 'Ship and Shop', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=350,height=180,left=282,top=122');
	});
	$('div#shipto-info img').click(function(){
		var popup = window.open(Drupal.settings['base_path'] + 'cart/shipping/shiptoinfo', 'Ship and Shop', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=350,height=180,left=282,top=122');
	});
	
}
Ginaspa.behaviors.addToCartForm = function(){
	$("select[@name*='user_address']").each(function(){
		if(this.value != '1'){
			var context = $(this).parents('table:first');
			$('.custom-address', context).hide();
		}
	});
	$("select[@name*='user_address']").change(function(){
		var context = $(this).parents('table:first');
			if($(this).val() == '1'){
				$('.custom-address', context).show();
			}else{
				$('.custom-address', context).hide();
			}
		});
}

Ginaspa.behaviors.categoryDes = function(){
	$(window).bind('load', function(){
		var elementClass = Drupal.settings.categoryDes.className || 'category-des';
		
		if(Drupal.settings.categoryDes.enabled){
			$('.' + elementClass).each(function(){
				var img = $(this).siblings('img');
				var $desc = $(this);
				var $parent = $(this).parents('td');
				var img = $('img', $parent);
				Ginaspa.preloadImage(img, img.attr('src'));
				var $title = $(this).siblings('h2').get(0);
				var $titleOffset = $.browser.msie ? $title.offsetTop : $title.offsetTop - parseInt($($title).css('marginTop'));
				var $parentW = $parent.width();
				var $parentH = $parent.height();
				var $parentOffset = $parent.offset({margin: false, scroll: false});
				var top = $parentOffset.top;
				if($.browser.safari){
					$parentOffset = $parent.offset({padding: false, border: false, scroll: false, margin: false});
					top = $(this).parents('table').offset().top
					$titleOffset = 43;
				}
				var $elementW = $parentW + 316;
				if(($parentOffset.left + $elementW) > $('body').width()){
					left = $parentOffset.left - 316;
				}else{
					left = $parentOffset.left;
				}
				var overlay = document.createElement('div');
				$(overlay)
					.attr({
						'class'			: 'desc-frame'
					})
					.css(
						{
							display		: 'none',
							position	: 'absolute',
							top			: top + 'px',
							left		: left + 'px',
							width		: $elementW + 'px',
							height		: $parentH + 'px'
						}
					);
							
				var contentHolder = document.createElement('div');
				$(contentHolder)
					.attr({
						'class'		: 'desc-content-text'
					})
					.css({
						height		: $parentH - 90 + 'px',
						'float'		: (left < $parentOffset.left) ? 'left' : 'right'
					})
					.html($desc.html())
						
				var contentHolderLeft = document.createElement('div');
				$(contentHolderLeft)
					.attr({
						'class'			: 'desc-content-img'
					})
					.css({
						paddingTop		: $titleOffset + 'px',
						fontSize		: parseFloat($(this).parents('.yui-g-top-belt').css('fontSize')) + 'px',
						'float'			: (left < $parentOffset.left) ? 'right' : 'left'
					})
					.html($parent.html());
					
				if($.browser.msie){
					$(contentHolderLeft).css({fontSize : parseFloat($(this).parents('.yui-g-top-belt').css('fontSize')) + 'em'});
				}
					
				$(overlay)
					.append(contentHolderLeft)
					.append(contentHolder)
	//				.hover(function(){}, function(){$(this).hide()});
				$(contentHolderLeft).hover(function(){}, function(){$(this).parent().hide()});
				$('body').append(overlay);
				$($parent).hover(
					function(){
	//					$('.desc-frame:visible').hide();
						$(overlay).show();
						$(overlay).mouseout(function(){$(this).hide()})
					},function(){
						
					}
				);
			});
		}
	});
}

Ginaspa.behaviors.addPopup = function(){
	$('.product-message>a').each(function(){
		if($(this).text().match(/call/i) && Drupal.settings.callus.enabled){
			Ginaspa.callus(this);
		}else if($(this).text().match(/email/i) && Drupal.settings.email.enabled){
			Ginaspa.emailus(this);
		}
	})
};

Ginaspa.behaviors.tellaFriend = function(){
	if(Drupal.settings.tellafriend.enabled){
		if($('ul a', $('#content-bottom')).length == 1 && $('ul a', $('#content-bottom')).text().match('Tell a friend')){
			$('ul a', $('#content-bottom')).click(function(){
				var elem = Ginaspa.createOverlay(450, 0.05);
				$(elem.overlay).show().fadeTo(300, 0.8)
				$('#TB_content', $(elem.container)).load('/ginaspa/tellafriend', {dataType : 'html'}, function(){
					var h = $(elem.container).height();
					var w = $(elem.container).width();
					$(elem.container).css({
						top		: elem.dimmensions.wt + (elem.dimmensions.winH / 2) - (h / 2) + 'px',
						left	: (elem.dimmensions.winW / 2) - (w / 2) + 'px'
					}).show();
					new Ginaspa.ajaxForm($('form', $('#TB_content')));
				})
				return false;
			})
		}
	}
}

Ginaspa.behaviors.menuRoll = function(){
	$("a img.roll").hover(function(){$(this).attr("src", $(this).attr("src").split('_off').join('_on'))}, function(){ $(this).attr("src", $(this).attr("src").split('_on').join('_off'));
	
	if($("a.active > img").length)
	{
	$("a.active > img").attr("src",$("a.active>img").attr("src").split('_off').join('_on'));
	}
	});
}

Ginaspa.behaviors.menuActive = function(){
	if($("a.active>img").length)
	{
	$("a.active>img").attr("src",$("a.active>img").attr("src").split('_off').join('_on'));
	}
}

Ginaspa.createOverlay = function (width, offset, id) {
	var ids = new Array('TB_overlay', 'TB_outerContainer', 'TB_container', 'TB_close', 'TB_close_link');
	if(id){
		ids = id;
	}
	var dimmensions = {wt : '', winH : '', winW : ''};
	// position code lifted from http://www.quirksmode.org/viewport/compatibility.html
  if (self.pageYOffset) { // all except Explorer
  	dimmensions.wt = self.pageYOffset;
  } else if (document.documentElement && document.documentElement.scrollTop) { 	// Explorer 6 Strict
	  dimmensions.wt = document.documentElement.scrollTop;
  } else if (document.body) { // all other Explorers
	  dimmensions.wt = document.body.scrollTop;
  }

  // Get our dimensions
  dimmensions.winH = self.innerHeight ||
			jQuery.boxModel && document.documentElement.clientHeight ||
			document.body.clientHeight;
			
  dimmensions.winW = self.innerWidth ||
			jQuery.boxModel && document.documentElement.clientWidth ||
			document.body.clientWidth;
  
  
	var overlay = document.createElement('div');
		
	$(overlay)
		.attr('id', ids.shift())
		.css({
			display : 'none',
			opacity : '0',
			height  : $(document).height() + 'px',
			width	: $(document).width() + 'px'
		});
	
	var outerContainer = document.createElement('div');
	$(outerContainer)
		.attr({
			id			: ids.shift()
		})
		.css({
			backgroundColor : 'transparent',
			position	: 'absolute',
			top			: '0',
			left		: '0'
		});
			
	var container = document.createElement('div');
	$(container)
		.attr({
			id			: ids.shift()
		})
		.css({
			display		: 'none',
			width		: width + 'px',
			position	: 'absolute',
			left		: ($('body').width()/2 - width/2) + 'px',
			top			: document.documentElement.scrollTop ? document.documentElement.scrollTop + parseInt($('body').height()*offset) + 'px'
 : document.body.scrollTop + parseInt($('body').height()*offset) + 'px'
		})
		.append("<b class=\"TB_container\"><b class=\"TB_container1\"><b></b></b><b class=\"TB_container2\"><b></b></b><b class=\"TB_container3\"></b><b class=\"TB_container4\"></b><b class=\"TB_container5\"></b></b><div class=\"TB_containerfg\"><div  id=\"TB_content\"></div></div><b class=\"TB_container\"><b class=\"TB_container5\"></b><b class=\"TB_container4\"></b><b class=\"TB_container3\"></b><b class=\"TB_container2\"><b></b></b><b class=\"TB_container1\"><b></b></b></b>");
		
		var close = document.createElement('div');
		$(close)
			.attr('id', ids.shift())
			.css('textAlign', 'right');
		var closeLink = document.createElement('a');
		$(closeLink)
			.attr({
				href	: '#',
				id		: ids.shift()
			})
			.html('Close');
		
		$(close)
			.append(closeLink)
			.click(function(){
				$(container).remove();
				$(outerContainer).remove();
				$(overlay).fadeTo(300, 0, function(){ $(this).remove() });
				return false;
			});
				
		$(container).children('.TB_containerfg').prepend(close);
		
		$(outerContainer).append(container);
		$('body')
			.append(overlay)
			.append(outerContainer);
		$(overlay).click(function(){
			$(container).remove();
			$(outerContainer).remove();
			$(this).fadeTo(300, 0, function(){ $(this).remove() });
		});
		
		return {overlay : overlay, container : container, outerContainer : outerContainer, dimmensions : dimmensions};
}

Ginaspa.callus = function(obj){
	$(obj).click(function(){		
		var elem = Ginaspa.createOverlay(230, 0.333);
		$(elem.overlay).show().fadeTo(300, 0.8);			
		$('#TB_content', $(elem.container)).load('/ginaspa/call', {dataType : 'html'}, function(){
			var h = $(elem.container).height();
			var w = $(elem.container).width();
			$(elem.container).css({
				top		: elem.dimmensions.wt + (elem.dimmensions.winH / 2) - (h / 2) + 'px',
				left	: (elem.dimmensions.winW / 2) - (w / 2) + 'px'
			}).show();
		});
		return false;
	});
};

Ginaspa.emailus = function(obj){
	$(obj).click(function(){
		var elem = Ginaspa.createOverlay(350, 0.1);
		$(elem.overlay).show().fadeTo(300, 0.8);
		$('#TB_content', $(elem.container)).load('/ginaspa/email', {dataType : 'html'}, function(){
			var h = $(elem.container).height();
			var w = $(elem.container).width();
			$(elem.container).css({
				top		: elem.dimmensions.wt + (elem.dimmensions.winH / 2) - (h / 2) + 'px',
				left	: (elem.dimmensions.winW / 2) - (w / 2) + 'px'
			}).show();
			new Ginaspa.ajaxForm($('form', $('#TB_content')));
		});
		return false;
	});
}

Ginaspa.ajaxForm = function(form){
	this.form = form;
	this.ajaxsubmitInput = document.createElement('input');
      $(this.ajaxsubmitInput)
        .attr('type', 'hidden')
        .attr('name', 'ajaxFormSubmit')
        .attr('value', '1');
      form.append(this.ajaxsubmitInput);
      
      
	this.message = document.createElement('div');
	$(this.message)
		.attr({
			id			: 'TB_messages'
		})
		.css({
			textAltgn	: 'center',
			display		: 'none',
			marginBottom : '10px'
		});
	$('#TB_content').prepend(this.message);
	this.submitLabel = $('input:submit', this.form).attr('value');
	var ajaxForm = this;
	this.form.submit(function(){
		ajaxForm.ajaxSubmit();
		return false;
	});
//	Drupal.redirectFormButton(this.form.attr('action'), $('input:submit', this.form)[0], this);
};

Ginaspa.ajaxForm.prototype.ajaxSubmit = function(options) {
    options = jQuery.extend({
        target:   null,
        url:      this.form.attr('action') || '',
        method:   this.form.attr('method') || 'GET',
        dataType: 'json',
        semantic: false
    }, options || {});
    
    var a = this.form.formToArray(options.semantic);
    
    // give pre-submit callback an opportunity to abort the submit
    this.onsubmit();

    var q = jQuery.param(a);
    var get = (options.method && options.method.toUpperCase() == 'GET');

    if (get)
        // if url already has a '?' then append args after '&'
        options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;

    // perform a load on the target only if dataType is not provided
    if (!options.dataType && options.target) 
        jQuery(options.target).load(options.url, get ? null : a, options.after);
    else
    var ajaxForm = this;
        jQuery.ajax({ 
            url:      options.url, 
            success:  function(data){ ajaxForm.oncomplete(data, ajaxForm) },
            error:		function(data){ ajaxForm.onerror(data, ajaxForm) },
            type:     options.method, 
            dataType: options.dataType,
            data:     get ? null : q // data is null for 'get' or the query string for 'post'
        });
    return this;
};

Ginaspa.ajaxForm.prototype.onsubmit = function(a, form){
	if(!$(this.message).css('display').match('none'))
		$(this.message).hide('slow').html('');
	$('input:submit', this.form).attr({
		disabled	: 'disabled',
		value		: 'Sending...'
	});
}

Ginaspa.ajaxForm.prototype.oncomplete = function(data, ajaxForm){
	var message = ajaxForm.message
	if(data.data.errors){
		for (id in data.data.errors) {
      		$('#edit-' + id.replace('][', '-')).addClass('error');
    	}
    	$(message).html(data.data.message);
    	$(message).show('slow');
    	$('input:submit', ajaxForm.form)
    		.attr('value', ajaxForm.submitLabel)
    		.removeAttr('disabled');
	}else{
		ajaxForm.form.fadeOut('slow', function(){
			$(message).html(data.data.message);
			$(message).fadeIn('slow');
		});
	}
}

Ginaspa.ajaxForm.prototype.onerror = function(data, ajaxForm){
	var message = ajaxForm.message;
	ajaxForm.form.fadeOut('slow', function(){
		$(message).html('An error occured. Please try again later').fadeIn('slow');
//		$(message).html("An error occured:\n" + data).fadeIn('slow');
	});
}

Ginaspa.preloadImage = function(img, src)
{
    img.attr("src", src);
}

Ginaspa.absolutePosition = function (el, param) {
  var sLeft = 0, sTop = 0;
  var isDiv = /^div$/i.test(el.tagName);
  if (isDiv && el.scrollLeft) {
    sLeft = el.scrollLeft;
  }
  if (isDiv && el.scrollTop) {
    sTop = el.scrollTop;
  }
  
  var r = { x: el.offsetLeft - sLeft, y: el.offsetTop - sTop };
  if (el.offsetParent) {
    var tmp = Ginaspa.absolutePosition(el.offsetParent);
    
    r.x += tmp.x;
    r.y += tmp.y;
  }
  if(param == 'x'){
  	return r.x;
  }else if(param == 'y'){
  	return r.y;
  }
  return r;
};

if (Drupal.jsEnabled) {
  // Attach all behaviors.
  $(document).ready(Ginaspa.attachBehaviors);
}
