function paginate(slider, points) {

    //clear page box
    $(points).getElements("a").each(function(e) {
        //e.remove();
        e.dispose();
    });
    var useFirst=true;
    $(slider).getChildren().getChildren()[0].each(function(page, index) {
        if (page.id == "currentChild") {
            useFirst=false;
        }
    });
    
    $(slider).getChildren().getChildren()[0].each(function(page, index) {
            var point = new Element('a', {
                'href':'javascript: void new SimpleSlide(\''+slider+'\',\''+points+'\',{type: \'scroll\', goTo:'+(index+1)+', duration:400});',
                'class':'page'
            });
            if (page.id == "currentChild" || (index==0 && useFirst)) {
                point.addClass('active');
            } else {
                found = true;
            }
            $(points).adopt(point);
    });
}

/* function to set png-filter for ie6 */
function setPng24(obj) {
    obj.width=obj.height=1;
    obj.className=obj.className.replace(/\bpng24\b/i,'');
    obj.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+ obj.src +"',sizingMethod='image');"
    obj.src='';
    return '';
} 

/* function to trim string */
function trim(str) {
  return str.replace(/^\s+/,'').replace(/\s+$/,'');
}

function parseResponse(responseText) {
	// normalize response
	responseText=responseText.replace(/\r\n/g,"\n");
	responseText=responseText.replace(/\n/g," ");
	
	// match body
	var bodyPattern=/<body>\s*?(.+)\s*?<\/body/gi;
	bodyPattern.exec(responseText);
	
	// trim result
	var bodyText=trim(RegExp.$1);
	
	// match parts
	var messagePattern=/(.+)\s+(.+)/gi;
	messagePattern.exec(bodyText);
	
	// create return message
	var result=[];
	result[0]=RegExp.$1;
	result[1]=RegExp.$2;
	
	// check for error
	if(result[0]!="FILE")	{
		result[0]="ERROR";
		result[1]=bodyText;
	}
	
	return(result);
}

function closeWindow() {
    // fade out message 1
    $('shaderBox').set('tween',{
        duration:'long'
    }).fade(0);
}

function openWindow(PurchaseId,VideoAssetId,ProgressBar,PageType) {
    // check for selected device
    if(typeof(VideoAssetId) === 'undefined') {
        alert(i18n_error_select_device);
        return;
	}

    // check browser
    if(window.Browser.Engine.gecko) {
        $('steps_ie').style.display="none";
        $('steps_ff').style.display="block";
    } else {
        $('steps_ie').style.display="block";
        $('steps_ff').style.display="none";
    }
    
    // set url for download
    var URL='/RequestMovie.aspx';
	// define handler
	var handler="";
    // set max-left
    var max_left=555;

    // parse browser capabilities
    if(!PluginList.check('Windows Media Player') && (PageType=='vod_pc')) {
        PageType="dto_pc";
    }
    
    // check type to provide
    var type="";
    switch(PageType)
    {
        case "dto_mobile":
        case "dto_pc":
            type="download";
            break;
        case "vod_pc":
            type="stream";
            break;
    }

    // reset to waiting message
    $('download_page_message_' + PageType).innerHTML=$('download_page_wait').innerHTML;
    
    // hide shader box
    $('shaderBox').innerHTML=$('download_page_' + PageType).innerHTML;
    $('shaderBox').style.opacity=0.0;
    $('shaderBox').style.filter='alpha(opacity=0)';
    $('shaderBox').style.visibility='visible';
    $('shaderBox').style.top='0px';
    $('shaderBox').style.left='0px';
    $('shaderBox').style.paddingTop='0px';
    $('shaderBox').style.height=parseInt(document.body.offsetHeight) + 'px';
    $('shaderBox').style.width=parseInt(document.body.offsetWidth) + 'px';
    $('shaderBox').set('tween',{duration:'long'}).fade('hide');

    // hide links
    $('download_page_link_href_stream').style.display='none';
    $('download_page_link_href_download').style.display='none';

    // fade in message
    $('shaderBox').set('tween',{
        duration:'long',
        onComplete:function()
        {
		    // init progress-bar
            $('progress_bar_' + PageType).style.display='block';
		    $('progress_bar_' + PageType).style.left='204px';
		    $('progress_bar_bg_' + PageType).removeClass('complete');
		    $('progress_bar_bg_' + PageType).addClass('loading');

            // display link
            $('download_page_link_href_' + type).style.display='block';
		    
		    // init progress
		    handler=window.setInterval(function() {
		        if(parseInt($('progress_bar_' + PageType).style.left)<max_left) {
		            $('progress_bar_' + PageType).style.left=parseInt($('progress_bar_' + PageType).style.left) + 1 + 'px';
		        }
		    },250);
				
            // create file
            var RequestToDownload=new Request.HTML({
                url:URL,
                async:true,
                onSuccess:function(tr,elm,html,js) {
	                // clear interval
	                window.clearInterval(handler);
	                // set to full width
	                $('progress_bar_' + PageType).style.left='0px';
	                $('progress_bar_' + PageType).style.display='none';
			            $('progress_bar_bg_' + PageType).removeClass('loading');
		      		    $('progress_bar_bg_' + PageType).addClass('complete');

									// parse result
									var result=parseResponse(html);

                  var error='';
                  var link='';
                  if(result.length<2) {
                      error="ERROR";
                  } else {
                      error=result[0];
                      link=result[1];
                      if(link.length==0) {
                          error="ERROR";
                      }
                  }
                  
                  // check return
                  if(error!="ERROR")
                  {
                      // copy link
                      $('download_page_link_href_' + type).href=link;
                      // set message
                      $('download_page_message_' + PageType).innerHTML=$('download_page_link').innerHTML;
                  }
                  else
                  {
                      // set message
                      $('download_page_message_' + PageType).innerHTML=$('download_page_link_error').innerHTML;
                  }
                },                
                onFailure:function(xhr) {
	                // clear interval
	                window.clearInterval(handler);
	                
	                // set to full width
	                $('progress_bar_' + PageType).style.left='0px';
	                $('progress_bar_' + PageType).style.display='none';
		            $('progress_bar_bg_' + PageType).removeClass('loading');
        		    $('progress_bar_bg_' + PageType).addClass('complete');

                    // set message
                    $('download_page_message_' + PageType).innerHTML=$('download_page_link_error').innerHTML;
                }                
            }).get({'PurchaseID':PurchaseId,'VideoAssetID':VideoAssetId,'TypeID':type});
        }
    }).fade(0.9);
}

// get query args
function getArgs(query) { 
	var args=new Hash(); 
	if(!query) {
		var query=location.search.substring(1); 
	}
	var pairs=query.split("&"); 
	for(var i=0;i<pairs.length;i++) { 
		var pos=pairs[i].indexOf('='); 
		if(pos==-1) continue; 
		var argname=pairs[i].substring(0,pos); 
		var value=pairs[i].substring(pos+1); 
		args.set(argname,unescape(value)); 
	} 
	return args; 
} 


// #################### VOUCHER REDEEM ##################
function redeemVoucher(event) {
  // check login
  if(!document.getElementById('url_ce9fa761-5972-41ab-8419-7553a58ee0ed'))
  {
    var voucher_entry=$('redeem_voucher');
    var voucher_msg=$('redeem_voucher_message');
		
    // clear previous message
    voucher_msg.innerHTML="";
    
    // try to create voucher
    var RequestVoucher=new Request.HTML({
        url:'/RedeemVoucher.aspx',
        async:false,
        onSuccess:function(tr,elm,html,js) {
            voucher_msg.innerHTML=i18n_voucher_add;
        },
        onFailure:function(xhr) {
            if(xhr.status==399) {
                voucher_msg.innerHTML=i18n_voucher_error;
            }
        }                
    }).get({'voucherRef':voucher_entry.value});
	} else {
		// get length of parameter		
		var args=getArgs();
    // sign in user
		if(args.getLength()>0) {
	    window.location.href=document.getElementById('url_ce9fa761-5972-41ab-8419-7553a58ee0ed').href + "%26voucher=" + $('redeem_voucher').value;
	  } else {
	    window.location.href=document.getElementById('url_ce9fa761-5972-41ab-8419-7553a58ee0ed').href + "%3Fvoucher=" + $('redeem_voucher').value;
	  }
	}
}

function redeemVoucherCheck() {
    var voucher_entry=$('redeem_voucher');
    var voucher_activate=$('redeem_voucher_activate');

		// check for given voucher
		var args=getArgs();
		if(args.has('voucher')) {
			if(voucher_entry.value=="") {
				voucher_entry.value=args.get('voucher');
			}
		}
		
		// check length
		if(voucher_entry.value.length==14) {
			// set color
	    voucher_activate.setStyle('color','#ff0000');
		} else {
			// set color
	    voucher_activate.setStyle('color','#666666');
		}
}

// ##################### OFFER HELPER ###################
// mapping-list
var offerMap=$H();
var offerId=0;
function addOffer(id) {
  offerMap[id]=[id];
}
var flagError=false;

function addBasket(id) {
  // check login
  if(!document.getElementById('url_ce9fa761-5972-41ab-8419-7553a58ee0ed'))
  {
    // save to global scope
    offerId=id;

    // hide shader box
    $('shaderMessage').innerHTML=i18n_add_basket_message;
    $('shaderBox').style.opacity=0.0;
    $('shaderBox').style.filter='alpha(opacity=0)';
    $('shaderBox').style.visibility='visible';
    $('shaderBox').style.top='0px';
    $('shaderBox').style.left='0px';
    $('shaderBox').style.height=parseInt(document.body.offsetHeight) + 'px';
    $('shaderBox').style.width=parseInt(document.body.offsetWidth) + 'px';
    $('shaderBox').set('tween',{duration:'long'}).fade('hide');

    $('shaderBox').set('tween',{
        duration:'long',
        onComplete:function()
        {
            // add item to basket (syncronous)
            var RequestToBasket=new Request.HTML({
                url:'/EditCart.aspx',
                async:false,
                onSuccess:function(tr,elm,html,js) {
                    window.location.href='ShoppingCart.aspx';
                    /*
                    $('shaderMessage').innerHTML='Your product has been added to your shopping basket';
                    $('shaderBox').set('tween',{
                        duration:'long',
                        onComplete:function() {
                            $('shaderMessage').innerHTML='Please wait...';
                            $('shaderBox').style.visibility='hidden';
                            $('shaderBox').style.top='0px';
                            $('shaderBox').style.left='0px';
                            $('shaderBox').style.width='1px';
                            $('shaderBox').style.height='1px';
                            window.location.href='ShoppingCart.aspx';
                        }
                    }).fade(0);
                    */
                },
                onFailure:function(xhr) {
                    if(xhr.status==399) {
                        // set global error-flag (prevent from adding mobile-version to the basket
                        flagError=true;
                        switch(xhr.getResponseHeader("Location")) {
                            case "Error.aspx?type=DuplicateError":
                                $('shaderMessage').innerHTML=i18n_add_basket_duplicate_error;
                                break;
                            case "Error.aspx?type=GeolocationError":
                                $('shaderMessage').innerHTML=i18n_add_basket_geolocation_error;
                                break;
                            case "Error.aspx?type=GeneralError":
                                $('shaderMessage').innerHTML=i18n_add_basket_generic_error;
                                break;
                        }

                        $('shaderBox').set('tween',{
                            duration:'long',
                            onComplete:function() {
                                $('shaderMessage').innerHTML=i18n_wait_message;
                                $('shaderBox').style.visibility='hidden';
                                $('shaderBox').style.top='0px';
                                $('shaderBox').style.left='0px';
                                $('shaderBox').style.width='1px';
                                $('shaderBox').style.height='1px';
                            }
                        }).fade(0);
                    }
                }                
            }).get({'catalog':'A','action':'add','offerId':offerId});
        }
    }).fade(0.8);
  } else {
    // sign in user
    window.location.href=document.getElementById('url_ce9fa761-5972-41ab-8419-7553a58ee0ed').href;
  }
}

function delBasket(id) {
    // save to global scope
    offerId=id;

    // hide shader box
    $('shaderMessage').innerHTML=i18n_del_basket_message;
    $('shaderBox').style.opacity=0.0;
    $('shaderBox').style.filter='alpha(opacity=0)';
    $('shaderBox').style.visibility='visible';
    $('shaderBox').style.top='0px';
    $('shaderBox').style.left='0px';
    $('shaderBox').style.height=parseInt(document.body.offsetHeight) + 'px';
    $('shaderBox').style.width=parseInt(document.body.offsetWidth) + 'px';
    $('shaderBox').set('tween',{duration:'long'}).fade('hide');
    
    $('shaderBox').set('tween',{
        duration:'long',
        onComplete:function()
        {
            // remove item from basket (syncronous)
            var RequestToBasket=new Request.HTML(
            {
                url:'/EditCart.aspx',
                async:false,
                onSuccess:function(tr,elm,html,js)
                {
                    window.location.href='ShoppingCart.aspx';
                    /*
                    $('shaderMessage').innerHTML='Your product has been removed from your shopping basket';
                    $('shaderBox').set('tween',{
                        duration:'long',
                        onComplete:function()
                        {
                            $('shaderMessage').innerHTML='Please wait...';
                            $('shaderBox').style.visibility='hidden';
                            $('shaderBox').style.top='0px';
                            $('shaderBox').style.left='0px';
                            $('shaderBox').style.width='1px';
                            $('shaderBox').style.height='1px';
                            window.location.href='ShoppingCart.aspx';
                        }
                    }).fade(0);
                    */
                },
                onFailure:function(xhr) {
                    if(xhr.status==399) {
                        switch(xhr.getResponseHeader("Location")) {
                            case "Error.aspx?type=GeneralError":
                                $('shaderMessage').innerHTML=i18n_add_basket_generic_error;
                                break;
                        }

                        $('shaderBox').set('tween',{
                            duration:'long',
                            onComplete:function() {
                                $('shaderMessage').innerHTML=i18n_wait_message;
                                $('shaderBox').style.visibility='hidden';
                                $('shaderBox').style.top='0px';
                                $('shaderBox').style.left='0px';
                                $('shaderBox').style.width='1px';
                                $('shaderBox').style.height='1px';
                                window.location.href='ShoppingCart.aspx';
                            }
                        }).fade(0);
                    }
                }
            }).get({'catalog':'A','action':'remove','offerId':offerId});
        }
    }).fade(0.8);
}
// ##################### OFFER HELPER ###################
