﻿/* 
MTN 2006-2012
MAIN FRONTEND JS LIBRARY
(c) Sistrum d.o.o.
*/



// { name:value, name2:value, name3:value }
// function onsuccess(data, textStatus, oXMLHttpRequest) { }
// function onerror(oXMLHttpRequest, textStatus, errorThrown) { }
// xml, html, script, json, text
function MakeAjaxCall(type, data2send, onsuccess, onerror, datatype)
{
    if (!jQuery) return;

    var url = "Service/AjaxDataService.aspx?type=" + type;
    
    jQuery.ajax({
        type: "POST"
      , url: url
      , data: postdata ? postdata : null
      , success: onsuccess
      , error: onerror
      , dataType: datatype ? datatype : "text"
      , cache: false
    });
}




//function ClickOnEnter(e, id)
//{
//    e = arguments.length > 0 ? arguments[0] : window.event;
//    if(e.keyCode == 13)
//    {
//        var elem = document.getElementById(id);
//        if(!elem)
//        {
//            alert("Došlo je do pogreške!");
//            return;
//        }
//        ClickButton(elem, false);
//    }
//}

function ClickOnEnter(e, target) {
    if (!e) var e = window.event;
    if (e.keyCode == 13) {
        eval(unescape("" + document.getElementById(target)));
    }
}

function ClickButton(elem, inOpener)
{
    if(!elem)
    {
        alert("Došlo je do pogreške (elem?)");
        return;
    }
    if(!elem.href)
    {
        alert("Došlo je do pogreške (elem.href?)");
        return;
    }
    if(inOpener)
        eval("window.opener." + elem.href.replace("javascript:", ""));
    else
        eval(elem.href.replace("javascript:", ""));
}


function WindowOpenXY( url, x, y )
{
	var prms = "Width=" + x + "px, Height=" + y + "px, left=100, top=100, toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes";
	var wnd = window.open(url, "", prms );
	if( wnd )
	    wnd.focus();
}


function ToggleListSelection()
{
    var cbox_list = document.getElementsByName("selected");
    if( cbox_list )
    {
        for( i = 0; i< cbox_list.length; i++ )
        {
            cbox_list[i].checked = !cbox_list[i].checked;
        }
    } 
}

function RequestQueryString(qs_name)
{
	var qs = document.location.search;
	if( qs < 1 )
		return null;
	else
		qs = qs.substring(1,qs.length);
	var qs_arr = qs.split('&');
	
	for( var i = 0; i<qs_arr.length; i++ )
	{	
		var qname = qs_arr[i].split('=')[0].toString().toLowerCase();
		if( qname == qs_name.toString().toLowerCase() )
			return qs_arr[i].split('=')[1];
	}
	return null;
}

function StringFormat()
{
	var s = arguments[0];
	for( var i=1; i<arguments.length; i++ ) 
    {
        var placeholder = "{" + parseInt(i-1) + "}";
        var value = arguments[i].toString();
        while( s.indexOf(placeholder) != -1 )
            s = s.replace( placeholder, value );
    }
	return s;
}

function IsNullOrEmpty( s )
{
    return ( ( !s ) || ( s.toString() == "" ) )
}

function ToggleVisibility(elemId)
{
    var elem = document.getElementById(elemId);
    if( !elem )
        return;
    if(elem.style.display=='block')
        elem.style.display='none';
    else
        elem.style.display='block';
}

function ToggleVisibilityInline(elemId)
{
    var elem = document.getElementById(elemId);
    if( !elem )
        return;
    if(elem.style.display=='inline')
        elem.style.display='none';
    else
        elem.style.display='inline';
}

function CheckCCInput(cardNumber, cardType)
{
    var isValid = false;
    var ccCheckRegExp = /[^\d ]/;
    isValid = !ccCheckRegExp.test(cardNumber);

    if (isValid)
    {
        var cardNumbersOnly = cardNumber.replace(/ /g,"");
        var cardNumberLength = cardNumbersOnly.length;
        var lengthIsValid = false;
        var prefixIsValid = false;
        var prefixRegExp = null;

        switch(cardType)
        {
            case "MSTR":
            lengthIsValid = (cardNumberLength == 16);
            prefixRegExp = /^5[1-5]/;
            break;

            case "VISA":
            lengthIsValid = (cardNumberLength == 16 || cardNumberLength == 13);
            prefixRegExp = /^4/;
            break;

            case "AMEX":
            lengthIsValid = (cardNumberLength == 15);
            prefixRegExp = /^3(4|7)/;
            break;

            case "DNRS":
            lengthIsValid = (cardNumberLength == 15);
            prefixRegExp = /^$/;
            break;
        }

        if(prefixRegExp == null )
        {
            alert("Nepoznata vrsta kreditne kartice!");
            return false;
        }
        prefixIsValid = prefixRegExp.test(cardNumbersOnly);
        isValid = prefixIsValid && lengthIsValid;
    }

    if (isValid)
    {
        var numberProduct;
        var numberProductDigitIndex;
        var checkSumTotal = 0;

        for (digitCounter = cardNumberLength - 1; digitCounter >= 0; digitCounter--)
        {
            checkSumTotal += parseInt (cardNumbersOnly.charAt(digitCounter));
            digitCounter--;
            numberProduct = String((cardNumbersOnly.charAt(digitCounter) * 2));
            for (var productDigitCounter = 0;productDigitCounter < numberProduct.length; productDigitCounter++)
            {
                checkSumTotal += parseInt(numberProduct.charAt(productDigitCounter));
            }
        }

        isValid = (checkSumTotal % 10 == 0);
    }

    return isValid;
}


// event helpers
function AddEventHandler(element, type, func) 
{
	if(element.addEventListener) {
		element.addEventListener(type,func,false);
	}
	else if (element.attachEvent) {
		element.attachEvent('on'+type,func);
	}
}

function RemoveEventHandler(element, type, func) 
{
	if(element.removeEventListener) {
		element.removeEventListener(type,func,false);
	}
	else if (element.attachEvent) {
		element.detachEvent('on'+type,func);
	}
}


function pause(milliseconds)
{
    var _date = new Date();
    var _curDate = null;
    do 
    { 
        _curDate = new Date(); 
    }
    while(_curDate-_date < milliseconds);
}





function BookmarkPage() {    
    if (window.opera && window.print) { 
        var elem = document.createElement('a');
        elem.setAttribute('href', location.href);
        elem.setAttribute('title', document.title);
        elem.setAttribute('rel', 'sidebar');
        elem.click();
    }
    else {        
        window.external.AddFavorite(location.href, document.title);
    }
}




// switch tabova na detaljim proizvoda
function ActivateProductDetailsTab(idx) {
    var tabCount = document.getElementById("productDetailsTabs").getElementsByTagName("li").length;
    var exit = 0;
    var i = 0;
    while(exit<10){
        var tab = document.getElementById("tab_" + i);
        var li = document.getElementById("li_" + i);

        if (tab && li) {
            tab.style.display = "none";
            li.className = "tab_inactive";
        }
        else
            exit++;
        i++;      
    }
    document.getElementById("tab_" + idx).style.display = "block";
    document.getElementById("li_" + idx).className = "tab_active";
}




String.Format = function() {
    if (arguments.length == 0)
        return null;
    var str = arguments[0];
    for (var i = 1; i < arguments.length; i++) {
        var re = new RegExp('\\{' + (i - 1) + '\\}', 'gm');
        str = str.replace(re, arguments[i]);
    }
    return str;
}

String.prototype.Trim = function() {
    return this.replace(/^\s+|\s+$/g, "");
}
String.prototype.LTrim = function() {
    return this.replace(/^\s+/, "");
}
String.prototype.RTrim = function() {
    return this.replace(/\s+$/, "");
}

function HtmlEncode(str) {
    var div = document.createElement('div');
    var text = document.createTextNode(str);
    div.appendChild(text);
    return div.innerHTML;
}





function TextBoxFocus(id) {
    try {
        var tbox = document.getElementById(id);
        if (tbox)
            tbox.focus();
    }
    catch (e)
    { }
}




function GetKids(elems, arr) {
    if (elems) {
        for (var i = 0; i < elems.length; i++) {
            if (elems[i].tagName && (elems[i].tagName.toLowerCase() == "input"))
                arr[arr.length] = elems[i];
            GetKids(elems[i].childNodes, arr);
        }
    }
}

function Toggle(elemid) {
    var arr = new Array();
    GetKids(jQuery(elemid).childNodes, arr);

    for (var i = 0; i < arr.length; i++)
        arr[i].checked = !arr[i].checked;
}


function ToggleRadio(elem_id) {
    document.getElementById(elem_id).checked = !document.getElementById(elem_id).checked;
}








// jquery click on enter
function RegisterForSubmitOnEnter(selTextbox, selButton) {
    if (jQuery) {
        jQuery(document).ready(function() {
            if ((jQuery(selTextbox).length != 0) && (jQuery(selButton).length != 0)) {
                jQuery(selTextbox).keypress(function(e) {
                    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
                        e.stopImmediatePropagation();
                        e.preventDefault();
                        var href = jQuery(selButton).attr("href");
                        href = href.replace("javascript:", "");
                        eval(href);
                        //eval(jQuery(selButton).attr("href"));
                        //jQuery(selButton).trigger("click");
                        return false;
                    } else {
                        return true;
                    }
                });
            }
        });
    }
}
function RegisterForSubmitOnEnter_Click(selTextbox, selButton) {
    if (jQuery) {
        jQuery(document).ready(function() {
            if (jQuery(selTextbox).length != 0) {
                jQuery(selTextbox).keypress(function(e) {
                    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
                        if (jQuery(selButton).length != 0)
                            jQuery(selButton).click();
                        return false;
                    } else {
                        return true;
                    }
                });
            }
        });
    }
}


/* ------------------ notifikacije --------------------------*/
function AjaxErrorHandler(oXMLHttpRequest, textStatus, errorThrown) {
    MessageBox("Pogreška (AJAX)", "Došlo je do pogreške u radu aplikacije. Molimo Vas da pokušate Vaš upit kasnije. (" + textStatus + ": " + errorThrown + ")");
}
function MessageBox(title, message) {
    if (jQuery) {
        jQuery(document).ready(function() {
            jQuery("<div id='dialog-message-content'>" + message + "</div>").dialog({
                modal: true
                , resizable: false
                , draggable: false
                , closeOnEscape: true
                , title: title
                , buttons: {
                    Ok: function() { jQuery(this).dialog('close'); }
                }
            });
        });
    }
    else {
        alert(title + ":\n" + message);
    }
}
function Notification(title, message) {
    var html = "<dl class='inline-message'><dt>" + title + "</dt><dd>" + message + "</dd></dl>";
    jQuery(document.body).append(html);
    var elem = jQuery("dl.inline-message");
    var csstop = (jQuery(window).height() / 2) - (elem.height() / 2);
    var cssleft = (jQuery(window).width() / 2) - (elem.width() / 2);
    elem.css("left", cssleft + 'px');
    elem.css("top", csstop + 'px');
    elem.fadeIn();    
    setTimeout(Notification_fadeout, 4 * 1000);
}
function Notification_fadeout() {
    var box = jQuery("dl.inline-message");
    box.fadeOut("slow");
    jQuery(document.body).remove(box);
}


function BasketMessages(html, ids) {
    jQuery(document).ready(function() {
        jQuery(html).dialog({
            modal: true
            , height: 300
            , width: 500
            , resizable: false
            , draggable: true
            , closeOnEscape: true
            , title: "Vaša košarica"
            , close: function() { confirmBasketMessages(ids); }
            , buttons: {
                Ok: function() { jQuery(this).dialog('close'); }
            }
        });
    });
}
function confirmBasketMessages(ids) {
    jQuery.ajax({
        type: "POST"
      , url: "AjaxServices.aspx?type=confirmBasketMessages"
      , data: { "ids": ids }
      , error: AjaxErrorHandler
      , dataType: "text"
      , cache: false
    });
}


/* ------------------------------------------------------------------*/


function productList_checkProductImages(noImageSubstitute) {

    var list = [];
    var arrlist = [];

    jQuery("img.checkimage").each(function () {
        var temp = new Image();
        temp.src = this.src;
        if (!temp.complete) {
            list.push(jQuery(this));
            arrlist.push(this.src);
        }
    });
    
    if (list.length == 0) return;

    for (var a = 0; a < list.length; a++) {        
        var $elem = jQuery(list[a]);
        if (noImageSubstitute) {
            $elem
                .attr("rel", $elem.attr("src"))
                .attr("src", noImageSubstitute)
                .fadeTo(500, .5);
        }
        else
            $elem.hide();
    }

    jQuery.ajax({
        type: "POST"
      , url: "AjaxServices.aspx?type=requestImageListResize"
      , data: { "urls": arrlist.join(";") }
      , success: function (data, textStatus, oXMLHttpRequest) {
          var arrRet = data.split(";");
          for (var x = 0; x < arrRet.length; x++) {
              for (var y = 0; y < list.length; y++) {                  
                  if (jQuery(list[y]).attr("rel").indexOf(arrRet[x]) != -1) {
                      jQuery(list[y]).attr("src", arrRet[x]).fadeTo(500, 1);
                      break;
                  }
              }
          }
      }
      , error: function (oXMLHttpRequest, textStatus, errorThrown) { }
      , dataType: "text"
      , cache: false
    });
}



