
function getUrlVars(){var vars=[],hash;var hashes=window.location.href.slice(window.location.href.indexOf('?')+1).split('&');for(var i=0;i<hashes.length;i++)
{hash=hashes[i].split('=');vars.push(hash[0]);vars[hash[0]]=hash[1];}
return vars;}
function preLoadImages(){var cache=[];var args_len=arguments.length;for(var i=args_len;i--;){var cacheImage=document.createElement('img');cacheImage.src=arguments[i];cache.push(cacheImage);}}
function glowOn(name){$j(name).addClass('glow');}
function glowOff(name){$j(name).removeClass('glow');}
function getViewportDimensions(){var intH=0,intW=0;if(self.innerHeight){intH=window.innerHeight;intW=window.innerWidth;}
else{if(document.documentElement&&document.documentElement.clientHeight){intH=document.documentElement.clientHeight;intW=document.documentElement.clientWidth;}
else{if(document.body){intH=document.body.clientHeight;intW=document.body.clientWidth;}}}
return{height:parseInt(intH,10),width:parseInt(intW,10)};}
function getScrollXY(){var scrOfX=0,scrOfY=0;if(typeof(window.pageYOffset)=='number'){scrOfY=window.pageYOffset;scrOfX=window.pageXOffset;}else if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){scrOfY=document.body.scrollTop;scrOfX=document.body.scrollLeft;}else if(document.documentElement&&(document.documentElement.scrollLeft||document.documentElement.scrollTop)){scrOfY=document.documentElement.scrollTop;scrOfX=document.documentElement.scrollLeft;}
return[scrOfX,scrOfY];}
function centerElement(elem){var viewport=getViewportDimensions();var top=(viewport.height===0)?50:parseInt((viewport.height-elem.offsetHeight)/2,10);var scrolls=getScrollXY();top+=scrolls[1];elem.style.top=top+'px';viewport=top=elem=scrolls=null;}
function centerElementByMargin(elem){var viewport=getViewportDimensions();var top=(viewport.height===0)?50:parseInt((viewport.height-elem.offsetHeight)/2,10);var scrolls=getScrollXY();top+=scrolls[1];elem.style.marginTop=top-40+'px';viewport=top=elem=scrolls=null;}
function setToScreenHeight(elem){var h=$j(document).height();$j(elem).css('height',h);}
function clearForm(form){$j(form).find(':input').each(function(){switch(this.type){case'password':case'select-multiple':case'select-one':case'text':case'textarea':$j(this).val('');break;case'checkbox':case'radio':this.checked=false;}});$j(form).find(".feedback").each(function(){$j(this).html("");});}
function loading(element,text){$j(element).html("<img src='/media/images/loading.gif' /> "+text);}
function replaceWithLoading(destination,text){destination.empty();var o=jQuery("<div id='loadingDiv'><img src='/media/images/loading.gif'/>"+text+"</div>");o.appendTo(destination);}
function showMessageBox(title,message){setToScreenHeight("#tf_screen");$j("#tf_screen").show();$j("#messageBoxTitle").html(title);$j("#messageBoxMessage").html(message);$j("#messageBox").show();centerElement(document.getElementById("messageBox"));}
function cancelMessageBox(){$j("#tf_screen").hide();$j("#messageBox").hide();}
function ajaxForm(base,url,progress,callback){var result=base+"-result";var save=base+"-save";var form=base+"-form";var allowSave=$j(save).html();$j(result).html("");loading(save,progress);$j.ajax({type:"POST",dataType:"json",url:url,data:$j(form).serialize(),success:function(r){if(r.result===undefined){$j(save).html(allowSave);showMessageBox("An error occurred",r.error);}
else{$j(save).html(allowSave);callback(r);}},error:function(request,error){$j(save).html(allowSave);$j(result).html("<span class='failure'>Couldn't contact server</div>");}});}
function ajaxFormHtml(base,url,progress,callback){var result=base+"-result";var save=base+"-save";var form=base+"-form";var allowSave=$j(save).html();$j(result).html("");loading(save,progress);$j.ajax({type:"POST",url:url,data:$j(form).serialize(),success:function(r){$j(save).html(allowSave);callback(r);},error:function(request,error){$j(save).html(allowSave);$j(result).html("<span class='failure'>Couldn't contact server</div>");}});}
var $loginToggled=false;function toggleLogin(){if($loginToggled===false){$j("#login").show();$j("#login-menu").removeClass().addClass("login-toggled");$j("#toplevel-right").removeClass().addClass("toplevel-right-toggled");$j("#hax").show();$j("#login-expander").html("<img src='/media/images/button_collapse.gif");$loginToggled=true;}
else{$j("#login").hide();$j("#login-menu").removeClass().addClass("login");$j("#toplevel-right").removeClass().addClass("toplevel-right-normal");$j("#login-expander").html("<img src='/media/images/button_expand.gif");$j("#hax").hide();$loginToggled=false;}}
function fullPageLogin(insidePortal){$j("#fp-login-result").html("<img src='/media/images/loading.gif' /> Logging in");var username=$j("#fp-username").val();var password=$j("#fp-password").val();var remember=$j("#fp-remember").val();$j.ajax({type:"POST",dataType:"json",url:"https://www.telfree.com/portal/login",data:$j("#fp-login-form").serialize(),success:function(r){if(r.result=='success'){if(insidePortal){$j.address.value("/");}
else{if(r.redirect!==undefined){window.opener.location=r.redirect;window.close();}
else{login(username,password,remember,function(result){window.location.href="https://www.telfree.com/s/";});}}}
else if(r.result=='failure'){$j("#fp-login-result").html("<div class='loginFailure'>Incorrect username or password</div>");}
else{$j("#fp-login-result").html("<div class='loginFailure'>An error occurred</div>");}},error:function(request,error){$j("#fp-login-result").html("<div class='loginFailure'>Couldn't contact server</div>");}});return false;}
function doLogout(){logout(function(){window.location.href="/__logout__";});}
function loginCallback(r){}
function doLogin(insidePortal){$j("#login-result").html("<img src='/media/images/loading.gif' /> Logging in");var username=$j("#username").val();var password=$j("#password").val();var remember=$j("#remember").val();if(username.match("^087")){username=username.substr(1,username.length-1);}
$j.ajax({dataType:"jsonp",url:"https://www.telfree.com/portal/login",data:$j("#login-form").serialize()+"&callback=loginCallback",success:function(r){if(r.result=='success'){if(insidePortal){$j.address.value("/");}
else{if(r.redirect!==undefined){window.location.href=r.redirect;}
else{login(username,password,remember,function(result){window.location.href="https://www.telfree.com/s/";});}}}
else if(r.result=='failure'){$j("#login-result").html("<div class='loginFailure'>Incorrect username or password</div>");}
else{$j("#login-result").html("<div class='loginFailure'>An error occurred</div>");}},error:function(request,error){$j("#login-result").html("<div class='loginFailure'>Couldn't contact server</div>");}});return false;}
function searchClicked(){if($j("#support-search").val()=="ask a question or enter a keyword"){$j("#support-search").val("");}}
function doSearch(){var query=escape($j("#support-search").val());window.location.href="http://www.getsatisfaction.com/telfree/searches?stype=topics&query="+query;}
$j(document).ready(function(){preLoadImages("/media/images/menu_bg_active.gif","/media/images/menu_bg.gif","/media/images/menu_left_active.gif","/media/images/menu_right_active.gif");try{var currency=$j("#geoip-currency").html();var images=[{url:"/media/images/banner_main.jpg"},{url:"/media/images/banner_talk_usd.jpg"},{url:"/media/images/banner_chat.jpg"},{url:"/media/images/banner_email.jpg"},{url:"/media/images/banner_sms_usd.jpg"},{url:"/media/images/banner_web.jpg"}];if(currency=="ZAR"){images=[{url:"/media/images/banner_main.jpg"},{url:"/media/images/banner_talk_zar.jpg"},{url:"/media/images/banner_chat.jpg"},{url:"/media/images/banner_email.jpg"},{url:"/media/images/banner_sms_zar.jpg"},{url:"/media/images/banner_web.jpg"}];}
else if(currency=="EUR"){images=[{url:"/media/images/banner_main.jpg"},{url:"/media/images/banner_talk.jpg"},{url:"/media/images/banner_chat.jpg"},{url:"/media/images/banner_email.jpg"},{url:"/media/images/banner_sms.jpg"},{url:"/media/images/banner_web.jpg"}];}
$j("#more-info").hide();$j("#banner").showcase({css:{width:"968px",height:"349px"},animation:{type:"fade",interval:5000},titleBar:{enabled:false},images:images,linksOn:"titles",callback:function(id){try{if(id===0){$j("#get-started").attr("id","get-started-big");$j("#more-info").hide();}
else{var links=["#","/products/talk","/products/chat","/products/push-email","/products/sms","/products/mobile-web"];$j("#more-info-link").attr("href",links[id]);$j("#get-started-big").attr("id","get-started");$j("#more-info").show();}}
catch(e){}},navigator:{position:"bottom-right",orientation:"horizontal",showNumber:true,item:{css:{width:"22px",height:"22px",backgroundColor:"white",borderColor:"#cccccc",color:"black","-moz-border-radius":"5px","line-height":"22px"},cssSelected:{backgroundColor:"#029ED1",color:"white",borderColor:"white"}}}});}
catch(err){}
try{$j.datepicker.setDefaults({dateFormat:"yy-mm-dd"});}
catch(e){}});function contactMe(){if(!$j("#contact-me-form").valid()){$j("#contact-me-result").html();return false;}
else{$j("#contact-me-result").html("");}
ajaxForm("#contact-me","/portal/util/contactMe","Sending message",function(r){clearForm("#contact-me-form");showMessageBox("Message sent","Thank you for contacting Telfree");});return false;}
function sendDownloadSms(){ajaxForm("#download","/portal/util/downloadSms","Sending download message",function(r){$j("#download-save").html("");$j("#download-result").html("Download message sent");});return false;}
function changePurchaseAmount(){var option=$j("#credit-options input:radio:checked").val();if(option=="100ZAR"){$j("#purchaseAmount").val("10");$j("#eft-amount").val("100");}
else if(option=="200ZAR"){$j("#purchaseAmount").val("20");$j("#eft-amount").val("200");}
else if(option=="10EUR"){$j("#purchaseAmount").val("10");$j("#eft-amount").val("10");}
else if(option=="20EUR"){$j("#purchaseAmount").val("20");$j("#eft-amount").val("20");}
else if(option=="15USD"){$j("#purchaseAmount").val("15");$j("#eft-amount").val("15");}
else if(option=="30USD"){$j("#purchaseAmount").val("30");$j("#eft-amount").val("30");}
else{alert("Invalid credit option: "+option);}}
function selectTen(){$j("#ten").attr("checked","checked");changePurchaseAmount();}
function selectTwenty(){$j("#twenty").attr("checked","checked");changePurchaseAmount();}
function doPurchase(){$j("#purchase-result").html("");$j("#purchase-submit").removeClass("cancel");var terms=$j("#terms").is(":checked");if(terms===false){$j("#purchase-result").html("Please accept terms and conditions");return false;}
var paymentType=$j("#purchase-method input:radio:checked").val();if(paymentType=="paypal"){$j("#purchase-form").attr("action","https://www.paypal.com/cgi-bin/webscr");return true;}
else if(paymentType=="ukash"){if(!$j("#purchase-form").valid()){$j("#purchase-result").html();$j("#purchase-submit").addClass("cancel");return false;}
ajaxForm("#purchase","/portal/util/ukashPayment","Processing payment",function(r){if(r.newVoucher!==undefined){var url="/ukash?newVoucher="+r.newVoucher+"&newBalance="+r.newBalance+"&newCurrency="+r.newCurrency+"&newExpires="+r.newExpires;$j.address.value(url);}
else{$j.address.value("/ukash");}});}
else if(paymentType=="eft"){var reference=$j("#eft-reference").val();var amount=$j("#eft-amount").val();$j.address.value("/eft?reference="+reference+"&amount="+amount);}
else if(paymentType=="balance"){ajaxForm("#purchase","/portal/util/balancePayment","Processing payment",function(r){if(r.result!=="success"){$j.address.value("/balancePayment?error="+r.error);}
else{$j.address.value("/balancePayment");}});}
return false;}
function countrySelected(list,prefix){$j(prefix).val("+"+$j(list).val());}
function codeChanged(list,prefix){prefix=$j(prefix).val();if(prefix.substr(0,1)=="+"){prefix=prefix.substr(1,prefix.length-1);}
$j(list+" option[value='"+prefix+"']").attr("selected","true");}
function createAccount(){if(!$j("#create-form").valid()){$j("#create-result").html();return false;}
else{$j("#create-result").html("");}
ajaxForm("#create","/portal/util/createAccount","Creating account",function(r){window.location.href="/account-created";});return false;}
function sendContact(){if(!$j("#contact-form").valid()){$j("#contact-result").html();return false;}
else{$j("#contact-result").html("");}
ajaxForm("#contact","/portal/util/sendMessage","Sending message",function(r){clearForm("#contact-form");showMessageBox("Message sent","Thank you for contacting Telfree");});return false;}
function saveProfile(){if(!$j("#profile-form").valid()){$j("#profile-result").html();return false;}
else{$j("#profile-result").html("");}
ajaxForm("#profile","/portal/myaccount/profile/save","Saving",function(r){$j("#profile-result").html("Profile saved");$j("#profile-save").html("<input id='profile-submit' type='submit' class='btn' value='Save' />");});return false;}
function changePassword(){ajaxForm("#change-password","/portal/myaccount/profile/changePassword","Changing password",function(r){$j("#change-password-result").html("Password updated");$j("#change-password-save").html("<input id='change-password-submit' type='submit' class='btn' value='Apply' />");});return false;}
function setPassword(){if(!$j("#set-password-form").valid()){$j("#set-password-result").html();return false;}
else{$j("#set-password-result").html("");}
ajaxForm("#set-password","/portal/util/setPassword","Changing password",function(r){window.location.href="/password-reset";});return false;}
function resetPassword(){if(!$j("#reset-form").valid()){$j("#reset-result").html();return false;}
else{$j("#reset-result").html("");}
ajaxForm("#reset","/portal/util/resetPassword","Resetting password",function(r){clearForm("#reset-form");showMessageBox("Password reset",r.result);});return false;}
var $oldTab="#tab-dashboard";function isInternationalNumber(num){if(num.indexOf("0")===0){return false;}
if(num.match(/^\+?\d+$/)){return true;}
return false;}
function isAlphaNumeric(password){var numeric=false;var alpha=false;if(password.match(/\d/)){numeric=true;}
if(password.match(/[a-zA-z]/)){alpha=true;}
if(alpha&&numeric){return true;}
return false;}
jQuery.validator.addMethod("international",isInternationalNumber,"Number must be in international format");jQuery.validator.addMethod("alphanumeric",isAlphaNumeric,"Must contain both numbers and letters");function loadPurchase(){$j("#purchase-form").validate({rules:{voucherNumber:{minlength:8,digits:true,required:true},voucherAmount:{minlength:2,required:true}},errorPlacement:function(error,element){element.parent().find(".feedback").html(error);},success:function(label){label.html("<img src='/media/images/tick.gif' alt='Tick' />");},onsubmit:false});}
function loadReset(){$j("#reset-form").validate({rules:{username:{minlength:3},email:{email:true},mobileNumber:{minlength:7,maxlength:12,digits:true}},errorPlacement:function(error,element){element.next().html(error);},success:function(label){label.html("<img src='/media/images/tick.gif' alt='Tick' />");}});}
function loadSetPassword(){$j("#set-password-form").validate({rules:{newPassword:{required:true,minlength:6,maxlength:20,alphanumeric:true},confirmPassword:{equalTo:"#setNewPassword"}},errorPlacement:function(error,element){element.next().html(error);},success:function(label){label.html("<img src='/media/images/tick.gif' alt='Tick' />");}});}
function loadContact(){$j("#contact-form").validate({rules:{name:{required:true,minlength:3},email:{required:true,email:true},subject:{required:true}},errorPlacement:function(error,element){element.next().html(error);},success:function(label){label.html("<img src='/media/images/tick.gif' alt='Tick' />");}});}
function loadContactMe(){$j("#contact-me-form").validate({rules:{name:{required:true,minlength:3},email:{required:true,email:true}},errorPlacement:function(error,element){element.next().html(error);},success:function(label){label.html("<img src='/media/images/tick.gif' alt='Tick' />");}});}
function loadCountries(destination){$j.post("/portal/util/countries",{},function(result){for(var i=0;i<result.length;i++){var val=result[i][0];var name=result[i][1];var o=jQuery("<option value='"+val+"'>"+name+"</option>");o.appendTo(destination);}},"json");}
function selectPackage(packages){var vars=getUrlVars();if("package"in vars){try{$j(packages+" option:selected").removeAttr('selected');$j(packages+" option[value="+vars.package+"]").attr("selected","selected");}
catch(e){}}}
function loadCreate(){$j("#create-form").validate({rules:{username:{required:true,minlength:3,remote:"/portal/util/checkUsername"},email:{required:true,email:true},mobileNumber:{required:true,minlength:6,maxlength:17,international:true},country:{required:true},password:{required:true,minlength:6,maxlength:20,alphanumeric:true},confirmPassword:{equalTo:"#createPassword"},terms:{required:true}},messages:{username:{remote:jQuery.format("Username is already in use")}},errorPlacement:function(error,element){element.parent().find(".feedback").html(error);},success:function(label){label.html("<img class='center-image' src='/media/images/tick.gif' alt='Tick' />");}});loadCountries($j("#country"));selectPackage("#package");}
function addPagination(destination,make,name,length,pageString,pagesString){var divString="<div>";if(pagesString!="1"){var page=parseInt(pageString,10);var pages=parseInt(pagesString,10);if(page!=pages){divString+="<div><div class='expandRight' onclick='loadDevicesStringDes(\"#deviceslist\",\""+make+"\",\""+name+"\",\""+(page+1)+"\",\""+length+"\");'></div></div>";}
divString+="<div class='float-right'>Page "+page+" of "+pages+"</div>";if(page!=1){divString+="<div><div class='expandLeft' onclick='loadDevicesStringDes(\"#deviceslist\",\""+make+"\",\""+name+"\",\""+(page-1)+"\",\""+length+"\");'></div></div>";}
divString+="</div>";var o=jQuery(divString);o.appendTo(destination);}}
function loadDevices(destination,make,name,page,length){$j.post("/portal/util/listPhones?make="+make+"&name="+name+"&page="+page+"&length="+length,{},function(result){var devices=result.devices;destination.empty();var o="";if(name!==""){o=jQuery("<div class='titleText'>Search Results : "+name+"</div>");o.appendTo(destination);}
else if(make!==""){o=jQuery("<div class='titleText'>"+make+" Devices</div>");o.appendTo(destination);}else{o=jQuery("<div class='titleText'>All Devices</div>");o.appendTo(destination);}
if(devices.length>0){addPagination(destination,make,name,length,result.page,result.pages);}
var p=jQuery("<div class='clear'/>");p.appendTo(destination);for(var i=0;i<devices.length;i++){var val=devices[i];o=jQuery("<div class='compdev'><div class='phoneimage'><img src='"+val.imageurl+"' title=''/></div><div class='phonename'>"+val.name+"</div></div>");o.appendTo(destination);}
if(devices.length===0){o=jQuery("<div id='loadingDiv'>No devices found</div>");o.appendTo(destination);}},"json");}
function loadDevicesStringDes(destination,make,name,page,length){replaceWithLoading($j(destination),"Loading devices");loadDevices($j(destination),make,name,page,length);}
function loadDeviceMakers(destination){$j.post("/portal/util/listPhoneMakers",{},function(result){destination.empty();var p=jQuery("<option value=''>All Devices</option>");p.appendTo(destination);for(var i=0;i<result.length;i++){var val=result[i];var o=jQuery("<option value='"+val+"'>"+val+"</option>");o.appendTo(destination);}},"json");}
function updateDeviceBrand(){var selectedBrand=$j("#makers option:selected").val();$j("#phonesearch").attr("value","");if(selectedBrand!==""){replaceWithLoading($j('#deviceslist'),"Loading all compatible "+selectedBrand+"devices");}
else{replaceWithLoading($j('#deviceslist'),"Loading all compatible devices");}
loadDevices($j('#deviceslist'),selectedBrand,"",1,32);}
function updateDeviceSearch(){var searchString=$j("#phonesearch:value").val();$j("#phonesearch").attr("value","");if(searchString!==""){replaceWithLoading($j('#deviceslist'),"Searching for all compatible devices like "+searchString);}
else{replaceWithLoading($j('#deviceslist'),"Loading all compatible devices");}
loadDevices($j('#deviceslist'),"",searchString,1,32);}
function loadPhonelist(){loadDeviceMakers($j("#makers"));replaceWithLoading($j('#deviceslist'),"Loading all compatible devices");loadDevices($j('#deviceslist'),"","",1,32);}
function loadProfile(){$j("#dob").mask("99/99/9999");$j("#profile-form").validate({rules:{country:"required",mobileNumber:{required:true,minlength:6,maxlength:17,international:true},email:{required:true,email:true}},errorPlacement:function(error,element){element.next().html(error);},success:function(label){label.html("<img src='/media/images/tick.gif' alt='Tick' />");}});$j("#change-password-form").validate({rules:{oldPassword:{required:true,minlength:6,maxlength:20,alphanumeric:true},newPassword:{required:true,minlength:6,maxlength:20,alphanumeric:true},confirmPassword:{equalTo:"#newPassword"}},errorPlacement:function(error,element){element.next().html(error);},success:function(label){label.html("<img src='/media/images/tick.gif' alt='Tick' />");}});}
jQuery.fn.ajaxTable=function(o){var cfg={height:400,url:"remote",type:"POST",totalPages:1,params:{page:1,start:null,end:null}};jQuery.extend(cfg,o);var t=this;var h=this;var b=this;var f=this;var rblock=this;h=t.find("thead");b=t.find("tbody");f=t.find("tfoot");rblock=t.parent().find(".rangeBlock");rblock.detach();t.wrapAll("<div class='datagridWrapper' />");t.wrapAll("<div class='datagrid' />");h.unwrap();h.wrapAll("<table />");b.wrapAll("<div class='gridBody' style='height: "+cfg.height+"px' />");b.wrapAll("<table />");f.wrapAll("<table />");var g=h.parent().parent().parent();t=h.parent().parent();rblock.prependTo(g);var loading=jQuery("<div class='grid-loading'><div>&nbsp;</div></div>").prependTo(t).hide();function showLoading(){loading.width(t.width());loading.height(t.height());loading.show();}
function hideLoading(){loading.hide();}
function loadData(){showLoading();jQuery.ajax({type:cfg.type,url:cfg.url,data:cfg.params,success:function(result){var n=jQuery(result);var newBody=n.find("tbody");b.replaceWith(newBody);b=newBody;var newFoot=n.find("tfoot");f.replaceWith(newFoot);f=newFoot;var tp=jQuery(".totalPages");if(tp!==undefined){cfg.totalPages=parseInt(tp.text(),10);}
attachFooter();},error:function(){alert("error loading data");},complete:function(){hideLoading();}});}
function attachFooter(){g.find(".first").unbind("click");g.find(".prev").unbind("click");g.find(".next").unbind("click");g.find(".last").unbind("click");g.find(".applyRange").unbind("click");g.find(".first").click(function(){if(cfg.params.page!=1){cfg.params.page=1;loadData();}});g.find(".prev").click(function(){cfg.params.page=cfg.params.page-1;if(cfg.params.page<1){cfg.params.page=1;}
loadData();});g.find(".next").click(function(){cfg.params.page=cfg.params.page+1;if(cfg.params.page>cfg.totalPages){cfg.params.page=cfg.totalPages;}
loadData();});g.find(".last").click(function(){if(cfg.params.page!=cfg.totalPages){cfg.params.page=cfg.totalPages;loadData();}});g.find(".datePicker").datepicker();g.find(".applyRange").click(function(){var start=g.find("input[name=start]");var end=g.find("input[name=end]");cfg.params.start=start.val();cfg.params.end=end.val();loadData();});var attached=true;}
this.setDataSource=function(url){cfg.url=url;};this.setParams=function(p){jQuery.extend(cfg.params,p);};this.refresh=function(){loadData();};loadData();return this;};var $billingType="calls";var $billingTable=null;function loadBilling(){$billingTable=$j("#call-records").ajaxTable({url:"/portal/myaccount/billing/cdrs"});}
function toggleCallBilling(){$billingTable.setDataSource("/portal/myaccount/billing/cdrs");if($billingType=="sms"){$billingType="calls";$billingTable.refresh();}}
function toggleSmsBilling(){$billingTable.setDataSource("/portal/myaccount/billing/smses");if($billingType=="calls"){$billingType="sms";$billingTable.refresh();}}
function toggleExpander(element){var p=element.parentNode;var content=jQuery(p).find(".content");var bottom=jQuery(p).find(".bottom");var e=jQuery(element);if(content.hasClass("hidden")){content.removeClass("hidden");bottom.removeClass("hidden");e.removeClass("expand");e.addClass("collapse");}
else{content.addClass("hidden");bottom.addClass("hidden");e.removeClass("collapse");e.addClass("expand");}}
function showRate(letter,hide){$j("#"+hide).addClass("hidden");$j("#"+letter).removeClass("hidden");}
function changePurchaseType(){var selected=$j("#purchase-method input:radio:checked").val();$j("#ukash").hide();if(selected=="ukash"){$j("#ukash").show();}}
var participants=[];var conferenceId=0;var conferenceState="";function generateConferenceButton(type,destination,enabled){if(type=="hangup"){if(enabled){return'<a class="btn fixed-btn" href="#" onclick="hangupChannel(\''+destination+'\'); return false;"><img class="top-image" src="/media/images/icon_hangup.png" /> hangup</a>';}
else{return'<a class="btn fixed-btn btn-disabled" href="#" onclick="return false;"><img class="top-image" src="/media/images/icon_hangup_disabled.png" /> hangup</a>';}}
else if(type=="redial"){if(enabled){return'<a class="btn fixed-btn" href="#" onclick="redialChannel(\''+destination+'\'); return false;"><img class="top-image" src="/media/images/icon_redial.png" /> redial</a>';}
else{return'<a class="btn fixed-btn btn-disabled" href="#" onclick="return false;"><img class="top-image" src="/media/images/icon_redial_disabled.png" /> redial</a>';}}
else if(type=="mute"){if(enabled){return'<a class="btn fixed-btn" href="#" onclick="muteConference(); return false;"><img class="top-image" src="/media/images/icon_mute.png" /> mute</a>';}
else{return'<a class="btn fixed-btn btn-disabled" href="#" onclick="return false;"><img class="top-image" src="/media/images/icon_mute_disabled.png" /> mute</a>';}}
else if(type=="unmute"){if(enabled){return'<a class="btn fixed-btn" href="#" onclick="unmuteConference(); return false;"><img class="top-image" src="/media/images/icon_unmute.png" /> unmute</a>';}
else{return'<a class="btn fixed-btn btn-disabled" href="#" onclick="return false;"><img class="top-image" src="/media/images/icon_unmute_disabled.png" /> unmute</a>';}}
else if(type=="end"){if(enabled){return'<a class="btn fixed-btn" href="#" onclick="endConference(); return false;"><img class="top-image" src="/media/images/icon_hangup.png" /> end call</a>';}
else{return'<a class="btn fixed-btn btn-disabled" href="#" onclick="return false;"><img class="top-image" src="/media/images/icon_hangup_disabled.png" /> end call</a>';}}
else if(type=="retry"){if(enabled){return'<a class="btn fixed-btn" href="#" onclick="retryConference(); return false;"><img class="top-image" src="/media/images/icon_redial.png" /> retry</a>';}
else{return'<a class="btn fixed-btn btn-disabled" href="#" onclick="return false;"><img class="top-image" src="/media/images/icon_redial_disabled.png" /> retry</a>';}}
else if(type=="add"){if(enabled){return'<a class="btn" href="#" onclick="addToConference(); return false;"><img class="top-image" src="/media/images/icon_add.png" /> add participant</a>';}
else{return'<a class="btn btn-disabled" href="#" onclick="return false;"><img class="top-image" src="/media/images/icon_add_disabled.png" /> add participant</a>';}}
else if(type=="remove"){return'<a class="btn" href="#" onclick="removeParticipant(\''+destination+'\'); return false;"><img class="top-image" src="/media/images/icon_remove.png" /> remove</a>';}
else if(type=="start"){if(enabled){return'<a class="btn" onclick="startConference(); return false;"><img class="top-image" src="/media/images/icon_dial.png" alt="dial" /> Start conference</a>';}
else{return'<a class="btn btn-disabled" onclick="startConference(); return false;"><img class="top-image" src="/media/images/icon_dial_disabled.png" alt="dial" /> Start conference</a>';}}}
function clearParticipantAdd(){$j('#conf-country-prefix').val("+");$j('#conf-phone-number').val("");$j('#conf-username').val("");$j('#conf-country-select option[value=""]').attr("selected","true");}
function loadConference(){participants=[];}
function conferenceError(table,error,colspan){var row='<tr><th colspan="'+colspan+'" class="error">'+error+'</th></tr>';$j(table+" > thead").find(".error").remove();$j(table+" > thead:last").append(row);}
function conferenceNetworkError(){conferenceError("#conference-status-table","Unable to establish a connection",5);}
function clearConferenceError(table){$j(table+" > thead").find(".error").remove();}
function addParticipantToTable(participant){var row='<tr id="conf-participant-'+participant.destination+'">';row+='<td width="25px"><img width="25px" height="25px" src="http://aws.secureservices.mobi/avatard?username='+participant.destination+'"></td>';row+='<td>'+participant.display+'</td>';row+='<td class="right-align">'+generateConferenceButton('remove',participant.destination)+'</td>';$j("#participants-table > tbody:last").append(row);}
function generateParticipant(prefix,phone,username,table){var countryPrefix=$j(prefix).val();var phoneNumber=$j(phone).val();username=$j(username).val();var participant;var i=0;if(countryPrefix=="+"){countryPrefix="";}
if(username!==""){participant={"display":username,"destination":username,"id":participants.length};}
else if(countryPrefix!==""&&phoneNumber!==""){var raw=countryPrefix+phoneNumber;var destination="";var allowedChars="1234567890";for(i=0;i<raw.length;i++){if(allowedChars.indexOf(raw.charAt(i))>=0){destination+=raw.charAt(i);}}
participant={"display":"+"+destination,"destination":destination,"id":participants.length};}
else{conferenceError(table,"Please enter either a prefix and telephone number or a username",1);return null;}
for(i=0;i<participants.length;i++){if(participants[i]!==undefined&&participants[i].destination==participant.destination){conferenceError(table,"This person is already in the conference",1);}}
clearConferenceError(table);return participant;}
function addParticipant(){var participant=generateParticipant("#conf-country-prefix","#conf-phone-number","#conf-username","#conf-add-participant-table");if(participant===null){return;}
if(participants.length===0){$j(".start-conference").each(function(index,element){$j(element).html(generateConferenceButton("start",null,true));});}
clearParticipantAdd();participants.push(participant);addParticipantToTable(participant);}
function clearConference(){for(var i=0;i<participants.length;i++){if(participants[i]!==undefined){$j("#conf-participant-"+participants[i].destination).remove();}}
participants=[];$j(".start-conference").each(function(index,element){$j(element).html(generateConferenceButton("start",null,false));});}
function removeParticipant(destination){var row=$j("#conf-participant-"+destination);row.remove();for(var i=0;i<participants.length;i++){if(participants[i]!==undefined&&participants[i].destination==destination){participants.splice(i,1);if(participants.length===0){$j(".start-conference").each(function(index,element){$j(element).html(generateConferenceButton("start",null,false));});}
return;}}}
function addHostStatus(destination){var row='<tr class="odd">';row+='<td class="bottom-border"><img width="40px" height=40px" src="/media/images/avatar.png" /></td>';row+='<td class="bottom-border">'+destination+' (Host)</td>';row+='<td class="bottom-border"><img id="conference-host-image" src="/media/images/state_dialing.png" alt="ringing" /></td>';row+='<td id="conference-host-state" class="bottom-border">dialing</td>';row+='<td class="bottom-border right-align" width="220px"><span id="conference-host-mute">'+generateConferenceButton("mute",null,false)+'</span> <span id="conference-host-end">'+generateConferenceButton("end",null,false)+'</span></td>';row+='</tr>';$j("#conference-status-body").html(row);}
function addParticipantStatus(participant){var row='<tr class="" id="conference-participant-'+participant.destination+'">';row+='<td><img width="30px" height="30px" src="/media/images/avatar.png" /></td>';row+='<td>'+participant.display+'</td>';row+='<td><img class="conference-state-image" width="30px" height="33px" class="center-image" src="/media/images/state_waiting.png" /></td>';row+='<td class="conference-state">waiting</td>';row+='<td class="right-align conference-actions">'+generateConferenceButton("hangup",participant.destination,false)+'</td>';row+='</tr>';$j("#conference-status-table > tbody:last").append(row);}
var errors=0;function getStateImage(state){if(state=="waiting"){return"/media/images/state_waiting.png";}
else if(state=="dialing"){return"/media/images/state_dialing.png";}
else if(state=="ringing"){return"/media/images/state_ringing.png";}
else if(state=="answered"){return"/media/images/state_answered.png";}
return"/media/images/state_ended.png";}
function setStateImage(element,state){element.attr("src",getStateImage(state));}
function updateChannelState(destination,state,reason){var row=$j("#conference-participant-"+destination);var msg=state;if(reason){msg+=" - "+reason;}
row.find(".conference-state").html(msg);setStateImage(row.find(".conference-state-image"),state);if(state=="ended"||state=="finished"){var enabled=conferenceState!="finished";row.find(".conference-actions").html(generateConferenceButton("redial",destination,enabled));}
else if(state=="ringing"){row.find(".conference-actions").html(generateConferenceButton("hangup",destination,true));}
else if(state=="answered"){row.find(".conference-actions").html(generateConferenceButton("hangup",destination,true));}}
function updateHostState(state,reason){conferenceState=state;if(reason){$j("#conference-host-state").html(state+" - "+reason);}
else{$j("#conference-host-state").html(state);}
setStateImage($j("#conference-host-image"),state);if(state=="ended"||state=="failed"){$j("#conference-host-end").html(generateConferenceButton("retry",null,true));$j("#conference-host-mute").html(generateConferenceButton("mute",null,false));$j("#conference-add").html(generateConferenceButton("add",null,false));}
else if(state=="ringing"){$j("#conference-host-end").html(generateConferenceButton("end",null,true));$j("#conference-add").html(generateConferenceButton("add",null,true));}
else if(state=="answered"){$j("#conference-host-mute").html(generateConferenceButton("mute",null,true));$j("#conference-host-end").html(generateConferenceButton("end",null,true));$j("#conference-add").html(generateConferenceButton("add",null,true));}}
function conferenceFinished(){$j("#conference-host-end").html(generateConferenceButton("retry",null,false));$j("#conference-host-mute").html(generateConferenceButton("mute",null,false));$j("#conference-add").html(generateConferenceButton("add",null,false));for(var i=0;i<participants.length;i++){updateChannelState(participants[i].destination,"finished");}}
function createNewConference(){if(conferenceState!="finished"&&conferenceState!="ended"&&conferenceState!="failed"){conferenceError("#conference-status-table","You are already in a conference");return;}
$j("#conf-create").removeClass("hidden");$j("#conference").addClass("hidden");}
function conferencePoll(){$j.ajax({dataType:"json",url:"/portal/conference",data:"command=poll&uid="+conferenceId,success:function(r){errors=0;if(r.state){updateHostState(r.state,r.reason);}
if(r.channels){for(var channel in r.channels){updateChannelState(channel,r.channels[channel].state,r.channels[channel].reason);}}
if(r.state=="finished"){conferenceFinished();}
else{conferencePoll();}},error:function(request,error){conferenceError("#conference-status-table","Connection lost, retrying",5);errors+=1;if(errors>5){conferenceNetworkError();}
else{conferencePoll();}}});}
function showConferenceStatus(){addHostStatus($j("#conf-host-destination input:radio:checked").val());for(var i=0;i<participants.length;i++){addParticipantStatus(participants[i]);}
$j("#conf-create").addClass("hidden");$j("#conference").removeClass("hidden");}
function muteConference(){$j.ajax({dataType:"json",url:"/portal/conference",data:"command=muteConference&uid="+conferenceId,success:function(r){if(r.result){$j("#conference-host-mute").html(generateConferenceButton("unmute",null,true));}
else if(r.error){conferenceError("#conference-status-table",r.error,5);}},error:function(r){conferenceNetworkError();}});}
function unMuteConference(){$j.ajax({dataType:"json",url:"/portal/conference",data:"command=unMuteConference&uid="+conferenceId,success:function(r){if(r.result){$j("#conference-host-mute").html(generateConferenceButton("mute",null,true));}
else if(r.error){conferenceError("#conference-status-table",r.error,5);}},error:function(r){conferenceNetworkError();}});}
function endConference(){$j.ajax({dataType:"json",url:"/portal/conference",data:"command=endConference&uid="+conferenceId,success:function(r){if(r.error){conferenceError("#conference-status-table",r.error,5);}},error:function(r){conferenceNetworkError();}});}
function hangupChannel(destination){$j.ajax({dataType:"json",url:"/portal/conference",data:"command=disconnectFromConference&uid="+conferenceId+"&destination="+destination,success:function(r){if(r.error){conferenceError("#conference-status-table",r.error,5);}},error:function(r){conferenceNetworkError();}});}
function redialChannel(destination){$j.ajax({dataType:"json",url:"/portal/conference",data:"command=reconnectToConference&uid="+conferenceId+"&destination="+destination,success:function(r){if(r.error){conferenceError("#conference-status-table",r.error,5);}},error:function(r){conferenceNetworkError();}});}
function retryConference(destination){$j.ajax({dataType:"json",url:"/portal/conference",data:"command=retryConference&uid="+conferenceId,success:function(r){if(r.error){conferenceError("#conference-status-table",r.error,5);}},error:function(r){conferenceNetworkError();}});}
function addToConference(){var participant=generateParticipant("#conf-add-country-prefix","#conf-add-phone-number","#conf-add-username","#conf-add-to-conference-table");if(participant===null){return;}
participants.push(participant);addParticipantStatus(participants[participants.length-1]);$j('#conf-add-country-prefix').val("+");$j('#conf-add-phone-number').val("");$j('#conf-add-username').val("");$j('#conf-add-country-select option[value=""]').attr("selected","true");$j.ajax({dataType:"json",url:"/portal/conference",data:"command=addToConference&uid="+conferenceId+"&destination="+participant.destination,success:function(r){if(r.error){conferenceError("#conf-add-to-conference-table",r.error,1);}},error:function(r){conferenceError("#conf-add-to-conference-table","Unable to establish a connection",1);}});}
function loadExistingConference(state){var s=$j.parseJSON(state);conferenceId=s.id;addHostStatus(s.host);updateHostState(s.state,s.reason);var i=0;for(var channel in s.channels){i+=1;if(channel!=s.host){var participant={"destination":channel,"id":i};addParticipantStatus(participant);updateChannelState(channel,s.channels[channel].state);}}
conferencePoll();}
function startConference(){$j('#conf-host-other-radio').val($j('#conf-host-other').val());var hostDestination=$j('#conf-host-destination input:radio:checked').val();if(participants.length>0){var destinations=hostDestination;for(var i=0;i<participants.length;i++){destinations+=","+(participants[i].destination);}
$j('#conf-create').addClass('hidden');showConferenceStatus();$j.ajax({dataType:"json",url:"/portal/conference",data:"command=conference&destinations="+escape(destinations),success:function(r){if(r.result){conferenceId=r.id;conferencePoll();}
else if(r.error){conferenceError("#conference-status-table",r.error,5);}},error:function(request,error){conferenceNetworkError();}});}
else{conferenceError("#conf-add-participant-table","You must have at least two people in your conference",1);}}
function loadTab(name){if(name=="profile"){loadProfile();}
else if(name=="credit"){loadPurchase();}
else if(name=="billing"){loadBilling();}
else if(name=="buypackage"){loadPurchase();}
else if(name=="conference"){loadConference();}}
