function showBox(id,msg) {
	div = $(id);
	if (div) {
		if (msg) {
			div.innerHTML = msg;
			div.style.display = 'block';
		} else {
			div.innerHTML = '';
			div.style.display = 'none';
		}
	}
}

// show a system message on page top or specified div
function showSystemMsg(msg, id) {
	if ($(id)) {
  		showBox(id, msg);
	} else {
  		showBox('system_msg', msg);
	}
}

// show a system error on page top or specified div
function showSystemErr(msg,id) {
	if ($(id)) {
  		showBox(id, msg);
	} else {
  		showBox('system_err', msg);
	}
}

// hide a system message on page top
function hideSystemMsg() {
	showBox('system_msg', '');
}

// hide a system error on page top
function hideSystemErr() {
	showBox('system_err', '');
}


function setColor(color) {
    $('prod-color').value = color;
    $('bloglink').href =  blogURL + '/color/' + color;
    var caption = "Color";
    if(color>0) caption = $('colorEntry'+color).innerHTML;

    $('selectedColor').innerHTML =  caption;
    var el = $('selectedColor').getElementsBySelector('span');
    var colorName = el[1].innerHTML;
    var maxLength = 20;
    el[1].innerHTML = colorName.length > maxLength ? colorName.substring(0, maxLength-2) + '&hellip;' : colorName;
    $('selectedColor').addClassName('currentSelection');
    ColorBar.hideSubmenu($('ColorBarEntries'));
    new Ajax.Request(ajaxURL + 'Marketplace/articleDetailData/article/'+ articleId + '/color/' + color, {
        method: 'get',
        onSuccess: function(response) {
            var articleData = response.responseText.evalJSON(true);
            var count = 0;
            var compositionImage = '';

        	articleImageChanger = new MarketplaceImageChanger();
        	articleImageChanger.initField('article'+ articleId, 'design'+ articleId);

            articleData.views.each(function(item) {
                $('viewImage'+item.viewId).src = item.thumbLink;
                articleImageChanger.addImage(item.viewId,item.hugeLink, item.compositionImageLink);
                if(item.compositionImageLink != '') compositionImage = item.compositionImageLink;
                if(item.viewId == currentView || (currentView == 0 && count == 0))  {
                    $('article'+articleId).src = item.hugeLink;
                    $('design'+articleId).src = compositionImage;
                }
                count++;
            });
            $('SizesBarEntries').innerHTML = "";
            var selectedSizeValid = false;
            var stockout = true;
            articleData.sizes.each(function(item) {
                var newEntry = document.createElement('li');
                newEntry.innerHTML = "<a href=\"#\" onclick=\"return setSize(" + item.id + ");\" class=\"MenuBarItemSubmenu\" id=\"sizeEntry"+ item.id +"\">" + item.name + "</a>";
                $('SizesBarEntries').appendChild(newEntry);
                if($('prod-size').value == item.id) selectedSizeValid = true;
                stockout = false;
            });
            if(stockout) {
              $('stockout-message').innerHTML = MSG_STOCKOUT;
              $('selectedSize').innerHTML = MSG_STOCKOUT_SHORT;
            } else {
              $('stockout-message').innerHTML = MSG_IN_STOCK;
              if(!selectedSizeValid) $('selectedSize').innerHTML = MSG_IN_STOCK_SHORT;
            }
            if(!selectedSizeValid) setSize(0);
        }
     });
     return false;
}

function setSize(size) {
    if(size>0) {
        $('selectedSize').innerHTML = $('sizeEntry'+size).innerHTML;
        $('selectedSize').addClassName('currentSelection');
    } else {
        if($('prod-size').value != 0) {
            $('selectedSize').innerHTML = '';
        }
        $('selectedSize').removeClassName('currentSelection');
    }
    $('prod-size').value = size;
    SizesBar.hideSubmenu($('SizesBarEntries'));
    return false;
}

function setQuantity(quantity) {
    $('prod-quantity').value = quantity;
    $('selectedQuantity').innerHTML = quantity;
    $('selectedQuantity').addClassName('currentSelection');
    NumberBar.hideSubmenu($('NumberBarEntries'));
    new Ajax.Request(ajaxURL + 'Marketplace/updateArticlePrice/article/'+articleId+'/quantity/'+quantity, {
        method: 'get',
        onSuccess: function(response) {
            if(response.responseText != '') {
                $('product-price').innerHTML = response.responseText;
            }
        }
    });
    return false;
}

// check size selection on article detail
function checkSize(msg) {
	if ($('prod-size').value == 0) {
		showSystemErr(msg);
		return false;
	} else {
		hideSystemErr();
		$('basketAddForm').submit();
		return true;
	}
}

// set omniture tracking war
function trackUserAction(userAction) {
	s.prop5 = userAction;
}

// load related articles, designs and user gallery
function loadAssignedContent(divId, url) {
	$(divId).innerHTML = '';
	new Ajax.Updater(divId, url, {evalScripts:true, asynchronous:true});
	return true;
}

// flag a design or an article
function addFlag(formId, object, type) {
	hideSystemErr();
	hideSystemMsg();
	var flagForm    = $(formId);
	var text  		= flagForm.text.value;

    var url			= ajaxURL + 'Marketplace/addFlag/';
	var params  	= 'text=' + encodeURIComponent(text) + '&object=' + encodeURIComponent(object) + '&type=' + encodeURIComponent(type);
	var flagAjax 	= new Ajax.Request(url,
		{
        	onComplete: function(response){
          		if (response.responseText == 'OK') {
          			trackUserAction('Flag Item');
          			hideIbox();
					showSystemMsg(FLAG_THANK_YOU);
					window.location.href="#";
				} else {
					showSystemErr(response.responseText,'layer-system-err');
				}
        	},
	        method: 'post',
	        parameters: params,
	        asynchronous: false
		});
}

// add user favorite
function addFavorite(object, type) {
	hideSystemErr();
	hideSystemMsg();

	var url   	= ajaxURL + 'Marketplace/addFavorite/';
	var params	= 'object=' + encodeURIComponent(object) + '&type=' + encodeURIComponent(type);

	var favouriteAjax = new Ajax.Request(url,
		{
			onComplete: function(response){
				trackUserAction('Add to Favourities');
				hideIbox();
				showSystemMsg(response.responseText);
				window.location.href="#";
			},
			method: 'post',
			parameters: params,
			asynchronous: false
		});
}

/// add a tag for a design or an article
function addTag(object, type) {
	hideSystemErr();
	hideSystemMsg();

	var tags  = $('addTagFormTags').value;

	var url   = ajaxURL + 'Marketplace/addTag/';
	var params = 'tags=' + encodeURIComponent(tags) + '&object=' + encodeURIComponent(object) + '&type=' + encodeURIComponent(type);

	var tagAjax = new Ajax.Request(url,
		{
			onComplete: function(response) {
				if (response.responseText != 'OK') {
					showSystemErr(response.responseText,'layer-system-err-tag');
				} else {
					trackUserAction('Tag This');
					showSystemMsg(TAG_THANK_YOU);
					hideIbox();
					window.location.href="#";
				}
			},

			method: 'post',
			parameters: params,
			asynchronous:false
		});
}


// reload rating stars
function reloadStarRating(article) {
	var url = ajaxURL + 'Marketplace/rating/article/' + article;
	var oAjax = new Ajax.Request(
		url, {
			onSuccess:showStarRating,
			asynchronous:false,
			evalScripts:true
	});

}

// display the rating content
function showStarRating(oRequest) {
	var div = 'rating';
	$(div).innerHTML = oRequest.responseText;
}

// do star rating
function doStarRating(article, rating) {
	var div = 'rating';
	var url = ajaxURL + 'Marketplace/addRating/article/' + article + '/rating/' + rating;
	var oAjax = new Ajax.Request(
	    url,
	    {
	      asynchronous:true,
	      onComplete: function(response){
				response = response.responseText;
				if (response == 'errorLogin') {
					window.location.href = loginURL;
				} else {
	        		$(div).innerHTML = response;
				}
	      }
	    });

  return false;
}

function doCreate(design) {
    hideSystemErr();
	hideSystemMsg();
	hideIbox();
	newWindow = window.open(ajaxURL + 'Marketplace/confomat/design/' +design, 'customize', 'width=675,height=700');
	newWindow.focus();
}

// grab a design
function doGrab(design, variant) {
	hideSystemErr();
	hideSystemMsg();

	var url   = ajaxURL + 'Marketplace/doGrab/design/' + design + '/';
	if (variant == true) {
		url += 'unilink/130/';
	}
	var params  = '';

	var oAjax = new Ajax.Request(
		url, {
			onComplete: function(response){
				hideIbox();
				if (variant && response.responseText == '1') {
					newWindow = window.open(ajaxURL + 'Marketplace/confomat/grabbed/1/design/' +design, 'customize', 'width=675,height=700');
					newWindow.focus();
				} else {
					if (response.responseText == 1) {
						showSystemMsg(MSG_GRABBED);
					} else if (response.responseText == 2) {
						showSystemErr(MSG_NOT_GRABBED_2ND);
					}else {
						showSystemErr(MSG_NOT_GRABBED);
					}
					window.location.href="#";
				}
			},
			method: 'post',
			parameters: params,
			asynchronous: false
	});
}

// grab a design
function doArticleGrab(article) {
	hideSystemErr();
	hideSystemMsg();

	var url   = ajaxURL + 'Marketplace/doGrab/article/' + article + '/';
	var params  = '';

	var oAjax = new Ajax.Request(
		url, {
			onComplete: function(response){
				hideIbox();
				if (response.responseText == 1) {
					showSystemMsg(MSG_GRABBED);
				} else if (response.responseText == 2) {
					showSystemErr(MSG_NOT_GRABBED_2ND);
				}else {
					showSystemErr(MSG_NOT_GRABBED);
				}
				window.location.href="#";
			},
			method: 'post',
			parameters: params,
			asynchronous: false
	});
}

function articleImageSwitcher(id, hide) {
    if($('design'+id)) {
        if(hide) {
            if($('design'+id).visible()) {
                $('design'+id).hide();
                $('article'+id).show();
            }
        } else {
            if($('article'+id) && $('article'+id).visible()) {
                $('design'+id).show();
                $('article'+id).hide();
            }
        }
    }
}

var currentArray = new Array();
var previousArray = new Array();
var nextArray = new Array();

function switchToNextArticle(mainArticleId, previous) {
    if(currentArray[mainArticleId] == undefined) {
        currentArray[mainArticleId] = mainArticleId;
    }
    if(previous == true) {
        var nextArticleId = previousArray[currentArray[mainArticleId]];
    } else {
        var nextArticleId = nextArray[currentArray[mainArticleId]];
    }
    if(nextArticleId == undefined) nextArticleId = mainArticleId;
    currentArray[mainArticleId] = nextArticleId;
    new Ajax.Request(ajaxURL + 'Marketplace/articleData/article/'+ nextArticleId + '/mainarticle/' + mainArticleId, {
        method: 'get',
        onSuccess: function(response) {
            var articleData = response.responseText.evalJSON(true);
            $('article'+mainArticleId).src = articleData.image;
            if(articleData.composition!='') $('design'+mainArticleId).src = articleData.composition;
            $('price'+mainArticleId).innerHTML = articleData.price;
            $('name'+mainArticleId).innerHTML = articleData.name;
            $('owner'+mainArticleId).innerHTML = '<a href="'+profileURL+'id/'+articleData.user+'/">'+ articleData.owner + '</a>';
            $('imageLink'+mainArticleId).href = articleURL + 'article/' + nextArticleId;
            $('basketLink'+mainArticleId).href = articleURL  + 'article/' + nextArticleId;
        }
    });
}

function markSelected(viewId) {
    $$('.current-selected-thumb').each(function(item) {
        item.removeClassName('current-selected-thumb');
    });
    $('viewPanel'+viewId).addClassName('current-selected-thumb');
}

function addColor(link) {
    if($('prod-color').value != 0) {
        link.href = link + '/color/' + $('prod-color').value;
    }
    return true;
}