function initAdvancedSearch() {
    $(document).ready(function() {
        $("#pDateFromId").datepicker({
            yearRange: "-20:+20",
            dateFormat: 'dd.mm.yy',
            firstDay: 1,
            changeMonth: true,
            changeYear: true,
            constrainInput: true
        });
        $("#pDateToId").datepicker({
            yearRange: "-20:+20",
            dateFormat: 'dd.mm.yy',
            firstDay: 1,
            changeMonth: true,
            changeYear: true,
            constrainInput: true
        });
        
				$(function() {
						function split(val) {
							return val.split(/\s+/);
						}
						function extractLast(term) {
							return split(term).pop();
						}

						$("#pRiders").autocomplete({
							source: function(request, response) {
								$.getJSON("/index.php?a=advSearchJSONRiders", {
									term: extractLast(request.term)
								}, response);
							},
							search: function() {
								// custom minLength
								var term = extractLast(this.value);
								if (term.length < 2) {
									return false;
								}
							},
							focus: function() {
								// prevent value inserted on focus
								return false;
							},
							select: function(event, ui) {
								var terms = split( this.value );
								// remove the current input
								terms.pop();
								// add the selected item
								terms.push( ui.item.value );
								// add placeholder to get the comma-and-space at the end
								terms.push("");
								this.value = terms.join(" ");
								return false;
							}
						});

						$("#pHorses").autocomplete({
							source: function(request, response) {
								$.getJSON("/index.php?a=advSearchJSONHorses", {
									term: extractLast(request.term)
								}, response);
							},
							search: function() {
								// custom minLength
								var term = extractLast(this.value);
								if (term.length < 2) {
									return false;
								}
							},
							focus: function() {
								// prevent value inserted on focus
								return false;
							},
							select: function(event, ui) {
								var terms = split( this.value );
								// remove the current input
								terms.pop();
								// add the selected item
								terms.push( ui.item.value );
								// add placeholder to get the comma-and-space at the end
								terms.push("");
								this.value = terms.join(" ");
								return false;
							}
						});
					});
        
    });
}

function initImageListDetails() {
    $("ul.imagesList li a.toImageDetail").click(function() {
        $.get($(this).attr('href') + "&g=" + Math.random(), dlgImageDetail);
        return false;
    });
		xOffset = 15;
		yOffset = 15;
    $("ul.imagesList li div.preview").click(function() {
        var imgId = $(this).attr('id').split('_')[1];
        $.get("/?a=imgDetail&imId=" + imgId + "&g=" + Math.random(), dlgImageDetail);
        return false;
    });
    $("ul.imagesList li div.preview").mouseover(function(e) {
        $(this).addClass("over");
				var winHeight = $(window).height();
				var winWidth = $(window).width();

				$(this).addClass("over");
        var imgSrc = $(this).find('img').attr('src').replace('200x200', '480x480');
        $("body").append("<p id='bigPreview'><img src='"+ imgSrc +"' alt='Image preview' /></p>");

				//newX
				var newX = e.pageX + xOffset;
				var newXmax = newX + $('#bigPreview > img').width();
				var winOffsetX = ($.browser.msie)?document.documentElement.scrollLeft:window.pageXOffset;
				if(newXmax > winOffsetX + winWidth){
     			newX = e.pageX - xOffset - $('#bigPreview > img').width();
				}
				//newY
				var newY = e.pageY + yOffset;
				var newYmax = newY + $('#bigPreview > img').height();
				var winOffsetY = ($.browser.msie)?document.documentElement.scrollTop:window.pageYOffset;
				if(newYmax > winOffsetY + winHeight){
     			newY = e.pageY - yOffset - $('#bigPreview > img').height();
				}

				$("#bigPreview")
					.css("position",'absolute')
					.css("top",(newY) + "px")
					.css("left",(newX) + "px")
					.css("padding",'2px')
					.css("background",'black')
					.css("border",'1px solid white')
					.show();
    });
    $("ul.imagesList li div.preview").mousemove(function(e) {
			var winHeight = $(window).height();
			var winWidth = $(window).width();
			//newX
			var newX = e.pageX + xOffset;
			var newXmax = newX + $('#bigPreview > img').width();
			var winOffsetX = ($.browser.msie)?document.documentElement.scrollLeft:window.pageXOffset;
			if(newXmax > winOffsetX + winWidth){
				newX = e.pageX - xOffset - $('#bigPreview > img').width();
			}
			//newY
			var newY = e.pageY + yOffset;
			var newYmax = newY + $('#bigPreview > img').height();
			var winOffsetY = ($.browser.msie)?document.documentElement.scrollTop:window.pageYOffset;
			if(newYmax > winOffsetY + winHeight){
				newY = e.pageY - yOffset - $('#bigPreview > img').height();
			}
			$("#bigPreview")
				.css("top",(newY) + "px")
				.css("left",(newX) + "px");
    });
    $("ul.imagesList li div.preview").mouseout(function(e) {
				$("#bigPreview").remove();
        $(this).removeClass("over");
    });
    //$("ul.imagesList").noContext();


};

function dlgImageDetail(data) {
    $("#imageEditDlg").remove();
    $('<div>&#160;</div>').attr('id', 'imageEditDlg').appendTo("body");
    $("#imageEditDlg").dialog({
        modal: true,
        height: 604,
        width: 900,
        resizable: false,
        overlay: {
            opacity: 0.75,
            background: 'black'
        },
        close: function() {
            $("#imageEditDlg").dialog("destroy");
            $("#imageEditDlg").remove();
        }
    });
    $("#imageEditDlg").html(data);
    $("#imageEditDlg a.addToCart").click(function() {
        $.get($(this).attr('href') + "&g=" + Math.random(), addToCartFill);
        var imageId = $(this).attr('id').split('_')[1];
        $(this).hide();
        $("#imDetailDelFromCart_" + imageId).show();
        return false;
    });
    $("#imageEditDlg a.delFromCart").click(function() {
        $.get($(this).attr('href') + "&g=" + Math.random(), addToCartFill);
        var imageId = $(this).attr('id').split('_')[1];
        $(this).hide();
        $("#imDetailAddToCart_" + imageId).show();
        return false;
    });
    $("#closeDlg").click(function() {
        $("#imageEditDlg").dialog("destroy");
        $("#imageEditDlg").remove();
        return false;
    });
    //$("#imageEditDlg").noContext();
}

function initFullCatalogueList() {
		$("ul.imagesList li div.preview").click(function() {
        var imgId = $(this).attr('id').split('_')[1];
        location.href = "/index.php?a=fullCatalogueDetail&imId=" + imgId;
        return false;
    });
		xOffset = 15;
		yOffset = 15;
		$("ul.imagesList li div.preview").mouseover(function(e) {
				var winHeight = $(window).height();
				var winWidth = $(window).width();
				$(this).addClass("over");
        var imgSrc = $(this).find('img').attr('src').replace('200x200', '480x480');
        $("body").append("<p id='bigPreview'><img src='"+ imgSrc +"' alt='Image preview' /></p>");

				//newX
				var newX = e.pageX + xOffset;
				var newXmax = newX + $('#bigPreview > img').width();
				var winOffsetX = ($.browser.msie)?document.documentElement.scrollLeft:window.pageXOffset;
				if(newXmax > winOffsetX + winWidth){
     			newX = e.pageX - xOffset - $('#bigPreview > img').width();
				}
				//newY
				var newY = e.pageY + yOffset;
				var newYmax = newY + $('#bigPreview > img').height();
				var winOffsetY = ($.browser.msie)?document.documentElement.scrollTop:window.pageYOffset;
				if(newYmax > winOffsetY + winHeight){
     			newY = e.pageY - yOffset - $('#bigPreview > img').height();
				}

				$("#bigPreview")
					.css("position",'absolute')
					.css("top",(newY) + "px")
					.css("left",(newX) + "px")
					.css("padding",'2px')
					.css("background",'black')
					.css("border",'1px solid white')
					.show();
				//alert(this.find('img').attr('src'));
    });
    
    $("ul.imagesList li div.preview").mousemove(function(e) {
			var winHeight = $(window).height();
			var winWidth = $(window).width();
			//newX
			var newX = e.pageX + xOffset;
			var newXmax = newX + $('#bigPreview > img').width();
			var winOffsetX = ($.browser.msie)?document.documentElement.scrollLeft:window.pageXOffset;
			if(newXmax > winOffsetX + winWidth){
				newX = e.pageX - xOffset - $('#bigPreview > img').width();
			}
			//newY
			var newY = e.pageY + yOffset;
			var newYmax = newY + $('#bigPreview > img').height();
			var winOffsetY = ($.browser.msie)?document.documentElement.scrollTop:window.pageYOffset;
			if(newYmax > winOffsetY + winHeight){
				newY = e.pageY - yOffset - $('#bigPreview > img').height();
			}
			$("#bigPreview")
				.css("top",(newY) + "px")
				.css("left",(newX) + "px");
		});
		
    $("ul.imagesList li div.preview").mouseout(function(e) {
				$("#bigPreview").remove();
				$(this).removeClass("over");
    });
    //$("ul.imagesList").noContext();
};




function addToCartFill(data) {
    var respParts = data.split('|');

    if (respParts[0] != null) {
        respParts[0] = $.trim(respParts[0]);
        $("#globalCartItemsCount").html(respParts[0]);
    }
}

function initCartContent() {
    $("#cartContent .cartItem a.lnkAddVersion").click(function() {
        var imageId = $(this).attr('id').split('_')[1];
        var maxId = $("#imageVersionsCount_" + imageId).val();
        maxId++;
        var template = $("#addVersion");

        var versionRow = $(document.createElement("div")).attr('id', 'version_' + imageId + '_' + maxId);

        var elFormats = $("#addVersion .imageFormats").clone();
        elFormats.attr('name', 'cartItemVersion_f_' + imageId + '_' + maxId + '');
        versionRow.append(elFormats);
        var elTypes = $("#addVersion .imageTypes").clone();
        elTypes.attr('name', 'cartItemVersion_t_' + imageId + '_' + maxId + '');
        versionRow.append(elTypes);
        var elPrice = $("#addVersion .imagePrice").clone();
        elPrice.attr('id', 'cartItemVersion_price_' + imageId + '_' + maxId + '');
        versionRow.append(elPrice);
        var elCount = $("#addVersion .imageCount").clone();
        elCount.attr('name', 'cartItemVersion_count_' + imageId + '_' + maxId + '');
        versionRow.append(elCount);
        var elPriceTotal = $("#addVersion .imagePriceTotal").clone();
        elPriceTotal.attr('id', 'cartItemVersion_priceTotal_' + imageId + '_' + maxId + '');
        versionRow.append(elPriceTotal);
        var elRemove = $("#addVersion .lnkDelVersion").clone();
        elRemove.attr('id', 'cartItemVersionDel_' + imageId + '_' + maxId + '');
        versionRow.append(elRemove);
        var elClear = $("#addVersion .clear").clone();
        versionRow.append(elClear);


        $(this).before(versionRow);
        $("#imageVersionsCount_" + imageId).val(maxId);
        //init actions
        $("#cartItemVersionDel_" + imageId + "_" + maxId).click(cartVersionDel);
        $("#version_" + imageId + "_" + maxId + " .imageFormats").change(cartVersionChangeWithFalseRefresh);
        $("#version_" + imageId + "_" + maxId + " .imageTypes").change(cartVersionChangeWithFalse);
        $("#version_" + imageId + "_" + maxId + " .imageCount").keyup(cartCountsKeyUp);
        $("#version_" + imageId + "_" + maxId + " .imageCount").change(cartVersionChangeCount);
        $("#version_" + imageId + "_" + maxId + " .imageFormats").each(cartVersionChangeWithoutFalse);
        return false;
    });
    computeCartTotalPrice();
    $("#cartContent .cartItem a.lnkDelVersion").click(cartVersionDel);
    $("#cartContent .cartItem .imageFormats").change(cartVersionChangeWithFalseRefresh);
    $("#cartContent .cartItem .imageTypes").change(cartVersionChangeWithFalse);
    $("#cartContent .cartItem .imageCount").keyup(cartCountsKeyUp);
    $("#cartContent .cartItem .imageCount").change(cartVersionChangeCount);

    //$("#cartContent .cartItem .imageFormats").each(cartVersionChange);
    $("#cartContent .cartItem .imageFormats").each(cartVersionChangeWithoutFalse);
    $("#cartContent .cartCalendar .calendarCount").keyup(cartCountsKeyUp);
    $("#cartContent .cartCalendar .calendarCount").change(cartCalendarChangeCount);


}
function cartVersionDel() {
    var nameParts = $(this).attr('id').split('_');
    $("#version_" + nameParts[1] + "_" + nameParts[2]).remove();
    $("#cartContent .cartItem .imageFormats").each(cartVersionChangeWithoutFalse);
    return false;
}
function cartVersionChangeWithFalse() {
    cartVersionChange($(this), false);
    return false;
}
function cartVersionChangeWithFalseRefresh() {
    cartVersionChange($(this), true);
    return false;
}

function cartCountsKeyUp() {
    var newVal = $(this).val().replace(/[^0-9]/g, '');
    $(this).val(newVal);
}



function cartVersionChangeCount() {
    cartVersionChange($(this));
    return false;
}

function cartCalendarChangeCount() {
    var parent = $(this).parent();

    var nameParts = $(this).attr('id').split('_');
    var calendarId = nameParts[2];
    var calendarCount = $(this).val();
    var calendarPrice = $("#cartCalendar_price_" + calendarId).val();
    $("#cartCalendar_priceTotal_" + calendarId).val(calendarCount * calendarPrice);
    computeCartTotalPrice();
    return false;
}


function cartVersionChangeWithoutFalse() {
    cartVersionChange($(this), true);
}

function cartVersionChange(el, isFormatChange) {
    var version = $(el).parent();
    var versionStrParsed = version.attr('id').split('_');
    var imageId = versionStrParsed[1];
    var versionIndex = versionStrParsed[2];
    var formatId = $(version).find(".imageFormats").val();
    var typeId = $(version).find(".imageTypes").val();
    var imagesCount = $(version).find(".imageCount").val();

    if (prices[formatId] != undefined) {
        if (prices[formatId][typeId] == undefined) {
            typeId = 1;
            $(version).find(".imageTypes").val(typeId);
        }

        if (isFormatChange) {
            var typeOptions = $(version).find(".imageTypes")[0];
            var wasSetFirst = false;
            for (var i = 0; i < typeOptions.options.length; i++) {
                if (prices[formatId][typeOptions.options[i].value] == undefined) {
                    $(typeOptions.options[i]).hide();
                    $(typeOptions.options[i]).removeAttr('selected');
                } else {
                    $(typeOptions.options[i]).show();
                    if (!wasSetFirst) {
                        //alert($(typeOptions.options[i]).val());
                        $(typeOptions.options[i]).attr('selected', 'selected');
                        wasSetFirst = true;
                        typeId = $(typeOptions.options[i]).val();
                    }
                }
            }
        }
    }

    var rowPrice = prices[formatId][typeId]
    var rowPriceTotal = rowPrice * imagesCount;
    $(version).find(".imagePrice").val(rowPrice);
    $(version).find(".imagePriceTotal").val(rowPriceTotal);

    //compute total item price
    $("#itemTotalPrice_" + imageId).text(0);
    $("#cartItemVersions_" + imageId + " .imagePriceTotal").each(function() {
        var itemPriceTotal = parseFloat($("#itemTotalPrice_" + imageId).text());

        itemPriceTotal += parseFloat($(this).val());
        $("#itemTotalPrice_" + imageId).text(itemPriceTotal);
    });
    computeCartTotalPrice();
}


function computeCartTotalPrice() {
    //compute total cartPrice
    $("#cartPriceTotal").text(0);
    $("#cartContent .imagePriceTotal").each(function() {
        var cartPriceTotal = parseFloat($("#cartPriceTotal").text());
        cartPriceTotal += parseFloat($(this).val());
        $("#cartPriceTotal").text(cartPriceTotal);
    });
    $("#cartContent .calendarPriceTotal").each(function() {
        var cartPriceTotal = parseFloat($("#cartPriceTotal").text());
        cartPriceTotal += parseFloat($(this).val());
        $("#cartPriceTotal").text(cartPriceTotal);
    });
    //compute VAT
    var priceTotal = parseFloat($("#cartPriceTotal").text());
    var priceVat = 0;
    priceVat = Math.round(priceTotal * (vat - 1));
    $("#cartVAT").text(priceVat);
    //compute total price with VAT
    $("#cartPriceTotalWithVAT").text(Math.round(priceTotal + priceVat));

    // enable/disable toOrderButton
    var cartTotalPrice = $("#cartPriceTotal").text();
    if (cartTotalPrice == '' || cartTotalPrice == '0') {
        $("#toOrder").attr('disabled', 'disabled');
    } else {
        $("#toOrder").removeAttr('disabled');
    }

}

function searchAdvClear() {
    location.href = "/index.php?a=advSearchReset";
}


function initFullCatalogueImageDetail() {
    $(".addToCart").click(function() {
        $.get($(this).attr('href') + "&g=" + Math.random(), addToCartFill);
        var imageId = $(this).attr('id').split('_')[1];
        $(this).hide();
        $("#imDetailDelFromCart_" + imageId).show();
        return false;
    });
    $(".fullCatDetail a.delFromCart").click(function() {
        $.get($(this).attr('href') + "&g=" + Math.random(), addToCartFill);
        var imageId = $(this).attr('id').split('_')[1];
        $(this).hide();
        $("#imDetailAddToCart_" + imageId).show();
        return false;
    });
    //$(".fullCatDetail").noContext();
}

function initCartContactsForm() {
    $(".errorMain").hide();
    $("span.error").hide();
    $("input[type=submit]").click(function() {
        $(".errorMain").hide();
        $("span.error").hide();

        var result = true;
        var re = new RegExp(/(.){2,50}/);
        if (!re.test($("#idFirstName").val())) {
            result = false;
            $("#idFirstNameErr").show();
        }

        if (!re.test($("#idLastName").val())) {
            result = false;
            $("#idLastNameErr").show();
        }
        re = new RegExp(/(.){4,100}/);
        if ($("#idCompany").val() != '' && !re.test($("#idCompany").val())) {
            result = false;
            $("#idCompanyErr").show();
        }
        re = new RegExp(/(.){3,100}/);
        if (!re.test($("#idStreet").val())) {
            result = false;
            $("#idStreetErr").show();
        }
        re = new RegExp(/(.){2,100}/);
        if (!re.test($("#idCity").val())) {
            result = false;
            $("#idCityErr").show();
        }
        if (!re.test($("#idCountry").val())) {
            result = false;
            $("#idCountryErr").show();
        }
        re = new RegExp(/([0-9a-zA-Z ]){2,20}/);
        if (!re.test($("#idZip").val())) {
            result = false;
            $("#idZipErr").show();
        }
        re = new RegExp(/^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$/);
        if (!re.test($("#idEmail").val())) {
            result = false;
            $("#idEmailErr").show();
        }
        re = new RegExp(/([0-9 +]){2,20}/);
        if (!re.test($("#idPhone").val())) {
            result = false;
            $("#idPhoneErr").show();
        }

        if (!result) {
            $(".errorMain").show();
        }

        return result;
    });

}


function wrapperResizeTo(w) {
    $('#wrapper').css({ 'width': w + 'px' });
    $.get('/index.php', { 'a': 'setWrapperWidth', 'nv': w });
    $("a[id^='pgWidth']").each(function() {
        if ($(this).hasClass('activePageWidth')) {
            $(this).removeClass('activePageWidth')
        }
    });

    $("#pgWidth_" + w).addClass('activePageWidth');

}

function initLightBoxReferences() {
    $(document).ready(function() {
        $("a[rel='lightbox']").lightbox({
            fitToScreen: true
        });
    });
}


function initCalendarDetail() {
    $(".addToCart").click(function() {
        $.get($(this).attr('href') + "&g=" + Math.random(), addToCartFill);
        var calendarId = $(this).attr('id').split('_')[1];
        $(this).hide();
        $("#calDetailDelFromCart_" + calendarId).show();
        return false;
    });
    $(".delFromCart").click(function() {
        $.get($(this).attr('href') + "&g=" + Math.random(), addToCartFill);
        var calendarId = $(this).attr('id').split('_')[1];
        $(this).hide();
        $("#calDetailAddToCart_" + calendarId).show();
        return false;
    });
    //$(".calDetail").noContext();
}










