// Color contrast
.color-yiq(@color) {

    .yiq-mixin (@v) when (@v >= 150) {
        color: #111;
    }
    .yiq-mixin (@v) when (default()) {
        color: #fff;
    }

    @r: red(@color);
    @g: green(@color);
    @b: blue(@color);

    @yiq: ((@r * 299) + (@g * 587) + (@b * 114)) / 1000;
    .yiq-mixin(@yiq);
}

// Basic loop
.for(@adList, @adCode) {
    & {
        .loop(@adI:1) when (@adI =< length(@adList)) {
            @adIndex: @adI - 1;
			@adItem: extract(@adList, @adI);

			@adCode();

			.loop(@adI + 1);
        }
        .loop();
    }
}

.for-each(@adList, @adCode) {
    & {
        .loop(@adI:1) when (@adI =< length(@adList)) {
            @adIndex: @adI - 1;
            @adItem: extract(@adList, @adI);
            @adKey: extract(@adItem, 1);
            @adValue: extract(@adItem, 2);

			@adCode();

			.loop(@adI + 1);
        }
        .loop();
    }
}
