/* 
	glit.js
	@author Abdelkader KACEMY
	GREEN LINE IT
	www.greenlineit.net
	created: 10/17/2011 @ 05:05 PM
	last update: 10/21/2011 11:42 AM

*/

if (jQuery) (function($) {
	var keyString = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
	var uTF8Encode = function(string) {
		string = string.replace(/\x0d\x0a/g, "\x0a");
		var output = "";
		for (var n = 0; n < string.length; n++) {
			var c = string.charCodeAt(n);
			if (c < 128) {
				output += String.fromCharCode(c);
			} else if ((c > 127) && (c < 2048)) {
				output += String.fromCharCode((c >> 6) | 192);
				output += String.fromCharCode((c & 63) | 128);
			} else {
				output += String.fromCharCode((c >> 12) | 224);
				output += String.fromCharCode(((c >> 6) & 63) | 128);
				output += String.fromCharCode((c & 63) | 128);
			}
		}
		return output;
	};
	var uTF8Decode = function(input) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
		while ( i < input.length ) {
			c = input.charCodeAt(i);
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			} else if ((c > 191) && (c < 224)) {
				c2 = input.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			} else {
				c2 = input.charCodeAt(i+1);
				c3 = input.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
		}
		return string;
	}
	$.extend({
		base64Encode: function(input) {
			var output = "";
			var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
			var i = 0;
			input = uTF8Encode(input);
			while (i < input.length) {
				chr1 = input.charCodeAt(i++);
				chr2 = input.charCodeAt(i++);
				chr3 = input.charCodeAt(i++);
				enc1 = chr1 >> 2;
				enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
				enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
				enc4 = chr3 & 63;
				if (isNaN(chr2)) {
					enc3 = enc4 = 64;
				} else if (isNaN(chr3)) {
					enc4 = 64;
				}
				output = output + keyString.charAt(enc1) + keyString.charAt(enc2) + keyString.charAt(enc3) + keyString.charAt(enc4);
			}
			return output;
		},
		base64Decode: function(input) {
			var output = "";
			var chr1, chr2, chr3;
			var enc1, enc2, enc3, enc4;
			var i = 0;
			input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
			while (i < input.length) {
				enc1 = keyString.indexOf(input.charAt(i++));
				enc2 = keyString.indexOf(input.charAt(i++));
				enc3 = keyString.indexOf(input.charAt(i++));
				enc4 = keyString.indexOf(input.charAt(i++));
				chr1 = (enc1 << 2) | (enc2 >> 4);
				chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
				chr3 = ((enc3 & 3) << 6) | enc4;
				output = output + String.fromCharCode(chr1);
				if (enc3 != 64) {
					output = output + String.fromCharCode(chr2);
				}
				if (enc4 != 64) {
					output = output + String.fromCharCode(chr3);
				}
			}
			output = uTF8Decode(output);
			return output;
		}
	});
})(jQuery);

$(function () {

    if ($('.preview_wrapper').length > 0) {

        var previewTimeout;

        function showPreview(wrapper,heading,title,src,infos,width,height) {
            var previewHTML='<img id="glitPreviewImage" height="'+height+'" width="'+width+'" src="'+src+'" alt=""/><div id="glitPreviewLoding">Please wait...</div>';
            heading.innerHTML=title;
            document.getElementById('glitPreviewBody').innerHTML=previewHTML;
			previewDescrition = document.getElementById('glitPreviewInfos').innerHTML=infos;
            previewProgress = document.getElementById('glitPreviewLoding');
            previewImage = document.getElementById('glitPreviewImage');
            previewImage.onload=function() {
                previewProgress.style.display='none';
            }
            previewTimeout = setTimeout(function (){
                wrapper.display='block'
                },250);
        }

        function showFLVPreview(wrapper,heading,title,src,width,height) {
            var flvBlock = '' +
            '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" style="display:block" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="' + width + '" height="' + height + '">' +
            '<param name="allowScriptAccess" value="sameDomain" />' +
            '<param name="allowFullScreen" value="true" />' +
            '<param name="quality" value="high">' +
            '<param name="menu" value="false">' +
            '<param id="nameValueFLV" name="movie" value="/images/popup-player.swf?titleVideo=' + src + '" />' +
            '<param name="quality" value="high" />' +
            '<param name="bgcolor" value="#010101" />' +
            '<embed src="/images/popup-player.swf?titleVideo=' + src + '" quality="high" menu="false" bgcolor="#010101" width="' + width + '" height="' + height + '" name="video" align="middle" allowScriptAccess="sameDomain" allowFullScreen="true" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></embed>' +
            '</object>';
            $('#glitPreviewBody').prepend(flvBlock);
            $('#glitPreviewLoding').css('display', 'none');
            heading.innerHTML=title;
            previewTimeout = setTimeout(function (){
                wrapper.display='block'
                },250);
        }

        function hidePreview(wrapper,heading,image) {
            clearTimeout(previewTimeout);
            $('#glitPreviewBody').empty();
            wrapper.display='none';
        }

        function previewMouseFollow(event,wrapper,width,height,winWidth,winHeight,topOffset) {
            pageX=event.pageX;
            pageY=event.pageY;
            previewOffsetTop=(winHeight-height)/2;
            previewOffsetLeft=(winWidth-width)/2;
            correctedTopOffset=previewOffsetTop+topOffset;
            offset=30;
            centered=false;
            if (winHeight > height) {
                if (pageY<correctedTopOffset-offset) {
                    pageY=pageY+offset;
                }
                else if (pageY>correctedTopOffset+height+offset) {
                    pageY=pageY-offset-height;
                }
                else {
                    pageY=correctedTopOffset;
                    centered=true;
                }
            }
            else {
                pageY=topOffset;
                centered=true;
            }
            if (centered) {
                if (pageX<winWidth/2) {
                    pageX+=offset;
                }
                else {
                    pageX=pageX-width-offset;
                }
            }
            else {
                if (pageX<previewOffsetLeft-offset) {
                    pageX=pageX+offset;
                }
                else if (pageX>previewOffsetLeft+width+offset) {
                    pageX=pageX-width-offset;
                }
                else {
                    pageX=previewOffsetLeft;
                }
            }
            wrapper.left=pageX+'px';
            wrapper.top=pageY+'px';
        }

        var currentWindow=$(window);
        var windowObj = new Object();
        windowObj.width = currentWindow.width();
        windowObj.height = currentWindow.height();
        windowObj.scrollTop = currentWindow.scrollTop();
        var previewWrapper=document.getElementById('glitPreviewWrapper').style;
        var previewHeading=document.getElementById('glitPreviewHeading');
        var previewProgress;
        var previewImage;

        currentWindow.resize(function(){
            windowObj.width=$(this).width();
            windowObj.height=$(this).height();
        }).scroll(function(){
            windowObj.scrollTop=$(this).scrollTop();
        });
		
		

        $('.preview_wrapper').each(function() {
            var currentTemplate = $(this);
            var previewInfo = currentTemplate.attr('id').split('_');
            var widthOffset = 32;
            var heightOffset = 53;
            var display;

            eval('var previewObject = ' + $.base64Decode(previewInfo[1]));
            if (previewObject.width > 0) {
                previewObject.id = previewInfo[0];
                currentTemplate.hover(
                    function() {
                        var fileExt = previewObject.img.substr(previewObject.img.length-4, 4).toLowerCase();
                        switch (fileExt) {
                            case '.flv':
                                $('#glitPreviewBody').html('<div id="glitPreviewLoding">Loading template preview...</div>');
                                previewProgress = document.getElementById('glitPreviewLoding');
                                break;
                            default:
                                $('#glitPreviewBody').html('<img id="glitPreviewImage" height="" width="" src="" alt=""/><div id="glitPreviewLoding">Loading template preview...</div>');
                                previewProgress = document.getElementById('glitPreviewLoding');
                                previewImage = document.getElementById('glitPreviewImage');
                                previewImage.onload=function() {
                                    previewProgress.style.display='none';
                                }
                                break;
                        }
						$('#glitPreviewWrapper').width(previewObject.width);
                        previewProgress.style.display="block";
                        previewWidth=previewObject.width+widthOffset;
                        previewHeight=previewObject.height+heightOffset;
                        if (windowObj.width > previewWidth) {
                            display = true;
                        } else {
                            display = false;
                        }
                        if (display) {
                            switch (fileExt) {
                                case '.flv':
                                    showFLVPreview(previewWrapper,previewHeading,'Template ' + previewObject.id,'/www.directsilverfactory.com' + previewObject.img,previewObject.width,previewObject.height);
                                    break;
                                default:

                                    showPreview(previewWrapper,previewHeading,'Product: ' + previewObject.id,'http://www.directsilverfactory.com'+previewObject.img,previewObject.infos,previewObject.width,previewObject.height);
                                    break;
                            }
                        }
                    },
                    function() {
                        var fileExt = previewObject.img.substr(previewObject.img.length-4, 4).toLowerCase();
                        hidePreview(previewWrapper,previewHeading);
                    }
                    ).mousemove(function(event) {
                    if (display) {
                        previewMouseFollow(event,previewWrapper,previewWidth,previewHeight,windowObj.width,windowObj.height,windowObj.scrollTop);
                    }
                });
            }
        });

    }

});
